diff --git a/code/game/machinery/computer/specops_shuttle.dm b/code/game/machinery/computer/specops_shuttle.dm
index f9b8809847..762dae9784 100644
--- a/code/game/machinery/computer/specops_shuttle.dm
+++ b/code/game/machinery/computer/specops_shuttle.dm
@@ -2,6 +2,341 @@
#define SPECOPS_MOVETIME 600 //Time to station is milliseconds. 60 seconds, enough time for everyone to be on the shuttle before it leaves.
#define SPECOPS_STATION_AREATYPE "/area/shuttle/specops/station" //Type of the spec ops shuttle area for station
#define SPECOPS_DOCK_AREATYPE "/area/shuttle/specops/centcom" //Type of the spec ops shuttle area for dock
+#define SPECOPS_RETURN_DELAY 6000 //Time between the shuttle is capable of moving.
+
+var/specops_shuttle_moving_to_station = 0
+var/specops_shuttle_moving_to_centcom = 0
+var/specops_shuttle_at_station = 0
+var/specops_shuttle_can_send = 1
+var/specops_shuttle_time = 0
+var/specops_shuttle_timeleft = 0
+
+/obj/machinery/computer/specops_shuttle
+ name = "Spec. Ops. Shuttle Console"
+ icon = 'computer.dmi'
+ icon_state = "shuttle"
+ req_access = list(access_cent_specops)
+// req_access = list(ACCESS_CENT_SPECOPS)
+ var/temp = null
+ var/hacked = 0
+ var/allowedtocall = 0
+ var/specops_shuttle_timereset = 0
+
+/proc/specops_return()
+ var/obj/item/device/radio/intercom/announcer = new /obj/item/device/radio/intercom(null)//We need a fake AI to announce some stuff below. Otherwise it will be wonky.
+ announcer.config(list("Response Team" = 0))
+
+ var/message_tracker[] = list(0,1,2,3,5,10,30,45)//Create a a list with potential time values.
+ var/message = "\"THE SPECIAL OPERATIONS SHUTTLE IS PREPARING TO RETURN\""//Initial message shown.
+ if(announcer)
+ announcer.autosay(message, "A.L.I.C.E.", "Response Team")
+
+ while(specops_shuttle_time - world.timeofday > 0)
+ var/ticksleft = specops_shuttle_time - world.timeofday
+
+ if(ticksleft > 1e5)
+ specops_shuttle_time = world.timeofday + 10 // midnight rollover
+ specops_shuttle_timeleft = (ticksleft / 10)
+
+ //All this does is announce the time before launch.
+ if(announcer)
+ var/rounded_time_left = round(specops_shuttle_timeleft)//Round time so that it will report only once, not in fractions.
+ if(rounded_time_left in message_tracker)//If that time is in the list for message announce.
+ message = "\"ALERT: [rounded_time_left] SECOND[(rounded_time_left!=1)?"S":""] REMAIN\""
+ if(rounded_time_left==0)
+ message = "\"ALERT: TAKEOFF\""
+ announcer.autosay(message, "A.L.I.C.E.", "Response Team")
+ message_tracker -= rounded_time_left//Remove the number from the list so it won't be called again next cycle.
+ //Should call all the numbers but lag could mean some issues. Oh well. Not much I can do about that.
+
+ sleep(5)
+
+ specops_shuttle_moving_to_station = 0
+ specops_shuttle_moving_to_centcom = 0
+
+ specops_shuttle_at_station = 1
+
+ var/area/start_location = locate(/area/shuttle/specops/station)
+ var/area/end_location = locate(/area/shuttle/specops/centcom)
+
+ var/list/dstturfs = list()
+ var/throwy = world.maxy
+
+ for(var/turf/T in end_location)
+ dstturfs += T
+ if(T.y < throwy)
+ throwy = T.y
+
+ // hey you, get out of the way!
+ for(var/turf/T in dstturfs)
+ // find the turf to move things to
+ var/turf/D = locate(T.x, throwy - 1, 1)
+ //var/turf/E = get_step(D, SOUTH)
+ for(var/atom/movable/AM as mob|obj in T)
+ AM.Move(D)
+ if(istype(T, /turf/simulated))
+ del(T)
+
+ start_location.move_contents_to(end_location)
+
+ for(var/turf/T in get_area_turfs(end_location) )
+ var/mob/M = locate(/mob) in T
+ M << "\red You have arrived at Central Command. Operation has ended!"
+
+ specops_shuttle_at_station = 0
+
+ for(var/obj/machinery/computer/specops_shuttle/S in world)
+ S.specops_shuttle_timereset = world.time + SPECOPS_RETURN_DELAY
+
+ del(announcer)
+
+/proc/specops_process()
+ var/area/centcom/specops/special_ops = locate()//Where is the specops area located?
+ var/obj/item/device/radio/intercom/announcer = new /obj/item/device/radio/intercom(null)//We need a fake AI to announce some stuff below. Otherwise it will be wonky.
+ announcer.config(list("Response Team" = 0))
+
+ var/message_tracker[] = list(0,1,2,3,5,10,30,45)//Create a a list with potential time values.
+ var/message = "\"THE SPECIAL OPERATIONS SHUTTLE IS PREPARING FOR LAUNCH\""//Initial message shown.
+ if(announcer)
+ announcer.autosay(message, "A.L.I.C.E.", "Response Team")
+// message = "ARMORED SQUAD TAKE YOUR POSITION ON GRAVITY LAUNCH PAD"
+// announcer.autosay(message, "A.L.I.C.E.", "Response Team")
+
+ while(specops_shuttle_time - world.timeofday > 0)
+ var/ticksleft = specops_shuttle_time - world.timeofday
+
+ if(ticksleft > 1e5)
+ specops_shuttle_time = world.timeofday + 10 // midnight rollover
+ specops_shuttle_timeleft = (ticksleft / 10)
+
+ //All this does is announce the time before launch.
+ if(announcer)
+ var/rounded_time_left = round(specops_shuttle_timeleft)//Round time so that it will report only once, not in fractions.
+ if(rounded_time_left in message_tracker)//If that time is in the list for message announce.
+ message = "\"ALERT: [rounded_time_left] SECOND[(rounded_time_left!=1)?"S":""] REMAIN\""
+ if(rounded_time_left==0)
+ message = "\"ALERT: TAKEOFF\""
+ announcer.autosay(message, "A.L.I.C.E.", "Response Team")
+ message_tracker -= rounded_time_left//Remove the number from the list so it won't be called again next cycle.
+ //Should call all the numbers but lag could mean some issues. Oh well. Not much I can do about that.
+
+ sleep(5)
+
+ specops_shuttle_moving_to_station = 0
+ specops_shuttle_moving_to_centcom = 0
+
+ specops_shuttle_at_station = 1
+ if (specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom) return
+
+ if (!specops_can_move())
+ usr << "\red The Special Operations shuttle is unable to leave."
+ return
+
+ //Begin Marauder launchpad.
+ spawn(0)//So it parallel processes it.
+ for(var/obj/machinery/door/poddoor/M in special_ops)
+ switch(M.id)
+ if("ASSAULT0")
+ spawn(10)//1 second delay between each.
+ M.open()
+ if("ASSAULT1")
+ spawn(20)
+ M.open()
+ if("ASSAULT2")
+ spawn(30)
+ M.open()
+ if("ASSAULT3")
+ spawn(40)
+ M.open()
+
+ sleep(10)
+
+ var/spawn_marauder[] = new()
+ for(var/obj/effect/landmark/L in world)
+ if(L.name == "Marauder Entry")
+ spawn_marauder.Add(L)
+ for(var/obj/effect/landmark/L in world)
+ if(L.name == "Marauder Exit")
+ var/obj/effect/portal/P = new(L.loc)
+ P.invisibility = 101//So it is not seen by anyone.
+ P.failchance = 0//So it has no fail chance when teleporting.
+ P.target = pick(spawn_marauder)//Where the marauder will arrive.
+ spawn_marauder.Remove(P.target)
+
+ sleep(10)
+
+ for(var/obj/machinery/mass_driver/M in special_ops)
+ switch(M.id)
+ if("ASSAULT0")
+ spawn(10)
+ M.drive()
+ if("ASSAULT1")
+ spawn(20)
+ M.drive()
+ if("ASSAULT2")
+ spawn(30)
+ M.drive()
+ if("ASSAULT3")
+ spawn(40)
+ M.drive()
+
+ sleep(50)//Doors remain open for 5 seconds.
+
+ for(var/obj/machinery/door/poddoor/M in special_ops)
+ switch(M.id)//Doors close at the same time.
+ if("ASSAULT0")
+ spawn(0)
+ M.close()
+ if("ASSAULT1")
+ spawn(0)
+ M.close()
+ if("ASSAULT2")
+ spawn(0)
+ M.close()
+ if("ASSAULT3")
+ spawn(0)
+ M.close()
+ special_ops.readyreset()//Reset firealarm after the team launched.
+ //End Marauder launchpad.
+
+ var/area/start_location = locate(/area/shuttle/specops/centcom)
+ var/area/end_location = locate(/area/shuttle/specops/station)
+
+ var/list/dstturfs = list()
+ var/throwy = world.maxy
+
+ for(var/turf/T in end_location)
+ dstturfs += T
+ if(T.y < throwy)
+ throwy = T.y
+
+ // hey you, get out of the way!
+ for(var/turf/T in dstturfs)
+ // find the turf to move things to
+ var/turf/D = locate(T.x, throwy - 1, 1)
+ //var/turf/E = get_step(D, SOUTH)
+ for(var/atom/movable/AM as mob|obj in T)
+ AM.Move(D)
+ if(istype(T, /turf/simulated))
+ del(T)
+
+ start_location.move_contents_to(end_location)
+
+ for(var/turf/T in get_area_turfs(end_location) )
+ var/mob/M = locate(/mob) in T
+ M << "\red You have arrived to [station_name]. Commence operation!"
+
+ for(var/obj/machinery/computer/specops_shuttle/S in world)
+ S.specops_shuttle_timereset = world.time + SPECOPS_RETURN_DELAY
+
+ del(announcer)
+
+/proc/specops_can_move()
+ if(specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom)
+ return 0
+ for(var/obj/machinery/computer/specops_shuttle/S in world)
+ if(world.timeofday <= S.specops_shuttle_timereset)
+ return 0
+ return 1
+
+/obj/machinery/computer/specops_shuttle/attack_ai(var/mob/user as mob)
+ return attack_hand(user)
+
+/obj/machinery/computer/specops_shuttle/attack_paw(var/mob/user as mob)
+ return attack_hand(user)
+
+/obj/machinery/computer/specops_shuttle/attackby(I as obj, user as mob)
+ if(istype(I,/obj/item/weapon/card/emag))
+ user << "\blue The electronic systems in this console are far too advanced for your primitive hacking peripherals."
+ else
+ return attack_hand(user)
+
+/obj/machinery/computer/specops_shuttle/attack_hand(var/mob/user as mob)
+ if(!allowed(user))
+ user << "\red Access Denied."
+ return
+
+ if (sent_strike_team == 0 && send_emergency_team == 0)
+ usr << "\red The strike team has not yet deployed."
+ return
+
+ if(..())
+ return
+
+ user.machine = src
+ var/dat
+ if (temp)
+ dat = temp
+ else
+ dat += {"
Special Operations Shuttle
+ \nLocation: [specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom ? "Departing for [station_name] in ([specops_shuttle_timeleft] seconds.)":specops_shuttle_at_station ? "Station":"Dock"]
+ [specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom ? "\n*The Special Ops. shuttle is already leaving.*
\n
":specops_shuttle_at_station ? "\nShuttle standing by...
\n
":"\nDepart to [station_name]
\n
"]
+ \nClose"}
+
+ user << browse(dat, "window=computer;size=575x450")
+ onclose(user, "computer")
+ return
+
+/obj/machinery/computer/specops_shuttle/Topic(href, href_list)
+ if(..())
+ return
+
+ if ((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon)))
+ usr.machine = src
+
+ if (href_list["sendtodock"])
+ if(!specops_shuttle_at_station|| specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom) return
+
+ if (!specops_can_move())
+ usr << "\blue Central Command will not allow the Special Operations shuttle to return yet."
+ if(world.timeofday <= specops_shuttle_timereset)
+ if (((world.timeofday - specops_shuttle_timereset)/10) > 60)
+ usr << "\blue [-((world.timeofday - specops_shuttle_timereset)/10)/60] minutes remain!"
+ usr << "\blue [-(world.timeofday - specops_shuttle_timereset)/10] seconds remain!"
+ return
+
+ usr << "\blue The Special Operations shuttle will arrive at Central Command in [(SPECOPS_MOVETIME/10)] seconds."
+
+ temp += "Shuttle departing.
OK"
+ updateUsrDialog()
+
+ specops_shuttle_moving_to_centcom = 1
+ specops_shuttle_time = world.timeofday + SPECOPS_MOVETIME
+ spawn(0)
+ specops_return()
+
+ else if (href_list["sendtostation"])
+ if(specops_shuttle_at_station || specops_shuttle_moving_to_station || specops_shuttle_moving_to_centcom) return
+
+ if (!specops_can_move())
+ usr << "\red The Special Operations shuttle is unable to leave."
+ return
+
+ usr << "\blue The Special Operations shuttle will arrive on [station_name] in [(SPECOPS_MOVETIME/10)] seconds."
+
+ temp += "Shuttle departing.
OK"
+ updateUsrDialog()
+
+ var/area/centcom/specops/special_ops = locate()
+ if(special_ops)
+ special_ops.readyalert()//Trigger alarm for the spec ops area.
+ specops_shuttle_moving_to_station = 1
+
+ specops_shuttle_time = world.timeofday + SPECOPS_MOVETIME
+ spawn(0)
+ specops_process()
+
+ else if (href_list["mainmenu"])
+ temp = null
+
+ add_fingerprint(usr)
+ updateUsrDialog()
+ return
+
+/*//Config stuff
+#define SPECOPS_MOVETIME 600 //Time to station is milliseconds. 60 seconds, enough time for everyone to be on the shuttle before it leaves.
+#define SPECOPS_STATION_AREATYPE "/area/shuttle/specops/station" //Type of the spec ops shuttle area for station
+#define SPECOPS_DOCK_AREATYPE "/area/shuttle/specops/centcom" //Type of the spec ops shuttle area for dock
var/specops_shuttle_moving_to_station = 0
var/specops_shuttle_moving_to_centcom = 0
@@ -179,9 +514,9 @@ var/specops_shuttle_timeleft = 0
user << "\red Access Denied."
return
- if (sent_strike_team == 0)
- usr << "\red The strike team has not yet deployed."
- return
+// if (sent_strike_team == 0)
+// usr << "\red The strike team has not yet deployed."
+// return
if(..())
return
@@ -239,4 +574,5 @@ var/specops_shuttle_timeleft = 0
add_fingerprint(usr)
updateUsrDialog()
- return
\ No newline at end of file
+ return
+ */
\ No newline at end of file
diff --git a/code/game/response_team.dm b/code/game/response_team.dm
index 871933c63c..df21a5a2a5 100644
--- a/code/game/response_team.dm
+++ b/code/game/response_team.dm
@@ -96,15 +96,15 @@ proc/trigger_armed_response_team(var/force = 0)
/client/proc/create_response_team(obj/spawn_location, leader_selected = 0, commando_name)
- usr << "\red ERT has been temporarily disabled. Talk to a coder."
- return
+ //usr << "\red ERT has been temporarily disabled. Talk to a coder."
+ //return
var/mob/living/carbon/human/M = new(null)
response_team_members |= M
//todo: god damn this.
//make it a panel, like in character creation
- /*var/new_facial = input("Please select facial hair color.", "Character Generation") as color
+ var/new_facial = input("Please select facial hair color.", "Character Generation") as color
if(new_facial)
M.r_facial = hex2num(copytext(new_facial, 2, 4))
M.g_facial = hex2num(copytext(new_facial, 4, 6))
@@ -139,16 +139,25 @@ proc/trigger_armed_response_team(var/force = 0)
hairs.Add(H.name) // add hair name to hairs
del(H) // delete the hair after it's all done
- var/new_style = input("Please select hair style", "Character Generation") as null|anything in hairs
+// var/new_style = input("Please select hair style", "Character Generation") as null|anything in hairs
+//hair
+ var/new_hstyle = input(usr, "Select a hair style", "Grooming") as null|anything in hair_styles_list
+ if(new_hstyle)
+ M.h_style = new_hstyle
+
+ // facial hair
+ var/new_fstyle = input(usr, "Select a facial hair style", "Grooming") as null|anything in facial_hair_styles_list
+ if(new_fstyle)
+ M.f_style = new_fstyle
// if new style selected (not cancel)
- if (new_style)
+/* if (new_style)
M.h_style = new_style
for(var/x in all_hairs) // loop through all_hairs again. Might be slightly CPU expensive, but not significantly.
var/datum/sprite_accessory/hair/H = new x // create new hair datum
if(H.name == new_style)
- M.hair_style = H // assign the hair_style variable a new hair datum
+ M.h_style = H // assign the hair_style variable a new hair datum
break
else
del(H) // if hair H not used, delete. BYOND can garbage collect, but better safe than sorry
@@ -169,19 +178,21 @@ proc/trigger_armed_response_team(var/force = 0)
for(var/x in all_fhairs)
var/datum/sprite_accessory/facial_hair/H = new x
if(H.name == new_style)
- M.facial_hair_style = H
+ M.f_style = H
break
else
del(H)
-
+*/
var/new_gender = alert(usr, "Please select gender.", "Character Generation", "Male", "Female")
if (new_gender)
if(new_gender == "Male")
M.gender = MALE
else
M.gender = FEMALE
- M.rebuild_appearance()
- M.update_body()*/
+ //M.rebuild_appearance()
+ M.update_hair()
+ M.update_body()
+ M.check_dna(M)
M.real_name = commando_name
M.name = commando_name
@@ -233,21 +244,28 @@ proc/trigger_armed_response_team(var/force = 0)
//Backpack
equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(src), slot_back)
equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(src), slot_in_backpack)
- equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(src), slot_in_backpack)
+ equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/regular(src), slot_in_backpack)
var/obj/item/weapon/card/id/W = new(src)
W.name = "[real_name]'s ID Card (Emergency Response Team)"
W.icon_state = "centcom"
if(leader_selected)
W.name = "[real_name]'s ID Card (Emergency Response Team Leader)"
- W.access = get_access("Captain")
- W.access += list(access_cent_teleporter)
+ W.access = get_all_accesses()
+ W.access += get_all_centcom_access()
W.assignment = "Emergency Response Team Leader"
else
- W.access = get_access("Head of Personnel")
+ W.access = get_all_accesses()
+ W.access += get_all_centcom_access()
W.assignment = "Emergency Response Team"
W.access += list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage)//Let's add their alloted CentCom access.
W.registered_name = real_name
equip_to_slot_or_del(W, slot_wear_id)
return 1
+
+/*//debug verb
+client/verb/ResponseTeam()
+ set category = "Admin"
+ if(!send_emergency_team)
+ send_emergency_team = 1*/
\ No newline at end of file
diff --git a/maps/tgstation.2.1.0.0.1.dmm b/maps/tgstation.2.1.0.0.1.dmm
index 4c8dea3d66..946192b66b 100644
--- a/maps/tgstation.2.1.0.0.1.dmm
+++ b/maps/tgstation.2.1.0.0.1.dmm
@@ -222,7 +222,7 @@
"aen" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/security/main)
"aeo" = (/obj/structure/stool/bed/chair,/obj/machinery/door_control{desc = "A remote control switch for the brig doors leading to cells 3 and 4."; id = "BrigWest"; name = "Brig Cells 3-4 Hallway Doors"; normaldoorcontrol = 1; pixel_x = -5; pixel_y = -25; range = 10},/turf/simulated/floor,/area/security/lobby)
"aep" = (/obj/structure/stool/bed/chair,/obj/machinery/door_control{desc = "A remote control switch for the brig foyer."; id = "BrigFoyer"; name = "Brig Foyer Doors"; normaldoorcontrol = 1; pixel_x = 16; pixel_y = -25; range = 10},/obj/machinery/door_control{desc = "A remote control switch for the brig doors leading to cells 1 and 2."; id = "BrigEast"; name = "Brig Cells 1-2 Hallway Doors"; normaldoorcontrol = 1; pixel_x = 5; pixel_y = -25; range = 10},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/security/lobby)
-"aeq" = (/turf/simulated/floor/plating,/area/shuttle/escape_pod3/station)
+"aeq" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s9"; icon_state = "swall_s9"; dir = 2},/area/shuttle/escape_pod3/station)
"aer" = (/obj/machinery/recharger{pixel_y = 4},/obj/structure/table/woodentable,/turf/simulated/floor{icon_state = "dark"},/area/security/hos)
"aes" = (/obj/structure/table/woodentable,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/item/weapon/reagent_containers/food/drinks/flask/barflask,/turf/simulated/floor{icon_state = "dark"},/area/security/hos)
"aet" = (/obj/structure/closet/secure_closet/hos,/obj/machinery/power/apc{dir = 4; name = "Head of Security Office APC"; pixel_x = 27; pixel_y = 2},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{icon_state = "dark"},/area/security/hos)
@@ -240,7 +240,7 @@
"aeF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 8; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/security/main)
"aeG" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/noticeboard{pixel_y = 28},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/main)
"aeH" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/main)
-"aeI" = (/turf/simulated/wall,/area/shuttle/escape_pod3/station)
+"aeI" = (/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_pod3/station)
"aeJ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/security/brig)
"aeK" = (/obj/structure/sign/pods{pixel_x = 32; pixel_y = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/security/brig)
"aeL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/security/hos)
@@ -273,7 +273,7 @@
"afm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/security/main)
"afn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/brig)
"afo" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 100; on = 1; pressure_checks = 1},/turf/simulated/floor,/area/security/main)
-"afp" = (/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)
+"afp" = (/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)
"afq" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/security/hos)
"afr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/security/hos)
"afs" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{on = 0; pixel_x = -3; pixel_y = 8},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 100; on = 1; pressure_checks = 1},/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/security/hos)
@@ -306,8 +306,8 @@
"afT" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/item/weapon/folder/red,/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main)
"afU" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor,/area/security/main)
"afV" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/weapon/folder/red,/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/security/main)
-"afW" = (/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)
-"afX" = (/obj/machinery/door/airlock/external{name = "Security Escape Pod"; req_access_txt = "1"},/turf/simulated/floor/plating,/area/shuttle/escape_pod3/station)
+"afW" = (/obj/machinery/door/airlock/external{name = "Security Escape Pod"; req_access_txt = "1"},/turf/simulated/floor/plating,/area/security/main)
+"afX" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area/shuttle/escape_pod3/station)
"afY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/junction{tag = "icon-pipe-y (NORTH)"; icon_state = "pipe-y"; dir = 1},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/brig)
"afZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/carpet{icon_state = "carpetnoconnect"},/area/security/hos)
"aga" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/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/carpet{icon_state = "carpetnoconnect"},/area/security/hos)
@@ -458,7 +458,7 @@
"aiP" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "red"},/area/security/main)
"aiQ" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "red"; dir = 6},/area/security/main)
"aiR" = (/obj/machinery/door/window/eastright{dir = 1; name = "Security Delivery"; req_access_txt = "1"},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "delivery"},/area/security/main)
-"aiS" = (/obj/machinery/light/small{dir = 1},/obj/structure/closet/emcloset,/obj/machinery/camera/xray{c_tag = "Security Escape Pod"},/turf/simulated/floor/plating,/area/shuttle/escape_pod3/station)
+"aiS" = (/obj/machinery/light/small{dir = 1},/obj/structure/closet/emcloset,/obj/machinery/camera/xray{c_tag = "Security Escape Pod"},/turf/simulated/floor/plating,/area/security/main)
"aiT" = (/turf/simulated/floor/plating,/area/security/main)
"aiU" = (/obj/structure/table,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/item/weapon/storage/firstaid/regular{pixel_x = 3; pixel_y = 3},/turf/simulated/floor{icon_state = "white"},/area/security/brig)
"aiV" = (/obj/structure/table,/obj/item/device/healthanalyzer{pixel_y = 2},/turf/simulated/floor{icon_state = "white"},/area/security/brig)
@@ -10115,11 +10115,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaiaaiaaiahhahiahjaexahkahlahmahnahmahoahpahqahrahsahtahuahvaenagtahwahxahyaemahzagyahzagyahAarEahCahDahEahFadPadPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiahGahHadAaexahIahJahKahLahMahNahOahPahQahRahSahTahUahVagtahWahxahXaemagxagyagxahYahZarJadPadPaiaaibadPaicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaidaevaieaexaifaigaihaiiahMaijaikailahraimainahuaioaenagtaipaiqairaisaitaiuaemaivaiwareabYabXaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaexaexaexaexagLaixaiyaizaexaiAaiBaiCaiiahMaegaiDaiEaiFaiGaiHaegaiIaiJaiKaiLaffaiMabXaiNaiOaiPaiQaiRarDaiTabXabXabYacMacMacMacMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaexaiUaiVaiWaiXaiYaiZajaaexajbajcajbajdajbaegagPagQajeagSagTaegabXajfajgabXajhajiabXajjajkajkajlabXajmaiTaiTaeIaiSajnajocRAcRBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaexajqajrajsajtajuajvajwajxajxajyajzajAajxajxajxajAajBajyajCajDajzajEajFajGajHafYajJajKajLajMagAahBasyajQajRafXaeqajSajTafWafpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaexajWajXajYajZakaakbakcakdakeakfakgakhakiakjakdakiakkaklakmakiakgakhakiakiaknakoakpaiCakqakrafnaeKaeJajRakuaeIaeqakvajocRAcRYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaexaexaexaexaexaexaexaexakxakyakzaexaexagLakAakBakCakDakEakFakGagLaexaexaexakHakIakJakJakKakLakMakNakJacdahbabXabXabYabYacMacMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaexaexaexaexagLaixaiyaizaexaiAaiBaiCaiiahMaegaiDaiEaiFaiGaiHaegaiIaiJaiKaiLaffaiMabXaiNaiOaiPaiQaiRarDaiTabXabXabYabYabYabYabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaexaiUaiVaiWaiXaiYaiZajaaexajbajcajbajdajbaegagPagQajeagSagTaegabXajfajgabXajhajiabXajjajkajkajlabXajmaiTaiTabXaiSajnajoajoafXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaexajqajrajsajtajuajvajwajxajxajyajzajAajxajxajxajAajBajyajCajDajzajEajFajGajHafYajJajKajLajMagAahBasyajQajRafWaiTajSajTafpaeIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaexajWajXajYajZakaakbakcakdakeakfakgakhakiakjakdakiakkaklakmakiakgakhakiakiaknakoakpaiCakqakrafnaeKaeJajRakuabXaiTakvajoajoaeqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaexaexaexaexaexaexaexaexakxakyakzaexaexagLakAakBakCakDakEakFakGagLaexaexaexakHakIakJakJakKakLakMakNakJacdahbabXabXabYabYabYabYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabakPaexakQakRakSakTakUakVakWakXakYakZalaaepaeoaldalealfalgakZalhaliakWaljalkakJallalmalnaloalpalqacdalralsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaltaltaltaltaltaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalualualualvalvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaalvalvalualvalvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabalwaexalxalyalzaexalAalBalCalDalEalFalGalHalIalJalKalLalgalMalNalDalOalPalkakJalQalRalRalSalRalTacdalralsaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaltaltaltaltaltaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaluaaaaabaaaalUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaaaaabaaaalUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabalValWaexalXalYalZaexamaambamcamdameamfamgamhamiamjalKamkalgamfamlammamnamoampakJamqamralRalSalRamsacdalralsaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaltaltaltaltaltaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaluaabamtaabaluaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa