diff --git a/code/ATMOSPHERICS/components/unary/outlet_injector.dm b/code/ATMOSPHERICS/components/unary/outlet_injector.dm index c821b629e04..a7705f7f11c 100644 --- a/code/ATMOSPHERICS/components/unary/outlet_injector.dm +++ b/code/ATMOSPHERICS/components/unary/outlet_injector.dm @@ -51,6 +51,7 @@ var/datum/gas_mixture/removed = air_contents.remove(transfer_moles) loc.assume_air(removed) + air_update_turf() if(network) network.update = 1 diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm index 4c6a529e3bb..b9bbbdc82e5 100644 --- a/code/ATMOSPHERICS/components/unary/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm @@ -148,6 +148,7 @@ var/datum/gas_mixture/removed = air_contents.remove(transfer_moles) loc.assume_air(removed) + air_update_turf() if(network) network.update = 1 @@ -168,6 +169,7 @@ return air_contents.merge(removed) + air_update_turf() if(network) network.update = 1 diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm index 23b1f7899de..b5596305577 100644 --- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm @@ -178,6 +178,7 @@ air_contents.merge(filtered_out) loc.assume_air(removed) + air_update_turf() if(network) network.update = 1 @@ -191,6 +192,7 @@ var/datum/gas_mixture/removed = loc.remove_air(transfer_moles) air_contents.merge(removed) + air_update_turf() if(network) network.update = 1 diff --git a/code/ATMOSPHERICS/datum_pipe_network.dm b/code/ATMOSPHERICS/datum_pipe_network.dm index 044d16b6c25..3b4cbb996e4 100644 --- a/code/ATMOSPHERICS/datum_pipe_network.dm +++ b/code/ATMOSPHERICS/datum_pipe_network.dm @@ -135,8 +135,6 @@ datum/pipe_network gas.trace_gases += corresponding corresponding.moles = trace_gas.moles*gas.volume/air_transient.volume - gas.update_values() - air_transient.update_values() return 1 proc/equalize_gases(datum/gas_mixture/list/gases) @@ -199,6 +197,5 @@ proc/equalize_gases(datum/gas_mixture/list/gases) gas.trace_gases += corresponding corresponding.moles = trace_gas.moles*gas.volume/total_volume - gas.update_values() return 1 \ No newline at end of file diff --git a/code/ATMOSPHERICS/datum_pipeline.dm b/code/ATMOSPHERICS/datum_pipeline.dm index d7d24080816..18a27f9c18d 100644 --- a/code/ATMOSPHERICS/datum_pipeline.dm +++ b/code/ATMOSPHERICS/datum_pipeline.dm @@ -52,7 +52,6 @@ datum/pipeline member.air_temporary.trace_gases += corresponding corresponding.moles = trace_gas.moles*member.volume/air.volume - member.air_temporary.update_values() proc/build_pipeline(obj/machinery/atmospherics/pipe/base) air = new @@ -130,27 +129,16 @@ datum/pipeline var/datum/gas_mixture/air_sample = air.remove_ratio(mingle_volume/air.volume) air_sample.volume = mingle_volume - if(istype(target) && target.zone) - //Have to consider preservation of group statuses - var/datum/gas_mixture/turf_copy = new + var/datum/gas_mixture/turf_air = target.return_air() - turf_copy.copy_from(target.zone.air) - turf_copy.volume = target.zone.air.volume //Copy a good representation of the turf from parent group - - equalize_gases(list(air_sample, turf_copy)) - air.merge(air_sample) - - turf_copy.subtract(target.zone.air) - - target.zone.air.merge(turf_copy) - - else - var/datum/gas_mixture/turf_air = target.return_air() - - equalize_gases(list(air_sample, turf_air)) - air.merge(air_sample) - //turf_air already modified by equalize_gases() + equalize_gases(list(air_sample, turf_air)) + air.merge(air_sample) + //turf_air already modified by equalize_gases() + if(istype(target)) + if(target.air) + if(target.air.check_tile_graphic()) + target.update_visuals(target.air) if(network) network.update = 1 @@ -176,12 +164,8 @@ datum/pipeline var/delta_temperature = 0 var/sharer_heat_capacity = 0 - if(modeled_location.zone) - delta_temperature = (air.temperature - modeled_location.zone.air.temperature) - sharer_heat_capacity = modeled_location.zone.air.heat_capacity() - else - delta_temperature = (air.temperature - modeled_location.air.temperature) - sharer_heat_capacity = modeled_location.air.heat_capacity() + delta_temperature = (air.temperature - modeled_location.air.temperature) + sharer_heat_capacity = modeled_location.air.heat_capacity() var/self_temperature_delta = 0 var/sharer_temperature_delta = 0 @@ -197,10 +181,7 @@ datum/pipeline air.temperature += self_temperature_delta - if(modeled_location.zone) - modeled_location.zone.air.temperature += sharer_temperature_delta/modeled_location.zone.air.group_multiplier - else - modeled_location.air.temperature += sharer_temperature_delta + modeled_location.air.temperature += sharer_temperature_delta else @@ -211,12 +192,5 @@ datum/pipeline (partial_heat_capacity*target.heat_capacity/(partial_heat_capacity+target.heat_capacity)) air.temperature -= heat/total_heat_capacity - if(network) - network.update = 1 - - proc/radiate_heat(surface, thermal_conductivity) - var/total_heat_capacity = air.heat_capacity() - var/heat = STEFAN_BOLTZMANN_CONSTANT * surface * air.temperature ** 4 * thermal_conductivity - air.temperature = max(0, air.temperature - heat / total_heat_capacity) if(network) network.update = 1 \ No newline at end of file diff --git a/code/ATMOSPHERICS/he_pipes.dm b/code/ATMOSPHERICS/he_pipes.dm index 0f9a38b09b3..ab6e2e2c8eb 100644 --- a/code/ATMOSPHERICS/he_pipes.dm +++ b/code/ATMOSPHERICS/he_pipes.dm @@ -21,11 +21,12 @@ else var/datum/gas_mixture/environment = loc.return_air() environment_temperature = environment.temperature - var/datum/gas_mixture/pipe_air = return_air() - if(abs(environment_temperature-pipe_air.temperature) > minimum_temperature_difference) - parent.temperature_interact(loc, volume, thermal_conductivity) else - parent.radiate_heat(surface, 1) + environment_temperature = loc:temperature + var/datum/gas_mixture/pipe_air = return_air() + if(abs(environment_temperature-pipe_air.temperature) > minimum_temperature_difference) + parent.temperature_interact(loc, volume, thermal_conductivity) + // BubbleWrap diff --git a/code/FEA/DEBUG_REMOVE_BEFORE_RELEASE.dm b/code/FEA/DEBUG_REMOVE_BEFORE_RELEASE.dm deleted file mode 100644 index 4c173b7b7ea..00000000000 --- a/code/FEA/DEBUG_REMOVE_BEFORE_RELEASE.dm +++ /dev/null @@ -1,645 +0,0 @@ -#define DEBUG - -datum/air_group/var/marker -datum/air_group/var/debugging = 0 -datum/pipe_network/var/marker - -datum/gas_mixture - var/turf/parent - -/* -turf/simulated - New() - ..() - - if(air) - air.parent = src -*/ -obj/machinery/door - verb - toggle_door() - set src in world - if(density) - open() - else - close() - -turf/space - verb - create_floor() - set src in world - new /turf/simulated/floor(src) - - create_meteor(direction as num) - set src in world - - var/obj/effect/meteor/M = new( src ) - walk(M, direction,10) - - -turf/simulated/wall - verb - create_floor() - set src in world - new /turf/simulated/floor(src) - -obj/item/weapon/tank - verb - adjust_mixture(temperature as num, target_toxin_pressure as num, target_oxygen_pressure as num) - set src in world - if(!air_contents) - usr << "\red ERROR: no gas_mixture associated with this tank" - return null - - air_contents.temperature = temperature - air_contents.oxygen = target_oxygen_pressure*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) - air_contents.toxins = target_toxin_pressure*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) - -turf/simulated/floor - verb - parent_info() - set src in world - if(parent) - usr << "[x],[y] parent: Processing: [parent.group_processing]" - if(parent.members) - usr << "Members: [parent.members.len]" - else - usr << "Members: None?" - if(parent.borders) - usr << "Borders: [parent.borders.len]" - else - usr << "Borders: None" - if(parent.length_space_border) - usr << "Space Borders: [parent.space_borders.len], Space Length: [parent.length_space_border]" - else - usr << "Space Borders: None" - else - usr << "\blue [x],[y] has no parent air group." - - verb - create_wall() - set src in world - new /turf/simulated/wall(src) - verb - adjust_mixture(temp as num, tox as num, oxy as num) - set src in world - var/datum/gas_mixture/stuff = return_air() - stuff.temperature = temp - stuff.toxins = tox - stuff.oxygen = oxy - - verb - boom(inner_range as num, middle_range as num, outer_range as num) - set src in world - explosion(src,inner_range,middle_range,outer_range,outer_range) - - verb - flag_parent() - set src in world - if(parent) - parent.debugging = !parent.debugging - usr << "[parent.members.len] set to [parent.debugging]" - verb - small_explosion() - set src in world - explosion(src, 1, 2, 3, 3) - - verb - large_explosion() - set src in world - explosion(src, 3, 5, 7, 5) - -obj/machinery/portable_atmospherics/canister - verb/test_release() - set src in world - set category = "Minor" - - valve_open = 1 - release_pressure = 1000 -/* -obj/machinery/atmospherics - unary - heat_reservoir - verb - toggle_power() - set src in world - set category = "Minor" - - on = !on - - update_icon() - adjust_temp(temp as num) - set src in world - set category = "Minor" - - current_temperature = temp - cold_sink - verb - toggle_power() - set src in world - set category = "Minor" - - on = !on - - update_icon() - adjust_temp(temp as num) - set src in world - set category = "Minor" - - current_temperature = temp - vent_pump - verb - toggle_power() - set src in world - set category = "Minor" - - on = !on - - update_icon() - - toggle_direction() - set src in world - set category = "Minor" - - pump_direction = !pump_direction - - update_icon() - - change_pressure_parameters() - set src in world - set category = "Minor" - - usr << "current settings: PC=[pressure_checks], EB=[external_pressure_bound], IB=[internal_pressure_bound]" - - var/mode = input(usr, "Select an option:") in list("Bound External", "Bound Internal", "Bound Both") - - switch(mode) - if("Bound External") - pressure_checks = 1 - external_pressure_bound = input(usr, "External Pressure Bound?") as num - if("Bound Internal") - pressure_checks = 2 - internal_pressure_bound = input(usr, "Internal Pressure Bound?") as num - else - pressure_checks = 3 - external_pressure_bound = input(usr, "External Pressure Bound?") as num - internal_pressure_bound = input(usr, "Internal Pressure Bound?") as num - - outlet_injector - verb - toggle_power() - set src in world - set category = "Minor" - - on = !on - - update_icon() - verb - trigger_inject() - set src in world - set category = "Minor" - - inject() - - vent_scrubber - verb - toggle_power() - set src in world - set category = "Minor" - - on = !on - - update_icon() - - toggle_scrubbing() - set src in world - set category = "Minor" - - scrubbing = !scrubbing - - update_icon() - - change_rate(amount as num) - set src in world - set category = "Minor" - - volume_rate = amount - - mixer - verb - toggle() - set src in world - set category = "Minor" - - on = !on - - update_icon() - - change_pressure(amount as num) - set src in world - set category = "Minor" - - target_pressure = amount - - change_ratios() - set src in world - set category = "Minor" - - if(node_in1) - var/node_ratio = input(usr, "Node 1 Ratio? ([dir2text(get_dir(src, node_in1))])") as num - node_ratio = min(max(0,node_ratio),1) - - node1_concentration = node_ratio - node2_concentration = 1-node_ratio - else - node2_concentration = 1 - node1_concentration = 0 - - usr << "Node 1: [node1_concentration], Node 2: [node2_concentration]" - - - filter - verb - toggle() - set src in world - set category = "Minor" - - on = !on - - update_icon() - - change_pressure(amount as num) - set src in world - set category = "Minor" - - target_pressure = amount - - unary/oxygen_generator - verb - toggle() - set src in world - set category = "Minor" - - on = !on - - update_icon() - - change_rate(amount as num) - set src in world - set category = "Minor" - - oxygen_content = amount - binary/pump - verb - debug() - set src in world - set category = "Minor" - - world << "Debugging: [x],[y]" - - if(node1) - world << "Input node: [node1.x],[node1.y] [network1]" - if(node2) - world << "Output node: [node2.x],[node2.y] [network2]" - - toggle() - set src in world - set category = "Minor" - - on = !on - - update_icon() - change_pressure(amount as num) - set src in world - set category = "Minor" - - target_pressure = amount - - valve - verb - toggle() - set src in world - set category = "Minor" - - if(open) - close() - else - open() - network_data() - set src in world - set category = "Minor" - - world << "\blue [x],[y]" - world << "network 1: [network_node1.normal_members.len], [network_node1.line_members.len]" - for(var/obj/O in network_node1.normal_members) - world << "member: [O.x], [O.y]" - world << "network 2: [network_node2.normal_members.len], [network_node2.line_members.len]" - for(var/obj/O in network_node2.normal_members) - world << "member: [O.x], [O.y]" - pipe - verb - destroy() - set src in world - set category = "Minor" - - del(src) - - pipeline_data() - set src in world - set category = "Minor" - - if(parent) - usr << "[x],[y] is in a pipeline with [parent.members.len] members ([parent.edges.len] edges)! Volume: [parent.air.volume]" - usr << "Pressure: [parent.air.return_pressure()], Temperature: [parent.air.temperature]" - usr << "[parent.air.oxygen], [parent.air.toxins], [parent.air.nitrogen], [parent.air.carbon_dioxide] .. [parent.alert_pressure]" -*/ -mob - verb - flag_all_pipe_networks() - set category = "Debug" - - for(var/datum/pipe_network/network in pipe_networks) - network.update = 1 - - mark_pipe_networks() - set category = "Debug" - - for(var/datum/pipe_network/network in pipe_networks) - network.marker = rand(1,4) - - for(var/obj/machinery/atmospherics/pipe/P in world) - P.overlays.Cut() - - var/datum/pipe_network/master = P.return_network() - if(master) - P.overlays += icon('icons/Testing/atmos_testing.dmi',"marker[master.marker]") - else - world << "error" - P.overlays += icon('icons/Testing/atmos_testing.dmi',"marker0") - - for(var/obj/machinery/atmospherics/valve/V in world) - V.overlays.Cut() - - if(V.network_node1) - V.overlays += icon('icons/Testing/atmos_testing.dmi',"marker[V.network_node1.marker]") - else - V.overlays += icon('icons/Testing/atmos_testing.dmi',"marker0") - - if(V.network_node2) - V.overlays += icon('icons/Testing/atmos_testing.dmi',"marker[V.network_node2.marker]") - else - V.overlays += icon('icons/Testing/atmos_testing.dmi',"marker0") - -turf/simulated - var/fire_verbose = 0 - - verb - mark_direction() - set src in world - overlays.Cut() - for(var/direction in list(NORTH,SOUTH,EAST,WEST)) - if(group_border&direction) - overlays += icon('icons/Testing/turf_analysis.dmi',"red_arrow",direction) - else if(air_check_directions&direction) - overlays += icon('icons/Testing/turf_analysis.dmi',"arrow",direction) - air_status() - set src in world - set category = "Minor" - var/datum/gas_mixture/GM = return_air() - usr << "\blue @[x],[y] ([GM.group_multiplier]): O:[GM.oxygen] T:[GM.toxins] N:[GM.nitrogen] C:[GM.carbon_dioxide] w [GM.temperature] Kelvin, [GM.return_pressure()] kPa [(active_hotspot)?("\red BURNING"):(null)]" - for(var/datum/gas/trace_gas in GM.trace_gases) - usr << "[trace_gas.type]: [trace_gas.moles]" - - force_temperature(temp as num) - set src in world - set category = "Minor" - if(parent&&parent.group_processing) - parent.suspend_group_processing() - - air.temperature = temp - - spark_temperature(temp as num, volume as num) - set src in world - set category = "Minor" - - hotspot_expose(temp, volume) - - fire_verbose() - set src in world - set category = "Minor" - - fire_verbose = !fire_verbose - usr << "[x],[y] now [fire_verbose]" - - add_sleeping_agent(amount as num) - set src in world - set category = "Minor" - - if(amount>1) - var/datum/gas_mixture/adding = new - var/datum/gas/sleeping_agent/trace_gas = new - - trace_gas.moles = amount - adding.trace_gases += trace_gas - adding.temperature = T20C - - assume_air(adding) - -obj/indicator - icon = 'icons/Testing/air_meter.dmi' - var/measure = "temperature" - anchored = 1 - - process() - icon_state = measurement() - - proc/measurement() - var/turf/T = loc - if(!isturf(T)) return - var/datum/gas_mixture/GM = T.return_air() - switch(measure) - if("temperature") - if(GM.temperature < 0) - return "error" - return "[round(GM.temperature/100+0.5)]" - if("oxygen") - if(GM.oxygen < 0) - return "error" - return "[round(GM.oxygen/MOLES_CELLSTANDARD*10+0.5)]" - if("plasma") - if(GM.toxins < 0) - return "error" - return "[round(GM.toxins/MOLES_CELLSTANDARD*10+0.5)]" - if("nitrogen") - if(GM.nitrogen < 0) - return "error" - return "[round(GM.nitrogen/MOLES_CELLSTANDARD*10+0.5)]" - else - return "[round((GM.total_moles())/MOLES_CELLSTANDARD*10+0.5)]" - - - Click() - process() - - -obj/window - verb - destroy() - set category = "Minor" - set src in world - del(src) - -mob - sight = SEE_OBJS|SEE_TURFS - - verb - update_indicators() - set category = "Debug" - if(!air_master) - usr << "Cannot find air_system" - return - - for(var/obj/indicator/T in world) - T.process() - change_indicators() - set category = "Debug" - if(!air_master) - usr << "Cannot find air_system" - return - - var/str = input("Select") in list("oxygen", "nitrogen","plasma","all","temperature") - - for(var/obj/indicator/T in world) - T.measure = str - T.process() - - fire_report() - set category = "Debug" - usr << "\b \red Fire Report" - for(var/obj/effect/hotspot/flame in world) - usr << "[flame.x],[flame.y]: [flame.temperature]K, [flame.volume] L - [flame.loc:air:temperature]" - - process_cycle() - set category = "Debug" - if(!master_controller) - usr << "Cannot find master_controller" - return - - master_controller.process() - update_indicators() - - process_cycles(amount as num) - set category = "Debug" - if(!master_controller) - usr << "Cannot find master_controller" - return - - var/start_time = world.timeofday - - for(var/i=1; i<=amount; i++) - master_controller.process() - - world << "Ended [amount] cycles in [(world.timeofday-start_time)/10] seconds. [(world.timeofday-start_time)/10-amount] calculation lag" - - update_indicators() - - process_updates_early() - set category = "Debug" - if(!air_master) - usr << "Cannot find air_system" - return - - air_master.process_update_tiles() - air_master.process_rebuild_select_groups() - - mark_group_delay() - set category = "Debug" - if(!air_master) - usr << "Cannot find air_system" - return - - for(var/datum/air_group/group in air_master.air_groups) - group.marker = 0 - - for(var/turf/simulated/floor/S in world) - S.icon = 'icons/Testing/turf_analysis.dmi' - if(S.parent) - if(S.parent.group_processing) - if (S.parent.check_delay < 2) - S.parent.marker=1 - else if (S.parent.check_delay < 5) - S.parent.marker=2 - else if (S.parent.check_delay < 15) - S.parent.marker=3 - else if (S.parent.check_delay < 30) - S.parent.marker=4 - else - S.parent.marker=5 - if(S.parent.borders && S.parent.borders.Find(S)) - S.icon_state = "on[S.parent.marker]_border" - else - S.icon_state = "on[S.parent.marker]" - - else - if (S.check_delay < 2) - S.icon_state= "on1_border" - else if (S.check_delay < 5) - S.icon_state= "on2_border" - else if (S.check_delay < 15) - S.icon_state= "on3_border" - else if (S.check_delay < 30) - S.icon_state= "on4_border" - else - S.icon_state = "suspended" - else - if(S.processing) - S.icon_state = "individual_on" - else - S.icon_state = "individual_off" - - - mark_groups() - set category = "Debug" - if(!air_master) - usr << "Cannot find air_system" - return - - for(var/datum/air_group/group in air_master.air_groups) - group.marker = 0 - - for(var/turf/simulated/floor/S in world) - S.icon = 'icons/Testing/turf_analysis.dmi' - if(S.parent) - if(S.parent.group_processing) - if(S.parent.marker == 0) - S.parent.marker = rand(1,5) - if(S.parent.borders && S.parent.borders.Find(S)) - S.icon_state = "on[S.parent.marker]_border" - else - S.icon_state = "on[S.parent.marker]" - - else - S.icon_state = "suspended" - else - if(S.processing) - S.icon_state = "individual_on" - else - S.icon_state = "individual_off" - - get_broken_icons() - set category = "Debug" - getbrokeninhands() - - -/* jump_to_dead_group() Currently in the normal admin commands but fits here - set category = "Debug" - if(!air_master) - usr << "Cannot find air_system" - return - - var/datum/air_group/dead_groups = list() - for(var/datum/air_group/group in air_master.air_groups) - if (!group.group_processing) - dead_groups += group - var/datum/air_group/dest_group = pick(dead_groups) - usr.loc = pick(dest_group.members)*/ diff --git a/code/FEA/FEA_airgroup.dm b/code/FEA/FEA_airgroup.dm deleted file mode 100644 index 94c51102b27..00000000000 --- a/code/FEA/FEA_airgroup.dm +++ /dev/null @@ -1,286 +0,0 @@ -datum/air_group - var/group_processing = 1 //Processing all tiles as one large tile if 1 - - var/datum/gas_mixture/air = new - - var/current_cycle = 0 //cycle that oxygen value represents - var/archived_cycle = 0 //cycle that oxygen_archived value represents - //The use of archived cycle saves processing power by permitting the archiving step of FET - // to be rolled into the updating step - - //optimization vars - var/next_check = 0 //number of ticks before this group updates - var/check_delay = 10 //number of ticks between updates, starts fairly high to get boring groups out of the way - - proc/members() - //Returns the members of the group - proc/process_group() - - - var/list/borders //Tiles that connect this group to other groups/individual tiles - var/list/members //All tiles in this group - - var/list/space_borders - var/length_space_border = 0 - - - proc/suspend_group_processing() - group_processing = 0 - update_tiles_from_group() - check_delay=0 - next_check=0 - - - //Copy group air information to individual tile air - //Used right before turning on group processing - proc/update_group_from_tiles() - var/sample_member = pick(members) - var/datum/gas_mixture/sample_air = sample_member:air - - air.copy_from(sample_air) - air.group_multiplier = members.len - return 1 - - - //Copy group air information to individual tile air - //Used right before turning off group processing - proc/update_tiles_from_group() - for(var/member in members) - member:air.copy_from(air) - if (istype(member,/turf/simulated)) - var/turf/simulated/turfmem=member - turfmem.reset_delay() - - - proc/archive() - air.archive() - archived_cycle = air_master.current_cycle - - - //If individually processing tiles, checks all member tiles to see if they are close enough that the group may resume group processing - //Warning: Do not call, called by air_master.process() - proc/check_regroup() - //Purpose: Checks to see if group processing should be turned back on - //Returns: group_processing - if(prevent_airgroup_regroup) - return 0 - - if(group_processing) return 1 - - var/turf/simulated/sample = pick(members) - for(var/member in members) - if(member:active_hotspot) - return 0 - if(member:air.compare(sample.air)) continue - else - return 0 - - update_group_from_tiles() - group_processing = 1 - return 1 - - -//Look into this - turf/process_group() - current_cycle = air_master.current_cycle - if(!group_processing) //Revert to individual processing then end - for(var/T in members) - var/turf/simulated/member = T - member.process_cell() - return - - //check if we're skipping this tick - if (next_check > 0) - next_check-- - return 1 - var/player_count = max(player_list.len, 3) / 3 - next_check += check_delay + rand(player_count, player_count * 1.5) - check_delay++ - - var/turf/simulated/list/border_individual = list() - var/datum/air_group/list/border_group = list() - - var/turf/simulated/list/enemies = list() //used to send the appropriate border tile of a group to the group proc - var/turf/simulated/list/self_group_borders = list() - var/turf/simulated/list/self_tile_borders = list() - - if(archived_cycle < air_master.current_cycle) - archive() - //Archive air data for use in calculations - //But only if another group didn't store it for us - - for(var/turf/simulated/border_tile in src.borders) - for(var/direction in cardinal) //Go through all border tiles and get bordering groups and individuals - if(border_tile.group_border&direction) - var/turf/simulated/enemy_tile = get_step(border_tile, direction) //Add found tile to appropriate category - if(istype(enemy_tile) && enemy_tile.parent && enemy_tile.parent.group_processing) - border_group += enemy_tile.parent - enemies += enemy_tile - self_group_borders += border_tile - else - border_individual += enemy_tile - self_tile_borders += border_tile - - var/abort_group = 0 - - // Process connections to adjacent groups - var/border_index = 1 - for(var/datum/air_group/AG in border_group) - if(AG.archived_cycle < archived_cycle) //archive other groups information if it has not been archived yet this cycle - AG.archive() - if(AG.current_cycle < current_cycle) - //This if statement makes sure two groups only process their individual connections once! - //Without it, each connection would be processed a second time as the second group is evaluated - - var/connection_difference = 0 - var/turf/simulated/floor/self_border = self_group_borders[border_index] - var/turf/simulated/floor/enemy_border = enemies[border_index] - - var/result = air.check_gas_mixture(AG.air) - if(result == 1) - connection_difference = air.share(AG.air) - else if(result == -1) - AG.suspend_group_processing() - connection_difference = air.share(enemy_border.air) - else - abort_group = 1 - break - - if(connection_difference) - if(connection_difference > 0) - self_border.consider_pressure_difference(connection_difference, get_dir(self_border,enemy_border)) - else - var/turf/enemy_turf = enemy_border - if(!isturf(enemy_turf)) - enemy_turf = enemy_border.loc - enemy_turf.consider_pressure_difference(-connection_difference, get_dir(enemy_turf,self_border)) - - border_index++ - - // Process connections to adjacent tiles - border_index = 1 - if(!abort_group) - for(var/atom/enemy_tile in border_individual) - var/connection_difference = 0 - var/turf/simulated/floor/self_border = self_tile_borders[border_index] - - if(istype(enemy_tile, /turf/simulated)) - if(enemy_tile:archived_cycle < archived_cycle) //archive tile information if not already done - enemy_tile:archive() - if(enemy_tile:current_cycle < current_cycle) - if(air.check_gas_mixture(enemy_tile:air)) - connection_difference = air.share(enemy_tile:air) - else - abort_group = 1 - break - else if(isturf(enemy_tile)) - if(air.check_turf(enemy_tile)) - connection_difference = air.mimic(enemy_tile) - else - abort_group = 1 - break - - if(connection_difference) - if(connection_difference > 0) - self_border.consider_pressure_difference(connection_difference, get_dir(self_border,enemy_tile)) - else - var/turf/enemy_turf = enemy_tile - if(!isturf(enemy_turf)) - enemy_turf = enemy_tile.loc - enemy_turf.consider_pressure_difference(-connection_difference, get_dir(enemy_tile,enemy_turf)) - - // Process connections to space - border_index = 1 - if(!abort_group) - if(length_space_border > 0) - var/turf/space/sample = locate() - var/connection_difference = 0 - - if(air.check_turf(sample)) - connection_difference = air.mimic(sample, length_space_border) - else - abort_group = 1 - - if(connection_difference) - for(var/turf/simulated/self_border in space_borders) - self_border.consider_pressure_difference_space(connection_difference) - - if(abort_group) - suspend_group_processing() - else - if(air.check_tile_graphic()) - for(var/T in members) - var/turf/simulated/member = T - member.update_visuals(air) - - - if(air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST) - for(var/T in members) - var/turf/simulated/member = T - member.hotspot_expose(air.temperature, CELL_VOLUME) - member.consider_superconductivity(starting=1) - - air.react() - return - - - - object/process_group() - current_cycle = air_master.current_cycle - - if(!group_processing) return //See if processing this group as a group - - var/turf/simulated/list/border_individual = list() - var/datum/air_group/list/border_group = list() - - var/turf/simulated/list/enemies = list() //used to send the appropriate border tile of a group to the group proc - var/enemy_index = 1 - - if(archived_cycle < air_master.current_cycle) - archive() - //Archive air data for use in calculations - //But only if another group didn't store it for us - - enemy_index = 1 - var/abort_group = 0 - for(var/datum/air_group/AG in border_group) - if(AG.archived_cycle < archived_cycle) //archive other groups information if it has not been archived yet this cycle - AG.archive() - if(AG.current_cycle < current_cycle) - //This if statement makes sure two groups only process their individual connections once! - //Without it, each connection would be processed a second time as the second group is evaluated - - var/result = air.check_gas_mixture(AG.air) - if(result == 1) - air.share(AG.air) - else if(result == -1) - AG.suspend_group_processing() - var/turf/simulated/floor/enemy_border = enemies[enemy_index] - air.share(enemy_border.air) - else - abort_group = 0 - break - enemy_index++ - - if(!abort_group) - for(var/enemy_tile in border_individual) - if(istype(enemy_tile, /turf/simulated)) - if(enemy_tile:archived_cycle < archived_cycle) //archive tile information if not already done - enemy_tile:archive() - if(enemy_tile:current_cycle < current_cycle) - if(air.check_gas_mixture(enemy_tile:air)) - air.share(enemy_tile:air) - else - abort_group = 1 - break - else - if(air.check_turf(enemy_tile)) - air.mimic(enemy_tile) - else - abort_group = 1 - break - - if(abort_group) - suspend_group_processing() - - return \ No newline at end of file diff --git a/code/FEA/FEA_group_helpers.dm b/code/FEA/FEA_group_helpers.dm deleted file mode 100644 index c803d6ef95e..00000000000 --- a/code/FEA/FEA_group_helpers.dm +++ /dev/null @@ -1,101 +0,0 @@ -/turf/simulated/proc/find_group() - //Basically, join any nearby valid groups - // If more than one, pick one with most members at my borders - // If can not find any but there was an ungrouped at border with me, call for group assembly - - var/turf/simulated/floor/north = get_step(src,NORTH) - var/turf/simulated/floor/south = get_step(src,SOUTH) - var/turf/simulated/floor/east = get_step(src,EAST) - var/turf/simulated/floor/west = get_step(src,WEST) - - //Clear those we do not have access to - if(!CanPass(null, north, null, 1) || !istype(north)) - north = null - if(!CanPass(null, south, null, 1) || !istype(south)) - south = null - if(!CanPass(null, east, null, 1) || !istype(east)) - east = null - if(!CanPass(null, west, null, 1) || !istype(west)) - west = null - - var/new_group_possible = 0 - - var/north_votes = 0 - var/south_votes = 0 - var/east_votes = 0 - - if(north) - if(north.parent) - north_votes = 1 - - if(south && (south.parent == north.parent)) - north_votes++ - south = null - - if(east && (east.parent == north.parent)) - north_votes++ - east = null - - if(west && (west.parent == north.parent)) - north_votes++ - west = null - else - new_group_possible = 1 - - if(south) - if(south.parent) - south_votes = 1 - - if(east && (east.parent == south.parent)) - south_votes++ - east = null - - if(west && (west.parent == south.parent)) - south_votes++ - west = null - else - new_group_possible = 1 - - if(east) - if(east.parent) - east_votes = 1 - - if(west && (west.parent == east.parent)) - east_votes++ - west = null - else - new_group_possible = 1 - -// world << "[north_votes], [south_votes], [east_votes]" - - var/datum/air_group/group_joined = null - - if(west) - if(west.parent) - group_joined = west.parent - else - new_group_possible = 1 - - if(north_votes && (north_votes >= south_votes) && (north_votes >= east_votes)) - group_joined = north.parent - else if(south_votes && (south_votes >= east_votes)) - group_joined = south.parent - else if(east_votes) - group_joined = east.parent - - if (istype(group_joined)) - if (group_joined.group_processing) - group_joined.suspend_group_processing() - group_joined.members += src - parent=group_joined - - air_master.tiles_to_update += group_joined.members - return 1 - - else if(new_group_possible) - air_master.assemble_group_turf(src) - return 1 - - else - air_master.active_singletons += src - return 1 \ No newline at end of file diff --git a/code/FEA/FEA_system.dm b/code/FEA/FEA_system.dm deleted file mode 100644 index 574fd1ba268..00000000000 --- a/code/FEA/FEA_system.dm +++ /dev/null @@ -1,335 +0,0 @@ -/* -Overview: - The air_master global variable is the workhorse for the system. - -Why are you archiving data before modifying it? - The general concept with archiving data and having each tile keep track of when they were last updated is to keep everything symmetric - and totally independent of the order they are read in an update cycle. - This prevents abnormalities like air/fire spreading rapidly in one direction and super slowly in the other. - -Why not just archive everything and then calculate? - Efficiency. While a for-loop that goes through all tiles and groups to archive their information before doing any calculations seems simple, it is - slightly less efficient than the archive-before-modify/read method. - -Why is there a cycle check for calculating data as well? - This ensures that every connection between group-tile, tile-tile, and group-group is only evaluated once per loop. - - - - -Important variables: - air_master.groups_to_rebuild (list) - A list of air groups that have had their geometry occluded and thus may need to be split in half. - A set of adjacent groups put in here will join together if validly connected. - This is done before air system calculations for a cycle. - air_master.tiles_to_update (list) - Turfs that are in this list have their border data updated before the next air calculations for a cycle. - Place turfs in this list rather than call the proc directly to prevent race conditions - - turf/simulated.archive() and datum/air_group.archive() - This stores all data for. - If you modify, make sure to update the archived_cycle to prevent race conditions and maintain symmetry - - atom/CanPass(atom/movable/mover, turf/target, height, air_group) - returns 1 for allow pass and 0 for deny pass - Turfs automatically call this for all objects/mobs in its turf. - This is called both as source.CanPass(target, height, air_group) - and target.CanPass(source, height, air_group) - - Cases for the parameters - 1. This is called with args (mover, location, height>0, air_group=0) for normal objects. - 2. This is called with args (null, location, height=0, air_group=0) for flowing air. - 3. This is called with args (null, location, height=?, air_group=1) for determining group boundaries. - - Cases 2 and 3 would be different for doors or other objects open and close fairly often. - (Case 3 would return 0 always while Case 2 would return 0 only when the door is open) - This prevents the necessity of re-evaluating group geometry every time a door opens/closes. - - -Important Procedures - air_master.process() - This first processes the air_master update/rebuild lists then processes all groups and tiles for air calculations - - -*/ - -var/kill_air = 0 - -atom/proc/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) - return (!density || !height || air_group) - -turf - CanPass(atom/movable/mover, turf/target, height=1.5,air_group=0) - if(!target) return 0 - - if(istype(mover)) // turf/Enter(...) will perform more advanced checks - return !density - - else // Now, doing more detailed checks for air movement and air group formation - if(target.blocks_air||blocks_air) - return 0 - - for(var/obj/obstacle in src) - if(!obstacle.CanPass(mover, target, height, air_group)) - return 0 - for(var/obj/obstacle in target) - if(!obstacle.CanPass(mover, src, height, air_group)) - return 0 - - return 1 - - -var/global/datum/controller/air_system/air_master - -datum - controller - air_system - //Geoemetry lists - var/list/datum/air_group/air_groups = list() - var/list/turf/simulated/active_singletons = list() - - //Special functions lists - var/list/turf/simulated/active_super_conductivity = list() - var/list/turf/simulated/high_pressure_delta = list() - - //Geometry updates lists - var/list/turf/simulated/tiles_to_update = list() - var/list/turf/simulated/groups_to_rebuild = list() - - var/current_cycle = 0 - - proc - setup() - //Call this at the start to setup air groups geometry - //Warning: Very processor intensive but only must be done once per round - - assemble_group_turf(turf/simulated/base) - //Call this to try to construct a group starting from base and merging with neighboring unparented tiles - //Expands the group until all valid borders explored - -// assemble_group_object(obj/movable/floor/base) - - process() - //Call this to process air movements for a cycle - - process_groups() - //Used by process() - //Warning: Do not call this - - process_singletons() - //Used by process() - //Warning: Do not call this - - process_high_pressure_delta() - //Used by process() - //Warning: Do not call this - - process_super_conductivity() - //Used by process() - //Warning: Do not call this - - process_update_tiles() - //Used by process() - //Warning: Do not call this - - process_rebuild_select_groups() - //Used by process() - //Warning: Do not call this - - rebuild_group(datum/air_group) - //Used by process_rebuild_select_groups() - //Warning: Do not call this, add the group to air_master.groups_to_rebuild instead - - add_singleton(turf/simulated/T) - if(!active_singletons.Find(T)) - active_singletons += T - - setup() - set background = 1 - world << "\red \b Processing Geometry..." - sleep(1) - - var/start_time = world.timeofday - - for(var/turf/simulated/S in world) - if(!S.blocks_air && !S.parent) - assemble_group_turf(S) - S.update_air_properties() - - world << "\red \b Geometry processed in [(world.timeofday-start_time)/10] seconds!" - - assemble_group_turf(turf/simulated/base) - - var/list/turf/simulated/members = list(base) //Confirmed group members - var/list/turf/simulated/possible_members = list(base) //Possible places for group expansion - var/list/turf/simulated/possible_borders = list() - var/list/turf/simulated/possible_space_borders = list() - var/possible_space_length = 0 - - while(possible_members.len>0) //Keep expanding, looking for new members - for(var/turf/simulated/test in possible_members) - test.length_space_border = 0 - for(var/direction in cardinal) - var/turf/T = get_step(test,direction) - if(T && !members.Find(T) && test.CanPass(null, T, null,1)) - if(istype(T,/turf/simulated) && !T:parent) - possible_members += T - members += T - else if(istype(T,/turf/space)) - possible_space_borders -= test - possible_space_borders += test - test.length_space_border++ - else - possible_borders -= test - possible_borders += test - if(test.length_space_border > 0) - possible_space_length += test.length_space_border - possible_members -= test - - if(members.len > 1) - var/datum/air_group/turf/group = new - if(possible_borders.len>0) - group.borders = possible_borders - if(possible_space_borders.len>0) - group.space_borders = possible_space_borders - group.length_space_border = possible_space_length - - for(var/turf/simulated/test in members) - test.parent = group - test.processing = 0 - active_singletons -= test - - group.members = members - air_groups += group - - group.update_group_from_tiles() //Initialize air group variables - return group - else - base.processing = 0 //singletons at startup are technically unconnected anyway - base.parent = null - - if(base.air.check_tile_graphic()) - base.update_visuals(base.air) - - return null -/* - assemble_group_object(obj/movable/floor/base) - - var/list/obj/movable/floor/members = list(base) //Confirmed group members - var/list/obj/movable/floor/possible_members = list(base) //Possible places for group expansion - var/list/obj/movable/floor/possible_borders = list() - - while(possible_members.len>0) //Keep expanding, looking for new members - for(var/obj/movable/floor/test in possible_members) - for(var/direction in list(NORTH, SOUTH, EAST, WEST)) - var/turf/T = get_step(test.loc,direction) - if(T && test.loc.CanPass(null, T, null, 1)) - var/obj/movable/floor/O = locate(/obj/movable/floor) in T - if(istype(O) && !O.parent) - if(!members.Find(O)) - possible_members += O - members += O - else - possible_borders -= test - possible_borders += test - possible_members -= test - - if(members.len > 1) - var/datum/air_group/object/group = new - if(possible_borders.len>0) - group.borders = possible_borders - - for(var/obj/movable/floor/test in members) - test.parent = group - test.processing = 0 - active_singletons -= test - - group.members = members - air_groups += group - - group.update_group_from_tiles() //Initialize air group variables - return group - else - base.processing = 0 //singletons at startup are technically unconnected anyway - base.parent = null - - return null -*/ - process() - if(kill_air) - return 1 - current_cycle++ - if(groups_to_rebuild.len > 0) process_rebuild_select_groups() - if(tiles_to_update.len > 0) process_update_tiles() - - process_groups() - process_singletons() - - process_super_conductivity() - process_high_pressure_delta() - - if(current_cycle%10==5) //Check for groups of tiles to resume group processing every 10 cycles - for(var/datum/air_group/AG in air_groups) - AG.check_regroup() - - return 1 - - process_update_tiles() - for(var/turf/simulated/T in tiles_to_update) - T.update_air_properties() -/* - for(var/obj/movable/floor/O in tiles_to_update) - O.update_air_properties() -*/ - tiles_to_update.len = 0 - - process_rebuild_select_groups() - var/turf/list/turfs = list() - - for(var/datum/air_group/turf/turf_AG in groups_to_rebuild) //Deconstruct groups, gathering their old members - for(var/turf in turf_AG.members) - var/turf/simulated/T = turf - T.parent = null - turfs += T - del(turf_AG) - - for(var/turf/simulated/S in turfs) //Have old members try to form new groups - if(!S.parent) - assemble_group_turf(S) - for(var/turf/simulated/S in turfs) - S.update_air_properties() - -// var/obj/movable/list/movable_objects = list() - -// for(var/datum/air_group/object/object_AG in groups_to_rebuild) //Deconstruct groups, gathering their old members -/* - for(var/obj/movable/floor/OM in object_AG.members) - OM.parent = null - movable_objects += OM - del(object_AG) - - for(var/obj/movable/floor/OM in movable_objects) //Have old members try to form new groups - if(!OM.parent) - assemble_group_object(OM) - for(var/obj/movable/floor/OM in movable_objects) - OM.update_air_properties() -*/ - groups_to_rebuild.len = 0 - - process_groups() - for(var/datum/air_group/AG in air_groups) - AG.process_group() - - process_singletons() - for(var/item in active_singletons) - item:process_cell() - - process_super_conductivity() - for(var/turf/simulated/hot_potato in active_super_conductivity) - hot_potato.super_conduct() - - process_high_pressure_delta() - for(var/turf/pressurized in high_pressure_delta) - pressurized.high_pressure_movements() - - high_pressure_delta.len = 0 diff --git a/code/FEA/FEA_turf_tile.dm b/code/FEA/FEA_turf_tile.dm deleted file mode 100644 index de3901b910d..00000000000 --- a/code/FEA/FEA_turf_tile.dm +++ /dev/null @@ -1,592 +0,0 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31 - -atom/movable/var/pressure_resistance = 5 -atom/movable/var/last_forced_movement = 0 - -atom/movable/proc/experience_pressure_difference(pressure_difference, direction) - if(last_forced_movement >= air_master.current_cycle) - return 0 - else if(!anchored) - if(pressure_difference > pressure_resistance) - last_forced_movement = air_master.current_cycle - spawn step(src, direction) - return 1 - -turf - assume_air(datum/gas_mixture/giver) //use this for machines to adjust air - del(giver) - return 0 - - return_air() - //Create gas mixture to hold data for passing - var/datum/gas_mixture/GM = new - - GM.oxygen = oxygen - GM.carbon_dioxide = carbon_dioxide - GM.nitrogen = nitrogen - GM.toxins = toxins - - GM.temperature = temperature - - return GM - - remove_air(amount as num) - var/datum/gas_mixture/GM = new - - var/sum = oxygen + carbon_dioxide + nitrogen + toxins - if(sum>0) - GM.oxygen = (oxygen/sum)*amount - GM.carbon_dioxide = (carbon_dioxide/sum)*amount - GM.nitrogen = (nitrogen/sum)*amount - GM.toxins = (toxins/sum)*amount - - GM.temperature = temperature - - return GM - -turf - var/pressure_difference = 0 - var/pressure_direction = 0 - var/reporting_pressure_difference - - //optimization vars - var/next_check = 0 //number of ticks before this tile updates - var/check_delay = 0 //number of ticks between updates - - proc/high_pressure_movements() - if(reporting_pressure_difference) - world << "pressure_difference = [pressure_difference]; pressure_direction = [pressure_direction]" - for(var/atom/movable/in_tile in src) - in_tile.experience_pressure_difference(pressure_difference, pressure_direction) - - pressure_difference = 0 - - proc/consider_pressure_difference(connection_difference, connection_direction) - if(connection_difference < 0) - connection_difference = -connection_difference - connection_direction = turn(connection_direction,180) - - if(connection_difference > pressure_difference) - if(!pressure_difference) - air_master.high_pressure_delta += src - pressure_difference = connection_difference - pressure_direction = connection_direction - -turf/simulated/proc/consider_pressure_difference_space(connection_difference) - for(var/direction in cardinal) - if(direction&group_border) - if(istype(get_step(src,direction),/turf/space)) - if(!pressure_difference) - air_master.high_pressure_delta += src - pressure_direction = direction - pressure_difference = connection_difference - - - return 1 - - -turf/simulated - - var/current_graphic = null - - var/tmp/datum/gas_mixture/air - - var/tmp/processing = 1 - var/tmp/datum/air_group/turf/parent - var/tmp/group_border = 0 - var/tmp/length_space_border = 0 - - var/tmp/air_check_directions = 0 //Do not modify this, just add turf to air_master.tiles_to_update - - var/tmp/archived_cycle = 0 - var/tmp/current_cycle = 0 - - var/tmp/obj/effect/hotspot/active_hotspot - - var/tmp/temperature_archived //USED ONLY FOR SOLIDS - var/tmp/being_superconductive = 0 - - proc/update_visuals(datum/gas_mixture/model) - overlays.Cut() - - var/siding_icon_state = return_siding_icon_state() - if(siding_icon_state) - overlays += image('icons/turf/floors.dmi',siding_icon_state) - - switch(model.graphic) - if("plasma") - overlays.Add(plmaster) - if("sleeping_agent") - overlays.Add(slmaster) - - if(model.graphics & GRAPHICS_COLD) - if(!was_icy) - wet=3 // Custom ice - was_icy=1 - var/o="" - //if(is_plating()) - // o="snowfloor_s" - //else - if(is_plasteel_floor()) - o="snowfloor" - if(o!="") - overlays += image('icons/turf/overlays.dmi',o) - else - if(was_icy) - wet=0 - was_icy=0 - if(prob(10)) - wet = 1 - if(wet_overlay) - overlays -= wet_overlay - wet_overlay = null - wet_overlay = image('icons/effects/water.dmi',src,"wet_floor") - overlays += wet_overlay - - spawn(800) - if (!istype(src)) return - if(wet >= 2) return - wet = 0 - if(wet_overlay) - overlays -= wet_overlay - wet_overlay = null - - - - New() - ..() - - if(!blocks_air) - air = new - - air.oxygen = oxygen - air.carbon_dioxide = carbon_dioxide - air.nitrogen = nitrogen - air.toxins = toxins - - air.temperature = temperature - - if(air_master) - air_master.tiles_to_update.Add(src) - - find_group() - -// air.parent = src //TODO DEBUG REMOVE - - else - if(air_master) - for(var/direction in cardinal) - var/turf/simulated/floor/target = get_step(src,direction) - if(istype(target)) - air_master.tiles_to_update.Add(target) - - Del() - if(air_master) - if(parent) - air_master.groups_to_rebuild.Add(parent) - parent.members.Remove(src) - else - air_master.active_singletons.Remove(src) - if(active_hotspot) - active_hotspot.Kill() - if(blocks_air) - for(var/direction in list(NORTH, SOUTH, EAST, WEST)) - var/turf/simulated/tile = get_step(src,direction) - if(istype(tile) && !tile.blocks_air) - air_master.tiles_to_update.Add(tile) - ..() - - assume_air(datum/gas_mixture/giver) - if(!giver) return 0 - var/datum/gas_mixture/receiver = air - if(istype(receiver)) - if(parent&&parent.group_processing) - if(!parent.air.check_then_merge(giver)) - parent.suspend_group_processing() - air.merge(giver) - else - if (giver.total_moles() > MINIMUM_AIR_TO_SUSPEND) - reset_delay() - - air.merge(giver) - - if(!processing) - if(air.check_tile_graphic()) - update_visuals(air) - - return 1 - - else return ..() - - proc/archive() - if(air) //For open space like floors - air.archive() - - temperature_archived = temperature - archived_cycle = air_master.current_cycle - - proc/share_air_with_tile(turf/simulated/T) - return air.share(T.air) - - proc/mimic_air_with_tile(turf/T) - return air.mimic(T) - - return_air() - if(air) - if(parent&&parent.group_processing) - return parent.air - else return air - - else - return ..() - - remove_air(amount as num) - if(air) - var/datum/gas_mixture/removed = null - - if(parent&&parent.group_processing) - removed = parent.air.check_then_remove(amount) - if(!removed) - parent.suspend_group_processing() - removed = air.remove(amount) - else - removed = air.remove(amount) - - if(!processing) - if(air.check_tile_graphic()) - update_visuals(air) - - return removed - - else - return ..() - - proc/update_air_properties()//OPTIMIZE - air_check_directions = 0 - - for(var/direction in cardinal) - if(CanPass(null, get_step(src,direction), 0, 0)) - air_check_directions |= direction - - if(parent) - if(parent.borders) - parent.borders -= src - if(length_space_border > 0) - parent.length_space_border -= length_space_border - length_space_border = 0 - - group_border = 0 - for(var/direction in cardinal) - if(air_check_directions&direction) - var/turf/simulated/T = get_step(src,direction) - - //See if actually a border - if(!istype(T) || (T.parent!=parent)) - - //See what kind of border it is - if(istype(T,/turf/space)) - if(parent.space_borders) - parent.space_borders -= src - parent.space_borders += src - else - parent.space_borders = list(src) - length_space_border++ - - else - if(parent.borders) - parent.borders -= src - parent.borders += src - else - parent.borders = list(src) - - group_border |= direction - - parent.length_space_border += length_space_border - - if(air_check_directions) - processing = 1 - if(!parent) - air_master.add_singleton(src) - else - processing = 0 - - proc/process_cell() - //this proc does all the heavy lifting for individual tile processing - //it shares with all of its neighbors, spreads fire, calls superconduction - //and doesn't afraid of anything - //Comment by errorage: In other words, this is the proc that lags the game. - - //check if we're skipping this tick - if (next_check > 0) - next_check-- - return 1 - var/player_count = max(player_list.len, 3) / 3 - next_check += check_delay + rand(player_count, player_count * 1.5) - check_delay++ - - var/turf/simulated/list/possible_fire_spreads = list() - if(processing) - if(archived_cycle < air_master.current_cycle) //archive self if not already done - archive() - current_cycle = air_master.current_cycle - - for(var/direction in cardinal) - if(air_check_directions&direction) //Grab all valid bordering tiles - var/turf/simulated/enemy_tile = get_step(src, direction) - var/connection_difference = 0 - - if(istype(enemy_tile)) //enemy_tile == neighbor, btw - if(enemy_tile.archived_cycle < archived_cycle) //archive bordering tile information if not already done - enemy_tile.archive() - - if (air && enemy_tile.air) - var/delay_trigger = air.compare(enemy_tile.air) - if (!delay_trigger) //if compare() didn't return 1, air is different enough to trigger processing - reset_delay() - enemy_tile.reset_delay() - - if(enemy_tile.parent && enemy_tile.parent.group_processing) //apply tile to group sharing - if(enemy_tile.parent.current_cycle < current_cycle) //if the group hasn't been archived, it could just be out of date - if(enemy_tile.parent.air.check_gas_mixture(air)) - connection_difference = air.share(enemy_tile.parent.air) - else - enemy_tile.parent.suspend_group_processing() - connection_difference = air.share(enemy_tile.air) - //group processing failed so interact with individual tile - - else - if(enemy_tile.current_cycle < current_cycle) - connection_difference = air.share(enemy_tile.air) - - if(active_hotspot) - possible_fire_spreads += enemy_tile - else -/* var/obj/movable/floor/movable_on_enemy = locate(/obj/movable/floor) in enemy_tile - - if(movable_on_enemy) - if(movable_on_enemy.parent && movable_on_enemy.parent.group_processing) //apply tile to group sharing - if(movable_on_enemy.parent.current_cycle < current_cycle) - if(movable_on_enemy.parent.air.check_gas_mixture(air)) - connection_difference = air.share(movable_on_enemy.parent.air) - - else - movable_on_enemy.parent.suspend_group_processing() - - if(movable_on_enemy.archived_cycle < archived_cycle) //archive bordering tile information if not already done - movable_on_enemy.archive() - connection_difference = air.share(movable_on_enemy.air) - //group processing failed so interact with individual tile - else - if(movable_on_enemy.archived_cycle < archived_cycle) //archive bordering tile information if not already done - movable_on_enemy.archive() - - if(movable_on_enemy.current_cycle < current_cycle) - connection_difference = share_air_with_tile(movable_on_enemy) - - else*/ - connection_difference = mimic_air_with_tile(enemy_tile) - //bordering a tile with fixed air properties - - if(connection_difference) - if(connection_difference > 0) - consider_pressure_difference(connection_difference, direction) - else - enemy_tile.consider_pressure_difference(connection_difference, direction) - else - air_master.active_singletons -= src //not active if not processing! - - air.react() - - if(active_hotspot) - if (!active_hotspot.process(possible_fire_spreads)) - return 0 - - if(air.temperature > MINIMUM_TEMPERATURE_START_SUPERCONDUCTION) - consider_superconductivity(starting = 1) - - if(air.check_tile_graphic()) - update_visuals(air) - - if(air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST) - reset_delay() //hotspots always process quickly - hotspot_expose(air.temperature, CELL_VOLUME) - for(var/atom/movable/item in src) - item.temperature_expose(air, air.temperature, CELL_VOLUME) - temperature_expose(air, air.temperature, CELL_VOLUME) - - return 1 - - proc/super_conduct() - var/conductivity_directions = 0 - if(blocks_air) - //Does not participate in air exchange, so will conduct heat across all four borders at this time - conductivity_directions = NORTH|SOUTH|EAST|WEST - - if(archived_cycle < air_master.current_cycle) - archive() - - else - //Does particate in air exchange so only consider directions not considered during process_cell() - conductivity_directions = ~air_check_directions & (NORTH|SOUTH|EAST|WEST) - - if(conductivity_directions>0) - //Conduct with tiles around me - for(var/direction in cardinal) - if(conductivity_directions&direction) - var/turf/neighbor = get_step(src,direction) - - if(istype(neighbor, /turf/simulated)) //anything under this subtype will share in the exchange - var/turf/simulated/modeled_neighbor = neighbor - - if(modeled_neighbor.archived_cycle < air_master.current_cycle) - modeled_neighbor.archive() - - if(modeled_neighbor.air) - if(air) //Both tiles are open - - if(modeled_neighbor.parent && modeled_neighbor.parent.group_processing) - if(parent && parent.group_processing) - //both are acting as a group - //modified using construct developed in datum/air_group/share_air_with_group(...) - - var/result = parent.air.check_both_then_temperature_share(modeled_neighbor.parent.air, WINDOW_HEAT_TRANSFER_COEFFICIENT) - if(result==0) - //have to deconstruct parent air group - - parent.suspend_group_processing() - if(!modeled_neighbor.parent.air.check_me_then_temperature_share(air, WINDOW_HEAT_TRANSFER_COEFFICIENT)) - //may have to deconstruct neighbors air group - - modeled_neighbor.parent.suspend_group_processing() - air.temperature_share(modeled_neighbor.air, WINDOW_HEAT_TRANSFER_COEFFICIENT) - else if(result==-1) - // have to deconstruct neightbors air group but not mine - - modeled_neighbor.parent.suspend_group_processing() - parent.air.temperature_share(modeled_neighbor.air, WINDOW_HEAT_TRANSFER_COEFFICIENT) - else - air.temperature_share(modeled_neighbor.air, WINDOW_HEAT_TRANSFER_COEFFICIENT) - else - if(parent && parent.group_processing) - if(!parent.air.check_me_then_temperature_share(air, WINDOW_HEAT_TRANSFER_COEFFICIENT)) - //may have to deconstruct neighbors air group - - parent.suspend_group_processing() - air.temperature_share(modeled_neighbor.air, WINDOW_HEAT_TRANSFER_COEFFICIENT) - - else - air.temperature_share(modeled_neighbor.air, WINDOW_HEAT_TRANSFER_COEFFICIENT) - // world << "OPEN, OPEN" - - else //Solid but neighbor is open - if(modeled_neighbor.parent && modeled_neighbor.parent.group_processing) - if(!modeled_neighbor.parent.air.check_me_then_temperature_turf_share(src, modeled_neighbor.thermal_conductivity)) - - modeled_neighbor.parent.suspend_group_processing() - modeled_neighbor.air.temperature_turf_share(src, modeled_neighbor.thermal_conductivity) - else - modeled_neighbor.air.temperature_turf_share(src, modeled_neighbor.thermal_conductivity) - // world << "SOLID, OPEN" - - else - if(air) //Open but neighbor is solid - if(parent && parent.group_processing) - if(!parent.air.check_me_then_temperature_turf_share(modeled_neighbor, modeled_neighbor.thermal_conductivity)) - parent.suspend_group_processing() - air.temperature_turf_share(modeled_neighbor, modeled_neighbor.thermal_conductivity) - else - air.temperature_turf_share(modeled_neighbor, modeled_neighbor.thermal_conductivity) - // world << "OPEN, SOLID" - - else //Both tiles are solid - share_temperature_mutual_solid(modeled_neighbor, modeled_neighbor.thermal_conductivity) - // world << "SOLID, SOLID" - - modeled_neighbor.consider_superconductivity() - - else - if(air) //Open - if(parent && parent.group_processing) - if(!parent.air.check_me_then_temperature_mimic(neighbor, neighbor.thermal_conductivity)) - parent.suspend_group_processing() - air.temperature_mimic(neighbor, neighbor.thermal_conductivity) - else - air.temperature_mimic(neighbor, neighbor.thermal_conductivity) - else - mimic_temperature_solid(neighbor, neighbor.thermal_conductivity) - - //Radiate excess tile heat to space - if(temperature > T0C) - // Is there a pre-defined Space Tile? - if(!Space_Tile) - Space_Tile = locate(/turf/space) // Define one - //Considering 0 degC as te break even point for radiation in and out - mimic_temperature_solid(Space_Tile, FLOOR_HEAT_TRANSFER_COEFFICIENT) - - //Conduct with air on my tile if I have it - if(air) - if(parent && parent.group_processing) - if(!parent.air.check_me_then_temperature_turf_share(src, thermal_conductivity)) - parent.suspend_group_processing() - air.temperature_turf_share(src, thermal_conductivity) - else - air.temperature_turf_share(src, thermal_conductivity) - - - //Make sure still hot enough to continue conducting heat - if(air) - if(air.temperature < MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION) - being_superconductive = 0 - air_master.active_super_conductivity -= src - return 0 - - else - if(temperature < MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION) - being_superconductive = 0 - air_master.active_super_conductivity -= src - return 0 - - proc/mimic_temperature_solid(turf/model, conduction_coefficient) - var/delta_temperature = (temperature_archived - model.temperature) - if((heat_capacity > 0) && (abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)) - - var/heat = conduction_coefficient*delta_temperature* \ - (heat_capacity*model.heat_capacity/(heat_capacity+model.heat_capacity)) - temperature -= heat/heat_capacity - - proc/share_temperature_mutual_solid(turf/simulated/sharer, conduction_coefficient) - var/delta_temperature = (temperature_archived - sharer.temperature_archived) - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER && heat_capacity && sharer.heat_capacity) - - var/heat = conduction_coefficient*delta_temperature* \ - (heat_capacity*sharer.heat_capacity/(heat_capacity+sharer.heat_capacity)) - - temperature -= heat/heat_capacity - sharer.temperature += heat/sharer.heat_capacity - - proc/consider_superconductivity(starting) - - if(being_superconductive || !thermal_conductivity) - return 0 - - if(air) - if(air.temperature < (starting?MINIMUM_TEMPERATURE_START_SUPERCONDUCTION:MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION)) - return 0 - if(air.heat_capacity() < MOLES_CELLSTANDARD*0.1*0.05) - return 0 - else - if(temperature < (starting?MINIMUM_TEMPERATURE_START_SUPERCONDUCTION:MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION)) - return 0 - - being_superconductive = 1 - - air_master.active_super_conductivity += src - - proc/reset_delay() - //sets this turf to process quickly again - next_check=0 - check_delay= -5 //negative numbers mean a mandatory quick-update period - - //if this turf has a parent air group, suspend its processing - if (parent && parent.group_processing) - parent.suspend_group_processing() diff --git a/code/FEA/FEA_fire.dm b/code/LINDA/LINDA_fire.dm similarity index 83% rename from code/FEA/FEA_fire.dm rename to code/LINDA/LINDA_fire.dm index bb71f31d47f..0f173f97fda 100644 --- a/code/FEA/FEA_fire.dm +++ b/code/LINDA/LINDA_fire.dm @@ -1,178 +1,177 @@ - -/atom/proc/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) - return null - - - -/turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0) - - - -/turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh) - var/datum/gas_mixture/air_contents = return_air() - if(!air_contents) - return 0 - if(active_hotspot) - if(soh) - if(air_contents.toxins > 0.5 && air_contents.oxygen > 0.5) - if(active_hotspot.temperature < exposed_temperature) - active_hotspot.temperature = exposed_temperature - if(active_hotspot.volume < exposed_volume) - active_hotspot.volume = exposed_volume - return 1 - - var/igniting = 0 - - if((exposed_temperature > PLASMA_MINIMUM_BURN_TEMPERATURE) && air_contents.toxins > 0.5) - igniting = 1 - - if(igniting) - if(air_contents.oxygen < 0.5 || air_contents.toxins < 0.5) - return 0 - - if(parent&&parent.group_processing) - parent.suspend_group_processing() - - active_hotspot = new(src) - active_hotspot.temperature = exposed_temperature - active_hotspot.volume = exposed_volume - - active_hotspot.just_spawned = (current_cycle < air_master.current_cycle) - //remove just_spawned protection if no longer processing this cell - - //start processing quickly if we aren't already - reset_delay() - - return igniting - -//This is the icon for fire on turfs, also helps for nurturing small fires until they are full tile -/obj/effect/hotspot - anchored = 1 - mouse_opacity = 0 - unacidable = 1//So you can't melt fire with acid. - icon = 'icons/effects/fire.dmi' - icon_state = "1" - layer = TURF_LAYER - luminosity = 3 - - var/volume = 125 - var/temperature = FIRE_MINIMUM_TEMPERATURE_TO_EXIST - var/just_spawned = 1 - var/bypassing = 0 - - -/obj/effect/hotspot/proc/perform_exposure() - var/turf/simulated/floor/location = loc - if(!istype(location)) return 0 - - if(volume > CELL_VOLUME*0.95) bypassing = 1 - else bypassing = 0 - - if(bypassing) - if(!just_spawned) - volume = location.air.fuel_burnt*FIRE_GROWTH_RATE - temperature = location.air.temperature - else - var/datum/gas_mixture/affected = location.air.remove_ratio(volume/location.air.volume) - affected.temperature = temperature - affected.react() - temperature = affected.temperature - volume = affected.fuel_burnt*FIRE_GROWTH_RATE - location.assume_air(affected) - - for(var/atom/item in loc) - if(!bypassing) - item.temperature_expose(null, temperature, volume) - if(item) // It's possible that the item is deleted in temperature_expose - item.fire_act(null, temperature, volume) - - return 0 - - -/obj/effect/hotspot/process(turf/simulated/list/possible_spread) - if(just_spawned) - just_spawned = 0 - return 0 - - var/turf/simulated/floor/location = loc - if(!istype(location)) - Kill() - return - - if((temperature < FIRE_MINIMUM_TEMPERATURE_TO_EXIST) || (volume <= 1)) - Kill() - return - - if(location.air.toxins < 0.5 || location.air.oxygen < 0.5) - Kill() - return - - perform_exposure() - - if(location.wet) location.wet = 0 - - if(bypassing) - icon_state = "3" - location.burn_tile() - - //Possible spread due to radiated heat - if(location.air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_SPREAD) - var/radiated_temperature = location.air.temperature*FIRE_SPREAD_RADIOSITY_SCALE - - for(var/turf/simulated/possible_target in possible_spread) - if(!possible_target.active_hotspot) - possible_target.hotspot_expose(radiated_temperature, CELL_VOLUME/4) - - else - if(volume > CELL_VOLUME*0.4) - icon_state = "2" - else - icon_state = "1" - - if(temperature > location.max_fire_temperature_sustained) - location.max_fire_temperature_sustained = temperature - - if(location.heat_capacity && temperature > location.heat_capacity) - location.to_be_destroyed = 1 - /*if(prob(25)) - location.ReplaceWithSpace() - return 0*/ - return 1 - -// Garbage collect itself by nulling reference to it - -/obj/effect/hotspot/proc/Kill() - DestroyTurf() - if(istype(loc, /turf/simulated)) - var/turf/simulated/T = loc - if(T.active_hotspot == src) - T.active_hotspot = null - loc = null - -/obj/effect/hotspot/proc/DestroyTurf() - - if(istype(loc, /turf/simulated)) - var/turf/simulated/T = loc - if(T.to_be_destroyed) - var/chance_of_deletion - if (T.heat_capacity) //beware of division by zero - chance_of_deletion = T.max_fire_temperature_sustained / T.heat_capacity * 8 //there is no problem with prob(23456), min() was redundant --rastaf0 - else - chance_of_deletion = 100 - if(prob(chance_of_deletion)) - T.ChangeTurf(/turf/space) - else - T.to_be_destroyed = 0 - T.max_fire_temperature_sustained = 0 - -/obj/effect/hotspot/New() - ..() - dir = pick(cardinal) - return - -/* -/obj/effect/hotspot/Del() - if (istype(loc, /turf/simulated)) - DestroyTurf() - ..() -*/ \ No newline at end of file + +/atom/proc/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + return null + + + +/turf/proc/hotspot_expose(exposed_temperature, exposed_volume, soh = 0) + return + + +/turf/simulated/hotspot_expose(exposed_temperature, exposed_volume, soh) + var/datum/gas_mixture/air_contents = return_air() + if(!air_contents) + return 0 + if(active_hotspot) + if(soh) + if(air_contents.toxins > 0.5 && air_contents.oxygen > 0.5) + if(active_hotspot.temperature < exposed_temperature) + active_hotspot.temperature = exposed_temperature + if(active_hotspot.volume < exposed_volume) + active_hotspot.volume = exposed_volume + return 1 + + var/igniting = 0 + + if((exposed_temperature > PLASMA_MINIMUM_BURN_TEMPERATURE) && air_contents.toxins > 0.5) + igniting = 1 + + if(igniting) + if(air_contents.oxygen < 0.5 || air_contents.toxins < 0.5) + return 0 + + active_hotspot = new(src) + active_hotspot.temperature = exposed_temperature + active_hotspot.volume = exposed_volume + + active_hotspot.just_spawned = (current_cycle < air_master.current_cycle) + //remove just_spawned protection if no longer processing this cell + air_master.add_to_active(src, 0) + return igniting + +//This is the icon for fire on turfs, also helps for nurturing small fires until they are full tile +/obj/effect/hotspot + anchored = 1 + mouse_opacity = 0 + unacidable = 1//So you can't melt fire with acid. + icon = 'icons/effects/fire.dmi' + icon_state = "1" + layer = TURF_LAYER + luminosity = 3 + + var/volume = 125 + var/temperature = FIRE_MINIMUM_TEMPERATURE_TO_EXIST + var/just_spawned = 1 + var/bypassing = 0 + +/obj/effect/hotspot/New() + ..() + air_master.hotspots += src + +/obj/effect/hotspot/proc/perform_exposure() + var/turf/simulated/floor/location = loc + if(!istype(location) || !(location.air)) return 0 + + if(volume > CELL_VOLUME*0.95) bypassing = 1 + else bypassing = 0 + + if(bypassing) + if(!just_spawned) + volume = location.air.fuel_burnt*FIRE_GROWTH_RATE + temperature = location.air.temperature + else + var/datum/gas_mixture/affected = location.air.remove_ratio(volume/location.air.volume) + affected.temperature = temperature + affected.react() + temperature = affected.temperature + volume = affected.fuel_burnt*FIRE_GROWTH_RATE + location.assume_air(affected) + + for(var/atom/item in loc) + if(item) // It's possible that the item is deleted in temperature_expose + item.fire_act(null, temperature, volume) + + return 0 + + +/obj/effect/hotspot/process() + if(just_spawned) + just_spawned = 0 + return 0 + + var/turf/simulated/floor/location = loc + if(!istype(location)) + Kill() + return + + if(location.excited_group) + location.excited_group.reset_cooldowns() + + if((temperature < FIRE_MINIMUM_TEMPERATURE_TO_EXIST) || (volume <= 1)) + Kill() + return + + if((!(location.air) || location.air.toxins < 0.5 || location.air.oxygen < 0.5)) + Kill() + return + + perform_exposure() + + if(location.wet) location.wet = 0 + + if(bypassing) + icon_state = "3" + location.burn_tile() + + //Possible spread due to radiated heat + if(location.air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_SPREAD) + var/radiated_temperature = location.air.temperature*FIRE_SPREAD_RADIOSITY_SCALE + for(var/direction in cardinal) + if(!(location.atmos_adjacent_turfs & direction)) + continue + var/turf/simulated/T = get_step(src, direction) + if(istype(T) && T.active_hotspot) + T.hotspot_expose(radiated_temperature, CELL_VOLUME/4) + + else + if(volume > CELL_VOLUME*0.4) + icon_state = "2" + else + icon_state = "1" + + if(temperature > location.max_fire_temperature_sustained) + location.max_fire_temperature_sustained = temperature + + if(location.heat_capacity && temperature > location.heat_capacity) + location.to_be_destroyed = 1 + /*if(prob(25)) + location.ReplaceWithSpace() + return 0*/ + return 1 + +// Garbage collect itself by nulling reference to it + +/obj/effect/hotspot/proc/Kill() + air_master.hotspots -= src + DestroyTurf() + qdel(src) + +/obj/effect/hotspot/Destroy() + if(istype(loc, /turf/simulated)) + var/turf/simulated/T = loc + if(T.active_hotspot == src) + T.active_hotspot = null + loc = null + +/obj/effect/hotspot/proc/DestroyTurf() + + if(istype(loc, /turf/simulated)) + var/turf/simulated/T = loc + if(T.to_be_destroyed) + var/chance_of_deletion + if (T.heat_capacity) //beware of division by zero + chance_of_deletion = T.max_fire_temperature_sustained / T.heat_capacity * 8 //there is no problem with prob(23456), min() was redundant --rastaf0 + else + chance_of_deletion = 100 + if(prob(chance_of_deletion)) + T.ChangeTurf(/turf/space) + else + T.to_be_destroyed = 0 + T.max_fire_temperature_sustained = 0 + +/obj/effect/hotspot/New() + ..() + dir = pick(cardinal) + air_update_turf() + return + diff --git a/code/LINDA/LINDA_system.dm b/code/LINDA/LINDA_system.dm new file mode 100644 index 00000000000..faa86e46754 --- /dev/null +++ b/code/LINDA/LINDA_system.dm @@ -0,0 +1,275 @@ +var/kill_air = 0 + +var/global/datum/controller/air_system/air_master + +datum/controller/air_system + var/list/excited_groups = list() + var/list/active_turfs = list() + var/list/hotspots = list() + var/speed = 1 + + //Special functions lists + var/list/turf/simulated/active_super_conductivity = list() + var/list/turf/simulated/high_pressure_delta = list() + + var/current_cycle = 0 + var/update_delay = 5 + var/failed_ticks = 0 + var/tick_progress = 0 + + +/datum/controller/air_system/proc/Setup() + set background = 1 + world << "\red \b Processing Geometry..." + sleep(1) + + var/start_time = world.timeofday + + setup_allturfs() + + setup_overlays() + + world << "\red \b Geometry processed in [(world.timeofday-start_time)/10] seconds!" + +/datum/controller/air_system/proc/process() + if(kill_air) + return 1 + + for(var/i=0,i 20) + EG.dismantle() + +/datum/controller/air_system/proc/setup_overlays() + plmaster = new /obj/effect/overlay() + plmaster.icon = 'icons/effects/tile_effects.dmi' + plmaster.icon_state = "plasma" + plmaster.layer = FLY_LAYER + plmaster.mouse_opacity = 0 + + slmaster = new /obj/effect/overlay() + slmaster.icon = 'icons/effects/tile_effects.dmi' + slmaster.icon_state = "sleeping_agent" + slmaster.layer = FLY_LAYER + slmaster.mouse_opacity = 0 + +/turf/proc/CanAtmosPass(var/turf/T) + if(!istype(T)) return 0 + var/R + if(blocks_air || T.blocks_air) + R = 1 + + for(var/obj/O in contents) + if(!O.CanAtmosPass(T)) + R = 1 + if(O.BlockSuperconductivity()) //the direction and open/closed are already checked on CanAtmosPass() so there are no arguments + var/D = get_dir(src, T) + atmos_supeconductivity |= D + D = get_dir(T, src) + T.atmos_supeconductivity |= D + return 0 //no need to keep going, we got all we asked + + for(var/obj/O in T.contents) + if(!O.CanAtmosPass(src)) + R = 1 + if(O.BlockSuperconductivity()) + var/D = get_dir(src, T) + atmos_supeconductivity |= D + D = get_dir(T, src) + T.atmos_supeconductivity |= D + return 0 + + var/D = get_dir(src, T) + atmos_supeconductivity &= ~D + D = get_dir(T, src) + T.atmos_supeconductivity &= ~D + + if(!R) + return 1 + +atom/movable/proc/CanAtmosPass() + return 1 + +atom/proc/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) + return (!density || !height || air_group) + +turf/CanPass(atom/movable/mover, turf/target, height=1.5,air_group=0) + if(!target) return 0 + + if(istype(mover)) // turf/Enter(...) will perform more advanced checks + return !density + + else // Now, doing more detailed checks for air movement and air group formation + if(target.blocks_air||blocks_air) + return 0 + + for(var/obj/obstacle in src) + if(!obstacle.CanPass(mover, target, height, air_group)) + return 0 + for(var/obj/obstacle in target) + if(!obstacle.CanPass(mover, src, height, air_group)) + return 0 + + return 1 + +/atom/movable/proc/BlockSuperconductivity() // objects that block air and don't let superconductivity act. Only firelocks atm. + return 0 + +/turf/proc/CalculateAdjacentTurfs() + atmos_adjacent_turfs_amount = 0 + for(var/direction in cardinal) + var/turf/T = get_step(src, direction) + if(!istype(T)) + continue + var/counterdir = get_dir(T, src) + if(CanAtmosPass(T)) + atmos_adjacent_turfs_amount += 1 + atmos_adjacent_turfs |= direction + if(!(T.atmos_adjacent_turfs & counterdir)) + T.atmos_adjacent_turfs_amount += 1 + T.atmos_adjacent_turfs |= counterdir + else + atmos_adjacent_turfs &= ~direction + if(T.atmos_adjacent_turfs & counterdir) + T.atmos_adjacent_turfs_amount -= 1 + T.atmos_adjacent_turfs &= ~counterdir + +/atom/movable/proc/air_update_turf(var/command = 0) + 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) + if(!istype(T)) + return + T.atmos_spawn_air(text, amount) + +var/const/SPAWN_HEAT = 1 + +var/const/SPAWN_TOXINS = 4 +var/const/SPAWN_OXYGEN = 8 +var/const/SPAWN_CO2 = 16 +var/const/SPAWN_NITROGEN = 32 + +var/const/SPAWN_N2O = 64 + +var/const/SPAWN_AIR = 256 + +/turf/simulated/proc/atmos_spawn_air(var/flag, var/amount) + if(!text || !amount || !air) + return + + var/datum/gas_mixture/G = new + + if(flag & SPAWN_HEAT) + G.temperature += 1000 + + if(flag & SPAWN_TOXINS) + G.toxins += amount + if(flag & SPAWN_OXYGEN) + G.oxygen += amount + if(flag & SPAWN_CO2) + G.carbon_dioxide += amount + if(flag & SPAWN_NITROGEN) + G.nitrogen += amount + + if(flag & SPAWN_N2O) + var/datum/gas/sleeping_agent/T = new + T.moles += amount + G.trace_gases += T + + if(flag & SPAWN_AIR) + G.oxygen += MOLES_O2STANDARD * amount + G.nitrogen += MOLES_N2STANDARD * amount + + air.merge(G) + air_master.add_to_active(src, 0) \ No newline at end of file diff --git a/code/LINDA/LINDA_turf_tile.dm b/code/LINDA/LINDA_turf_tile.dm new file mode 100644 index 00000000000..e90fd803661 --- /dev/null +++ b/code/LINDA/LINDA_turf_tile.dm @@ -0,0 +1,462 @@ + + +turf + var/pressure_difference = 0 + var/pressure_direction = 0 + var/atmos_adjacent_turfs = 0 + var/atmos_adjacent_turfs_amount = 0 + var/atmos_supeconductivity = 0 + +turf/assume_air(datum/gas_mixture/giver) //use this for machines to adjust air + del(giver) + return 0 + +turf/return_air() + //Create gas mixture to hold data for passing + var/datum/gas_mixture/GM = new + + GM.oxygen = oxygen + GM.carbon_dioxide = carbon_dioxide + GM.nitrogen = nitrogen + GM.toxins = toxins + + GM.temperature = temperature + + return GM + +turf/remove_air(amount as num) + var/datum/gas_mixture/GM = new + + var/sum = oxygen + carbon_dioxide + nitrogen + toxins + if(sum>0) + GM.oxygen = (oxygen/sum)*amount + GM.carbon_dioxide = (carbon_dioxide/sum)*amount + GM.nitrogen = (nitrogen/sum)*amount + GM.toxins = (toxins/sum)*amount + + GM.temperature = temperature + + return GM + + +turf/simulated + var/datum/excited_group/excited_group + var/excited = 0 + var/recently_active = 0 + var/datum/gas_mixture/air + var/archived_cycle = 0 + var/current_cycle = 0 + + var/obj/effect/hotspot/active_hotspot + + var/temperature_archived //USED ONLY FOR SOLIDS + +turf/simulated/New() + ..() + + if(!blocks_air) + air = new + + air.oxygen = oxygen + air.carbon_dioxide = carbon_dioxide + air.nitrogen = nitrogen + air.toxins = toxins + + air.temperature = temperature + +turf/simulated/Destroy() + if(active_hotspot) + qdel(active_hotspot) + ..() + +turf/simulated/assume_air(datum/gas_mixture/giver) + if(!giver) return 0 + var/datum/gas_mixture/receiver = air + if(istype(receiver)) + + air.merge(giver) + + if(air.check_tile_graphic()) + update_visuals(air) + + return 1 + + else return ..() + +turf/simulated/proc/copy_air_with_tile(turf/simulated/T) + if(istype(T) && T.air && air) + air.copy_from(T.air) + +turf/simulated/proc/copy_air(datum/gas_mixture/copy) + if(air && copy) + air.copy_from(copy) + +turf/simulated/return_air() + if(air) + return air + + else + return ..() + +turf/simulated/remove_air(amount as num) + if(air) + var/datum/gas_mixture/removed = null + + removed = air.remove(amount) + + if(air.check_tile_graphic()) + update_visuals(air) + + return removed + + else + return ..() + +turf/simulated/proc/mimic_temperature_solid(turf/model, conduction_coefficient) + var/delta_temperature = (temperature_archived - model.temperature) + if((heat_capacity > 0) && (abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)) + + var/heat = conduction_coefficient*delta_temperature* \ + (heat_capacity*model.heat_capacity/(heat_capacity+model.heat_capacity)) + temperature -= heat/heat_capacity + +turf/simulated/proc/share_temperature_mutual_solid(turf/simulated/sharer, conduction_coefficient) + var/delta_temperature = (temperature_archived - sharer.temperature_archived) + if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER && heat_capacity && sharer.heat_capacity) + + var/heat = conduction_coefficient*delta_temperature* \ + (heat_capacity*sharer.heat_capacity/(heat_capacity+sharer.heat_capacity)) + + temperature -= heat/heat_capacity + sharer.temperature += heat/sharer.heat_capacity + + + + + + + + +/turf/simulated/proc/process_cell() + if(archived_cycle < air_master.current_cycle) //archive self if not already done + archive() + current_cycle = air_master.current_cycle + + var/remove = 1 //set by non simulated turfs who are sharing with this turf + + for(var/direction in cardinal) + if(!(atmos_adjacent_turfs & direction)) + continue + + var/turf/enemy_tile = get_step(src, direction) + + if(istype(enemy_tile,/turf/simulated)) + var/turf/simulated/enemy_simulated = enemy_tile + + if(current_cycle > enemy_simulated.current_cycle) + enemy_simulated.archive() + + /******************* GROUP HANDLING START *****************************************************************/ + + if(enemy_simulated.excited) + if(excited_group) + if(enemy_simulated.excited_group) + if(excited_group != enemy_simulated.excited_group) + excited_group.merge_groups(enemy_simulated.excited_group) //combine groups + share_air(enemy_simulated) //share + else + if((recently_active == 1 && enemy_simulated.recently_active == 1) || !air.compare(enemy_simulated.air)) + excited_group.add_turf(enemy_simulated) //add enemy to our group + share_air(enemy_simulated) //share + else + if(enemy_simulated.excited_group) + if((recently_active == 1 && enemy_simulated.recently_active == 1) || !air.compare(enemy_simulated.air)) + enemy_simulated.excited_group.add_turf(src) //join self to enemy group + share_air(enemy_simulated) //share + else + if((recently_active == 1 && enemy_simulated.recently_active == 1) || !air.compare(enemy_simulated.air)) + var/datum/excited_group/EG = new //generate new group + EG.add_turf(src) + EG.add_turf(enemy_simulated) + share_air(enemy_simulated) //share + else + if(!air.compare(enemy_simulated.air)) //compare if + air_master.add_to_active(enemy_simulated) //excite enemy + if(excited_group) + excited_group.add_turf(enemy_simulated) //add enemy to group + else + var/datum/excited_group/EG = new //generate new group + EG.add_turf(src) + EG.add_turf(enemy_simulated) + share_air(enemy_simulated) //share + + /******************* GROUP HANDLING FINISH *********************************************************************/ + + else + if(!air.check_turf(enemy_tile, atmos_adjacent_turfs_amount)) + var/difference = air.mimic(enemy_tile,,atmos_adjacent_turfs_amount) + if(difference) + if(difference > 0) + consider_pressure_difference(enemy_tile, difference) + else + enemy_tile.consider_pressure_difference(src, difference) + remove = 0 + if(excited_group) + last_share_check() + + air.react() + + if(air.check_tile_graphic()) + update_visuals(air) + + if(air.temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST) + hotspot_expose(air.temperature, CELL_VOLUME) + for(var/atom/movable/item in src) + item.temperature_expose(air, air.temperature, CELL_VOLUME) + temperature_expose(air, air.temperature, CELL_VOLUME) + + if(air.temperature > MINIMUM_TEMPERATURE_START_SUPERCONDUCTION) + if(consider_superconductivity(starting = 1)) + remove = 0 + + if(!excited_group && remove == 1) + air_master.remove_from_active(src) + + +/turf/simulated/proc/archive() + if(air) //For open space like floors + air.archive() + temperature_archived = temperature + archived_cycle = air_master.current_cycle + +/turf/simulated/proc/update_visuals(datum/gas_mixture/model) + overlays.Cut() + var/siding_icon_state = return_siding_icon_state() + if(siding_icon_state) + overlays += image('icons/turf/floors.dmi',siding_icon_state) + switch(model.graphic) + if("plasma") + overlays.Add(plmaster) + if("sleeping_agent") + overlays.Add(slmaster) + +/turf/simulated/proc/share_air(var/turf/simulated/T) + if(T.current_cycle < current_cycle) + var/difference + difference = air.share(T.air, atmos_adjacent_turfs_amount) + if(difference) + if(difference > 0) + consider_pressure_difference(T, difference) + else + T.consider_pressure_difference(src, difference) + last_share_check() + +/turf/proc/consider_pressure_difference(var/turf/simulated/T, var/difference) + air_master.high_pressure_delta |= src + if(difference > pressure_difference) + pressure_direction = get_dir(src, T) + pressure_difference = difference + +/turf/simulated/proc/last_share_check() + if(air.last_share > MINIMUM_AIR_TO_SUSPEND) + excited_group.reset_cooldowns() + +/turf/proc/high_pressure_movements() + for(var/atom/movable/M in src) + M.experience_pressure_difference(pressure_difference, pressure_direction) + + + + +atom/movable/var/pressure_resistance = 5 +atom/movable/var/last_forced_movement = 0 + +atom/movable/proc/experience_pressure_difference(pressure_difference, direction) + if(last_forced_movement >= air_master.current_cycle+2) + return 0 + else if(!anchored) + if(pressure_difference > pressure_resistance) + last_forced_movement = air_master.current_cycle + spawn step(src, direction) + return 1 + + + + +/datum/excited_group + var/list/turf_list = list() + var/breakdown_cooldown = 0 + +/datum/excited_group/New() + if(air_master) + air_master.excited_groups += src + +/datum/excited_group/proc/add_turf(var/turf/simulated/T) + turf_list += T + T.excited_group = src + T.recently_active = 1 + reset_cooldowns() + +/datum/excited_group/proc/merge_groups(var/datum/excited_group/E) + if(turf_list.len > E.turf_list.len) + air_master.excited_groups -= E + for(var/turf/simulated/T in E.turf_list) + T.excited_group = src + turf_list += T + reset_cooldowns() + else + air_master.excited_groups -= src + for(var/turf/simulated/T in turf_list) + T.excited_group = E + E.turf_list += T + E.reset_cooldowns() + +/datum/excited_group/proc/reset_cooldowns() + breakdown_cooldown = 0 + +/datum/excited_group/proc/self_breakdown() + var/datum/gas_mixture/A = new + var/datum/gas/sleeping_agent/S = new + A.trace_gases += S + for(var/turf/simulated/T in turf_list) + if(T == null || !istype(T)) return + A.oxygen += T.air.oxygen + A.carbon_dioxide+= T.air.carbon_dioxide + A.nitrogen += T.air.nitrogen + A.toxins += T.air.toxins + + if(T.air.trace_gases.len) + for(var/datum/gas/N in T.air.trace_gases) + S.moles += N.moles + + for(var/turf/simulated/T in turf_list) + T.air.oxygen = A.oxygen/turf_list.len + T.air.carbon_dioxide= A.carbon_dioxide/turf_list.len + T.air.nitrogen = A.nitrogen/turf_list.len + T.air.toxins = A.toxins/turf_list.len + + if(S.moles > 0) + if(T.air.trace_gases.len) + for(var/datum/gas/G in T.air.trace_gases) + G.moles = S.moles/turf_list.len + else + var/datum/gas/sleeping_agent/G = new + G.moles = S.moles/turf_list.len + T.air.trace_gases += G + + if(T.air.check_tile_graphic()) + T.update_visuals(T.air) + + +/datum/excited_group/proc/dismantle() + for(var/turf/simulated/T in turf_list) + T.excited = 0 + T.recently_active = 0 + air_master.active_turfs -= T + air_master.excited_groups -= src + +/datum/excited_group/proc/garbage_collect() + for(var/turf/simulated/T in turf_list) + T.excited_group = null + turf_list.Cut() + air_master.excited_groups -= src + + + + + + + + + + +turf/simulated/proc/super_conduct() + var/conductivity_directions = 0 + if(blocks_air) + //Does not participate in air exchange, so will conduct heat across all four borders at this time + conductivity_directions = NORTH|SOUTH|EAST|WEST + + if(archived_cycle < air_master.current_cycle) + archive() + else + //Does particate in air exchange so only consider directions not considered during process_cell() + for(var/direction in cardinal) + if(!(atmos_adjacent_turfs & direction) && !(atmos_supeconductivity & direction)) + conductivity_directions += direction + + if(conductivity_directions>0) + //Conduct with tiles around me + for(var/direction in cardinal) + if(conductivity_directions&direction) + var/turf/neighbor = get_step(src,direction) + + if(!neighbor.thermal_conductivity) + continue + + if(istype(neighbor, /turf/simulated)) //anything under this subtype will share in the exchange + var/turf/simulated/T = neighbor + + if(T.archived_cycle < air_master.current_cycle) + T.archive() + + if(T.air) + if(air) //Both tiles are open + air.temperature_share(T.air, WINDOW_HEAT_TRANSFER_COEFFICIENT) + else //Solid but neighbor is open + T.air.temperature_turf_share(src, T.thermal_conductivity) + air_master.add_to_active(T, 0) + else + if(air) //Open but neighbor is solid + air.temperature_turf_share(T, T.thermal_conductivity) + else //Both tiles are solid + share_temperature_mutual_solid(T, T.thermal_conductivity) + T.temperature_expose(null, T.temperature, null) + + T.consider_superconductivity() + + else + if(air) //Open + air.temperature_mimic(neighbor, neighbor.thermal_conductivity) + else + mimic_temperature_solid(neighbor, neighbor.thermal_conductivity) + + radiate_to_spess() + + //Conduct with air on my tile if I have it + if(air) + air.temperature_turf_share(src, thermal_conductivity) + + //Make sure still hot enough to continue conducting heat + if(air.temperature < MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION) + air_master.active_super_conductivity -= src + return 0 + + else + if(temperature < MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION) + air_master.active_super_conductivity -= src + return 0 + +turf/simulated/proc/consider_superconductivity(starting) + if(!thermal_conductivity) + return 0 + + if(air) + if(air.temperature < (starting?MINIMUM_TEMPERATURE_START_SUPERCONDUCTION:MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION)) + return 0 + if(air.heat_capacity() < M_CELL_WITH_RATIO) // Was: MOLES_CELLSTANDARD*0.1*0.05 Since there are no variables here we can make this a constant. + return 0 + else + if(temperature < (starting?MINIMUM_TEMPERATURE_START_SUPERCONDUCTION:MINIMUM_TEMPERATURE_FOR_SUPERCONDUCTION)) + return 0 + + air_master.active_super_conductivity |= src + return 1 + +turf/simulated/proc/radiate_to_spess() //Radiate excess tile heat to space + if(temperature > T0C) //Considering 0 degC as te break even point for radiation in and out + var/delta_temperature = (temperature_archived - 2.7) //hardcoded space temperature + if((heat_capacity > 0) && (abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER)) + + var/heat = thermal_conductivity*delta_temperature* \ + (heat_capacity*700000/(heat_capacity+700000)) //700000 is the heat_capacity from a space turf, hardcoded here + temperature -= heat/heat_capacity \ No newline at end of file diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 43f4808a076..c269df248b5 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -967,13 +967,11 @@ proc/anim(turf/location as turf,target as mob|obj,a_icon,a_icon_state as text,fl X.icon_state = old_icon_state1 X.icon = old_icon1 //Shuttle floors are in shuttle.dmi while the defaults are floors.dmi - var/turf/simulated/ST = T - if(istype(ST) && ST.zone) - var/turf/simulated/SX = X - if(!SX.air) - SX.make_air() - SX.air.copy_from(ST.zone.air) - ST.zone.remove(ST) + // Give the new turf our air, if simulated + if(istype(X, /turf/simulated) && istype(T, /turf/simulated)) + var/turf/simulated/sim = X + sim.copy_air_with_tile(T) + /* Quick visual fix for some weird shuttle corner artefacts when on transit space tiles */ if(direction && findtext(X.icon_state, "swall_s")) @@ -1034,28 +1032,16 @@ proc/anim(turf/location as turf,target as mob|obj,a_icon,a_icon_state as text,fl refined_trg -= B continue moving - var/list/doors = new/list() - if(toupdate.len) for(var/turf/simulated/T1 in toupdate) - for(var/obj/machinery/door/D2 in T1) - doors += D2 - /*if(T1.parent) - air_master.groups_to_rebuild += T1.parent - else - air_master.tiles_to_update += T1*/ + T1.CalculateAdjacentTurfs() + air_master.add_to_active(T1,1) if(fromupdate.len) for(var/turf/simulated/T2 in fromupdate) - for(var/obj/machinery/door/D2 in T2) - doors += D2 - /*if(T2.parent) - air_master.groups_to_rebuild += T2.parent - else - air_master.tiles_to_update += T2*/ + T2.CalculateAdjacentTurfs() + air_master.add_to_active(T2,1) - for(var/obj/O in doors) - O:update_nearby_tiles(1) @@ -1199,22 +1185,10 @@ proc/DuplicateObject(obj/original, var/perfectcopy = 0 , var/sameloc = 0) - - var/list/doors = new/list() - if(toupdate.len) for(var/turf/simulated/T1 in toupdate) - for(var/obj/machinery/door/D2 in T1) - doors += D2 - /*if(T1.parent) - air_master.groups_to_rebuild += T1.parent - else - air_master.tiles_to_update += T1*/ - - for(var/obj/O in doors) - O:update_nearby_tiles(1) - - + T1.CalculateAdjacentTurfs() + air_master.add_to_active(T1,1) return copiedobjs diff --git a/code/controllers/Processes/air.dm b/code/controllers/Processes/air.dm index d8ca38844a0..3d45fa77b76 100644 --- a/code/controllers/Processes/air.dm +++ b/code/controllers/Processes/air.dm @@ -8,7 +8,7 @@ /datum/controller/process/air/doWork() if(!air_processing_killed) - if(!air_master.Tick()) //Runtimed. + if(!air_master.process()) //Runtimed. air_master.failed_ticks++ if(air_master.failed_ticks > 5) diff --git a/code/controllers/Processes/mob.dm b/code/controllers/Processes/mob.dm index b3765b0cf9c..9eff6b9c007 100644 --- a/code/controllers/Processes/mob.dm +++ b/code/controllers/Processes/mob.dm @@ -5,6 +5,9 @@ name = "mob" schedule_interval = 20 // every 2 seconds updateQueueInstance = new + if(!mob_master) + mob_master = new + mob_master.Setup() /datum/controller/process/mob/started() ..() @@ -18,3 +21,17 @@ if(updateQueueInstance) updateQueueInstance.init(mob_list, "Life") updateQueueInstance.Run() + mob_master.process() + +var/global/datum/controller/mob_system/mob_master + +/datum/controller/mob_system + var/current_cycle + var/starttime + +/datum/controller/mob_system/proc/Setup() + world << "\red Mob ticker starting up." + starttime = world.timeofday + +/datum/controller/mob_system/proc/process() + current_cycle++ \ No newline at end of file diff --git a/code/controllers/master_controller.dm b/code/controllers/master_controller.dm index 963e01b7260..c1f46efe5ad 100644 --- a/code/controllers/master_controller.dm +++ b/code/controllers/master_controller.dm @@ -152,13 +152,13 @@ datum/controller/game_controller/proc/process() air_master.current_cycle++ // if(!air_master.tick()) Runtimed. - if(!air_master.Tick()) + if(!air_master.process()) air_master.failed_ticks++ if(air_master.failed_ticks > 5) world << "RUNTIMES IN ATMOS TICKER. Killing air simulation!" - world.log << "### ZAS SHUTDOWN" - message_admins("ZASALERT: unable to run [air_master.tick_progress], shutting down!") - log_admin("ZASALERT: unable run zone/process() -- [air_master.tick_progress]") + world.log << "### LINDA SHUTDOWN" + message_admins("LINDAALERT: unable to run [air_master.tick_progress], shutting down!") + log_admin("LINDAALERT: unable run zone/process() -- [air_master.tick_progress]") air_processing_killed = 1 air_master.failed_ticks = 0 air_cost = (world.timeofday - timer) / 10 diff --git a/code/FEA/FEA_gas_mixture.dm b/code/datums/gas_mixture.dm similarity index 93% rename from code/FEA/FEA_gas_mixture.dm rename to code/datums/gas_mixture.dm index 6beeffc1870..7bdd0cf0abc 100644 --- a/code/FEA/FEA_gas_mixture.dm +++ b/code/datums/gas_mixture.dm @@ -1,933 +1,961 @@ -/* -What are the archived variables for? - Calculations are done using the archived variables with the results merged into the regular variables. - This prevents race conditions that arise based on the order of tile processing. -*/ - -#define SPECIFIC_HEAT_TOXIN 200 -#define SPECIFIC_HEAT_AIR 20 -#define SPECIFIC_HEAT_CDO 30 -#define HEAT_CAPACITY_CALCULATION(oxygen,carbon_dioxide,nitrogen,toxins) \ - (carbon_dioxide*SPECIFIC_HEAT_CDO + (oxygen+nitrogen)*SPECIFIC_HEAT_AIR + toxins*SPECIFIC_HEAT_TOXIN) - -#define MINIMUM_HEAT_CAPACITY 0.0003 -#define QUANTIZE(variable) (round(variable,0.0001)) - -/datum/gas - sleeping_agent - specific_heat = 40 - - oxygen_agent_b - specific_heat = 300 - - volatile_fuel - specific_heat = 30 - - var/moles = 0 - var/specific_heat = 0 - - var/moles_archived = 0 - - -/datum/gas_mixture - var/oxygen = 0 - var/carbon_dioxide = 0 - var/nitrogen = 0 - var/toxins = 0 - - var/volume = CELL_VOLUME - - var/temperature = 0 //in Kelvin, use calculate_temperature() to modify - - var/group_multiplier = 1 - //Size of the group this gas_mixture is representing. - //=1 for singletons - - var/graphic - - var/list/datum/gas/trace_gases = list() - - - var/tmp/oxygen_archived - var/tmp/carbon_dioxide_archived - var/tmp/nitrogen_archived - var/tmp/toxins_archived - - var/tmp/temperature_archived - - var/tmp/graphic_archived - var/tmp/fuel_burnt = 0 - - //PV=nRT - related procedures - proc/heat_capacity() - var/heat_capacity = HEAT_CAPACITY_CALCULATION(oxygen,carbon_dioxide,nitrogen,toxins) - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - heat_capacity += trace_gas.moles*trace_gas.specific_heat - return heat_capacity - - - proc/heat_capacity_archived() - var/heat_capacity_archived = HEAT_CAPACITY_CALCULATION(oxygen_archived,carbon_dioxide_archived,nitrogen_archived,toxins_archived) - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - heat_capacity_archived += trace_gas.moles_archived*trace_gas.specific_heat - return heat_capacity_archived - - - proc/total_moles() - var/moles = oxygen + carbon_dioxide + nitrogen + toxins - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - moles += trace_gas.moles - return moles - - - proc/return_pressure() - if(volume>0) - return total_moles()*R_IDEAL_GAS_EQUATION*temperature/volume - return 0 - - - proc/return_temperature() - return temperature - - - proc/return_volume() - return max(0, volume) - - - proc/thermal_energy() - return temperature*heat_capacity() - - - //Procedures used for very specific events - proc/check_tile_graphic() - //returns 1 if graphic changed - graphic = null - if(toxins > MOLES_PLASMA_VISIBLE) - graphic = "plasma" - else - var/datum/gas/sleeping_agent = locate(/datum/gas/sleeping_agent) in trace_gases - if(sleeping_agent && (sleeping_agent.moles > 1)) - graphic = "sleeping_agent" - else - graphic = null - - return graphic != graphic_archived - - proc/react(atom/dump_location) - var/reacting = 0 //set to 1 if a notable reaction occured (used by pipe_network) - - if(trace_gases.len > 0) - if(temperature > 900) - if(toxins > MINIMUM_HEAT_CAPACITY && carbon_dioxide > MINIMUM_HEAT_CAPACITY) - var/datum/gas/oxygen_agent_b/trace_gas = locate(/datum/gas/oxygen_agent_b/) in trace_gases - if(trace_gas) - var/reaction_rate = min(carbon_dioxide*0.75, toxins*0.25, trace_gas.moles*0.05) - - carbon_dioxide -= reaction_rate - oxygen += reaction_rate - - trace_gas.moles -= reaction_rate*0.05 - - temperature -= (reaction_rate*20000)/heat_capacity() - - reacting = 1 - - fuel_burnt = 0 - if(temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST) - //world << "pre [temperature], [oxygen], [toxins]" - if(fire() > 0) - reacting = 1 - //world << "post [temperature], [oxygen], [toxins]" - - return reacting - - proc/fire() - var/energy_released = 0 - var/old_heat_capacity = heat_capacity() - - var/datum/gas/volatile_fuel/fuel_store = locate(/datum/gas/volatile_fuel/) in trace_gases - if(fuel_store) //General volatile gas burn - var/burned_fuel = 0 - - if(oxygen < fuel_store.moles) - burned_fuel = oxygen - fuel_store.moles -= burned_fuel - oxygen = 0 - else - burned_fuel = fuel_store.moles - oxygen -= fuel_store.moles - trace_gases -= fuel_store - fuel_store = null - - energy_released += FIRE_CARBON_ENERGY_RELEASED * burned_fuel - carbon_dioxide += burned_fuel - fuel_burnt += burned_fuel - - //Handle plasma burning - if(toxins > MINIMUM_HEAT_CAPACITY) - var/plasma_burn_rate = 0 - var/oxygen_burn_rate = 0 - //more plasma released at higher temperatures - var/temperature_scale - if(temperature > PLASMA_UPPER_TEMPERATURE) - temperature_scale = 1 - else - temperature_scale = (temperature-PLASMA_MINIMUM_BURN_TEMPERATURE)/(PLASMA_UPPER_TEMPERATURE-PLASMA_MINIMUM_BURN_TEMPERATURE) - if(temperature_scale > 0) - oxygen_burn_rate = 1.4 - temperature_scale - if(oxygen > toxins*PLASMA_OXYGEN_FULLBURN) - plasma_burn_rate = (toxins*temperature_scale)/4 - else - plasma_burn_rate = (temperature_scale*(oxygen/PLASMA_OXYGEN_FULLBURN))/4 - if(plasma_burn_rate > MINIMUM_HEAT_CAPACITY) - toxins -= plasma_burn_rate - oxygen -= plasma_burn_rate*oxygen_burn_rate - carbon_dioxide += plasma_burn_rate - - energy_released += FIRE_PLASMA_ENERGY_RELEASED * (plasma_burn_rate) - - fuel_burnt += (plasma_burn_rate)*(1+oxygen_burn_rate) - - if(energy_released > 0) - var/new_heat_capacity = heat_capacity() - if(new_heat_capacity > MINIMUM_HEAT_CAPACITY) - temperature = (temperature*old_heat_capacity + energy_released)/new_heat_capacity - - return fuel_burnt - - proc/archive() - //Update archived versions of variables - //Returns: 1 in all cases - - proc/merge(datum/gas_mixture/giver) - //Merges all air from giver into self. Deletes giver. - //Returns: 1 on success (no failure cases yet) - - proc/check_then_merge(datum/gas_mixture/giver) - //Similar to merge(...) but first checks to see if the amount of air assumed is small enough - // that group processing is still accurate for source (aborts if not) - //Returns: 1 on successful merge, 0 if the check failed - - proc/remove(amount) - //Proportionally removes amount of gas from the gas_mixture - //Returns: gas_mixture with the gases removed - - proc/remove_ratio(ratio) - //Proportionally removes amount of gas from the gas_mixture - //Returns: gas_mixture with the gases removed - - proc/subtract(datum/gas_mixture/right_side) - //Subtracts right_side from air_mixture. Used to help turfs mingle - - proc/check_then_remove(amount) - //Similar to remove(...) but first checks to see if the amount of air removed is small enough - // that group processing is still accurate for source (aborts if not) - //Returns: gas_mixture with the gases removed or null - - proc/copy_from(datum/gas_mixture/sample) - //Copies variables from sample - - proc/share(datum/gas_mixture/sharer) - //Performs air sharing calculations between two gas_mixtures assuming only 1 boundary length - //Return: amount of gas exchanged (+ if sharer received) - - proc/mimic(turf/model) - //Similar to share(...), except the model is not modified - //Return: amount of gas exchanged - - proc/check_gas_mixture(datum/gas_mixture/sharer) - //Returns: 0 if the self-check failed then -1 if sharer-check failed then 1 if both checks pass - - proc/check_turf(turf/model) - //Returns: 0 if self-check failed or 1 if check passes - - // check_me_then_share(datum/gas_mixture/sharer) - //Similar to share(...) but first checks to see if amount of air moved is small enough - // that group processing is still accurate for source (aborts if not) - //Returns: 1 on successful share, 0 if the check failed - - // check_me_then_mimic(turf/model) - //Similar to mimic(...) but first checks to see if amount of air moved is small enough - // that group processing is still accurate (aborts if not) - //Returns: 1 on successful mimic, 0 if the check failed - - // check_both_then_share(datum/gas_mixture/sharer) - //Similar to check_me_then_share(...) but also checks to see if amount of air moved is small enough - // that group processing is still accurate for the sharer (aborts if not) - //Returns: 0 if the self-check failed then -1 if sharer-check failed then 1 if successful share - - - proc/temperature_mimic(turf/model, conduction_coefficient) - - proc/temperature_share(datum/gas_mixture/sharer, conduction_coefficient) - - proc/temperature_turf_share(turf/simulated/sharer, conduction_coefficient) - - - proc/check_me_then_temperature_mimic(turf/model, conduction_coefficient) - - proc/check_me_then_temperature_share(datum/gas_mixture/sharer, conduction_coefficient) - - proc/check_both_then_temperature_share(datum/gas_mixture/sharer, conduction_coefficient) - - proc/check_me_then_temperature_turf_share(turf/simulated/sharer, conduction_coefficient) - - proc/compare(datum/gas_mixture/sample) - //Compares sample to self to see if within acceptable ranges that group processing may be enabled - - archive() - oxygen_archived = oxygen - carbon_dioxide_archived = carbon_dioxide - nitrogen_archived = nitrogen - toxins_archived = toxins - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - trace_gas.moles_archived = trace_gas.moles - - temperature_archived = temperature - - graphic_archived = graphic - - return 1 - - check_then_merge(datum/gas_mixture/giver) - if(!giver) - return 0 - if(((giver.oxygen > MINIMUM_AIR_TO_SUSPEND) && (giver.oxygen >= oxygen*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((giver.carbon_dioxide > MINIMUM_AIR_TO_SUSPEND) && (giver.carbon_dioxide >= carbon_dioxide*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((giver.nitrogen > MINIMUM_AIR_TO_SUSPEND) && (giver.nitrogen >= nitrogen*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((giver.toxins > MINIMUM_AIR_TO_SUSPEND) && (giver.toxins >= toxins*MINIMUM_AIR_RATIO_TO_SUSPEND))) - return 0 - if(abs(giver.temperature - temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) - return 0 - - if(giver.trace_gases.len) - for(var/datum/gas/trace_gas in giver.trace_gases) - var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases - if((trace_gas.moles > MINIMUM_AIR_TO_SUSPEND) && (!corresponding || (trace_gas.moles >= corresponding.moles*MINIMUM_AIR_RATIO_TO_SUSPEND))) - return 0 - - return merge(giver) - - merge(datum/gas_mixture/giver) - if(!giver) - return 0 - - if(abs(temperature-giver.temperature)>MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) - var/self_heat_capacity = heat_capacity()*group_multiplier - var/giver_heat_capacity = giver.heat_capacity()*giver.group_multiplier - var/combined_heat_capacity = giver_heat_capacity + self_heat_capacity - if(combined_heat_capacity != 0) - temperature = (giver.temperature*giver_heat_capacity + temperature*self_heat_capacity)/combined_heat_capacity - - if((group_multiplier>1)||(giver.group_multiplier>1)) - oxygen += giver.oxygen*giver.group_multiplier/group_multiplier - carbon_dioxide += giver.carbon_dioxide*giver.group_multiplier/group_multiplier - nitrogen += giver.nitrogen*giver.group_multiplier/group_multiplier - toxins += giver.toxins*giver.group_multiplier/group_multiplier - else - oxygen += giver.oxygen - carbon_dioxide += giver.carbon_dioxide - nitrogen += giver.nitrogen - toxins += giver.toxins - - if(giver.trace_gases.len) - for(var/datum/gas/trace_gas in giver.trace_gases) - var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases - if(!corresponding) - corresponding = new trace_gas.type() - trace_gases += corresponding - corresponding.moles += trace_gas.moles*giver.group_multiplier/group_multiplier - - // del(giver) - return 1 - - remove(amount) - - var/sum = total_moles() - amount = min(amount,sum) //Can not take more air than tile has! - if(amount <= 0) - return null - - var/datum/gas_mixture/removed = new - - - removed.oxygen = QUANTIZE((oxygen/sum)*amount) - removed.nitrogen = QUANTIZE((nitrogen/sum)*amount) - removed.carbon_dioxide = QUANTIZE((carbon_dioxide/sum)*amount) - removed.toxins = QUANTIZE((toxins/sum)*amount) - - oxygen -= removed.oxygen/group_multiplier - nitrogen -= removed.nitrogen/group_multiplier - carbon_dioxide -= removed.carbon_dioxide/group_multiplier - toxins -= removed.toxins/group_multiplier - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - var/datum/gas/corresponding = new trace_gas.type() - removed.trace_gases += corresponding - - corresponding.moles = (trace_gas.moles/sum)*amount - trace_gas.moles -= corresponding.moles/group_multiplier - - removed.temperature = temperature - - return removed - - remove_ratio(ratio) - - if(ratio <= 0) - return null - - ratio = min(ratio, 1) - - var/datum/gas_mixture/removed = new - - removed.oxygen = QUANTIZE(oxygen*ratio) - removed.nitrogen = QUANTIZE(nitrogen*ratio) - removed.carbon_dioxide = QUANTIZE(carbon_dioxide*ratio) - removed.toxins = QUANTIZE(toxins*ratio) - - oxygen -= removed.oxygen/group_multiplier - nitrogen -= removed.nitrogen/group_multiplier - carbon_dioxide -= removed.carbon_dioxide/group_multiplier - toxins -= removed.toxins/group_multiplier - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - var/datum/gas/corresponding = new trace_gas.type() - removed.trace_gases += corresponding - - corresponding.moles = trace_gas.moles*ratio - trace_gas.moles -= corresponding.moles/group_multiplier - - removed.temperature = temperature - - return removed - - check_then_remove(amount) - - //Since it is all proportional, the check may be done on the gas as a whole - var/sum = total_moles() - amount = min(amount,sum) //Can not take more air than tile has! - - if((amount > MINIMUM_AIR_RATIO_TO_SUSPEND) && (amount > sum*MINIMUM_AIR_RATIO_TO_SUSPEND)) - return 0 - - return remove(amount) - - copy_from(datum/gas_mixture/sample) - oxygen = sample.oxygen - carbon_dioxide = sample.carbon_dioxide - nitrogen = sample.nitrogen - toxins = sample.toxins - - trace_gases.len=null - if(sample.trace_gases.len > 0) - for(var/datum/gas/trace_gas in sample.trace_gases) - var/datum/gas/corresponding = new trace_gas.type() - trace_gases += corresponding - - corresponding.moles = trace_gas.moles - - temperature = sample.temperature - - return 1 - - subtract(datum/gas_mixture/right_side) - oxygen -= right_side.oxygen - carbon_dioxide -= right_side.carbon_dioxide - nitrogen -= right_side.nitrogen - toxins -= right_side.toxins - - if((trace_gases.len > 0)||(right_side.trace_gases.len > 0)) - for(var/datum/gas/trace_gas in right_side.trace_gases) - var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases - if(!corresponding) - corresponding = new trace_gas.type() - trace_gases += corresponding - - corresponding.moles -= trace_gas.moles - - return 1 - - check_gas_mixture(datum/gas_mixture/sharer) - if(!sharer) return 0 - var/delta_oxygen = (oxygen_archived - sharer.oxygen_archived)/5 - var/delta_carbon_dioxide = (carbon_dioxide_archived - sharer.carbon_dioxide_archived)/5 - var/delta_nitrogen = (nitrogen_archived - sharer.nitrogen_archived)/5 - var/delta_toxins = (toxins_archived - sharer.toxins_archived)/5 - - var/delta_temperature = (temperature_archived - sharer.temperature_archived) - - if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= oxygen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= nitrogen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_toxins) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_toxins) >= toxins_archived*MINIMUM_AIR_RATIO_TO_SUSPEND))) - return 0 - - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) - return 0 - - if(sharer.trace_gases.len) - for(var/datum/gas/trace_gas in sharer.trace_gases) - if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND*4) - var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases - if(corresponding) - if(trace_gas.moles_archived >= corresponding.moles_archived*MINIMUM_AIR_RATIO_TO_SUSPEND*4) - return 0 - else - return 0 - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND*4) - if(!locate(trace_gas.type) in sharer.trace_gases) - return 0 - - if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= sharer.oxygen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= sharer.carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= sharer.nitrogen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_toxins) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_toxins) >= sharer.toxins_archived*MINIMUM_AIR_RATIO_TO_SUSPEND))) - return -1 - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND*4) - var/datum/gas/corresponding = locate(trace_gas.type) in sharer.trace_gases - if(corresponding) - if(trace_gas.moles_archived >= corresponding.moles_archived*MINIMUM_AIR_RATIO_TO_SUSPEND*4) - return -1 - else - return -1 - - return 1 - - check_turf(turf/model) - var/delta_oxygen = (oxygen_archived - model.oxygen)/5 - var/delta_carbon_dioxide = (carbon_dioxide_archived - model.carbon_dioxide)/5 - var/delta_nitrogen = (nitrogen_archived - model.nitrogen)/5 - var/delta_toxins = (toxins_archived - model.toxins)/5 - - var/delta_temperature = (temperature_archived - model.temperature) - - if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= oxygen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= nitrogen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ - || ((abs(delta_toxins) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_toxins) >= toxins_archived*MINIMUM_AIR_RATIO_TO_SUSPEND))) - return 0 - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) - return 0 - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND*4) - return 0 - - return 1 - - share(datum/gas_mixture/sharer) - if(!sharer) return 0 - var/delta_oxygen = QUANTIZE(oxygen_archived - sharer.oxygen_archived)/5 - var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - sharer.carbon_dioxide_archived)/5 - var/delta_nitrogen = QUANTIZE(nitrogen_archived - sharer.nitrogen_archived)/5 - var/delta_toxins = QUANTIZE(toxins_archived - sharer.toxins_archived)/5 - - var/delta_temperature = (temperature_archived - sharer.temperature_archived) - - var/old_self_heat_capacity = 0 - var/old_sharer_heat_capacity = 0 - - var/heat_capacity_self_to_sharer = 0 - var/heat_capacity_sharer_to_self = 0 - - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) - - var/delta_air = delta_oxygen+delta_nitrogen - if(delta_air) - var/air_heat_capacity = SPECIFIC_HEAT_AIR*delta_air - if(delta_air > 0) - heat_capacity_self_to_sharer += air_heat_capacity - else - heat_capacity_sharer_to_self -= air_heat_capacity - - if(delta_carbon_dioxide) - var/carbon_dioxide_heat_capacity = SPECIFIC_HEAT_CDO*delta_carbon_dioxide - if(delta_carbon_dioxide > 0) - heat_capacity_self_to_sharer += carbon_dioxide_heat_capacity - else - heat_capacity_sharer_to_self -= carbon_dioxide_heat_capacity - - if(delta_toxins) - var/toxins_heat_capacity = SPECIFIC_HEAT_TOXIN*delta_toxins - if(delta_toxins > 0) - heat_capacity_self_to_sharer += toxins_heat_capacity - else - heat_capacity_sharer_to_self -= toxins_heat_capacity - - old_self_heat_capacity = heat_capacity()*group_multiplier - old_sharer_heat_capacity = sharer.heat_capacity()*sharer.group_multiplier - - oxygen -= delta_oxygen/group_multiplier - sharer.oxygen += delta_oxygen/sharer.group_multiplier - - carbon_dioxide -= delta_carbon_dioxide/group_multiplier - sharer.carbon_dioxide += delta_carbon_dioxide/sharer.group_multiplier - - nitrogen -= delta_nitrogen/group_multiplier - sharer.nitrogen += delta_nitrogen/sharer.group_multiplier - - toxins -= delta_toxins/group_multiplier - sharer.toxins += delta_toxins/sharer.group_multiplier - - var/moved_moles = (delta_oxygen + delta_carbon_dioxide + delta_nitrogen + delta_toxins) - - var/list/trace_types_considered = list() - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - - var/datum/gas/corresponding = locate(trace_gas.type) in sharer.trace_gases - var/delta = 0 - - if(corresponding) - delta = QUANTIZE(trace_gas.moles_archived - corresponding.moles_archived)/5 - else - corresponding = new trace_gas.type() - sharer.trace_gases += corresponding - - delta = trace_gas.moles_archived/5 - - trace_gas.moles -= delta/group_multiplier - corresponding.moles += delta/sharer.group_multiplier - - if(delta) - var/individual_heat_capacity = trace_gas.specific_heat*delta - if(delta > 0) - heat_capacity_self_to_sharer += individual_heat_capacity - else - heat_capacity_sharer_to_self -= individual_heat_capacity - - moved_moles += delta - - trace_types_considered += trace_gas.type - - - if(sharer.trace_gases.len) - for(var/datum/gas/trace_gas in sharer.trace_gases) - if(trace_gas.type in trace_types_considered) continue - else - var/datum/gas/corresponding - var/delta = 0 - - corresponding = new trace_gas.type() - trace_gases += corresponding - - delta = trace_gas.moles_archived/5 - - trace_gas.moles -= delta/sharer.group_multiplier - corresponding.moles += delta/group_multiplier - - //Guaranteed transfer from sharer to self - var/individual_heat_capacity = trace_gas.specific_heat*delta - heat_capacity_sharer_to_self += individual_heat_capacity - - moved_moles += -delta - - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) - var/new_self_heat_capacity = old_self_heat_capacity + heat_capacity_sharer_to_self - heat_capacity_self_to_sharer - var/new_sharer_heat_capacity = old_sharer_heat_capacity + heat_capacity_self_to_sharer - heat_capacity_sharer_to_self - - if(new_self_heat_capacity > MINIMUM_HEAT_CAPACITY) - temperature = (old_self_heat_capacity*temperature - heat_capacity_self_to_sharer*temperature_archived + heat_capacity_sharer_to_self*sharer.temperature_archived)/new_self_heat_capacity - - if(new_sharer_heat_capacity > MINIMUM_HEAT_CAPACITY) - sharer.temperature = (old_sharer_heat_capacity*sharer.temperature-heat_capacity_sharer_to_self*sharer.temperature_archived + heat_capacity_self_to_sharer*temperature_archived)/new_sharer_heat_capacity - - if(abs(old_sharer_heat_capacity) > MINIMUM_HEAT_CAPACITY) - if(abs(new_sharer_heat_capacity/old_sharer_heat_capacity - 1) < 0.10) // <10% change in sharer heat capacity - temperature_share(sharer, OPEN_HEAT_TRANSFER_COEFFICIENT) - - if((delta_temperature > MINIMUM_TEMPERATURE_TO_MOVE) || abs(moved_moles) > MINIMUM_MOLES_DELTA_TO_MOVE) - var/delta_pressure = temperature_archived*(total_moles() + moved_moles) - sharer.temperature_archived*(sharer.total_moles() - moved_moles) - return delta_pressure*R_IDEAL_GAS_EQUATION/volume - - else - return 0 - - mimic(turf/model, border_multiplier) - var/delta_oxygen = QUANTIZE(oxygen_archived - model.oxygen)/5 - var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - model.carbon_dioxide)/5 - var/delta_nitrogen = QUANTIZE(nitrogen_archived - model.nitrogen)/5 - var/delta_toxins = QUANTIZE(toxins_archived - model.toxins)/5 - - var/delta_temperature = (temperature_archived - model.temperature) - - var/heat_transferred = 0 - var/old_self_heat_capacity = 0 - var/heat_capacity_transferred = 0 - - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) - - var/delta_air = delta_oxygen+delta_nitrogen - if(delta_air) - var/air_heat_capacity = SPECIFIC_HEAT_AIR*delta_air - heat_transferred -= air_heat_capacity*model.temperature - heat_capacity_transferred -= air_heat_capacity - - if(delta_carbon_dioxide) - var/carbon_dioxide_heat_capacity = SPECIFIC_HEAT_CDO*delta_carbon_dioxide - heat_transferred -= carbon_dioxide_heat_capacity*model.temperature - heat_capacity_transferred -= carbon_dioxide_heat_capacity - - if(delta_toxins) - var/toxins_heat_capacity = SPECIFIC_HEAT_TOXIN*delta_toxins - heat_transferred -= toxins_heat_capacity*model.temperature - heat_capacity_transferred -= toxins_heat_capacity - - old_self_heat_capacity = heat_capacity()*group_multiplier - - if(border_multiplier) - oxygen -= delta_oxygen*border_multiplier/group_multiplier - carbon_dioxide -= delta_carbon_dioxide*border_multiplier/group_multiplier - nitrogen -= delta_nitrogen*border_multiplier/group_multiplier - toxins -= delta_toxins*border_multiplier/group_multiplier - else - oxygen -= delta_oxygen/group_multiplier - carbon_dioxide -= delta_carbon_dioxide/group_multiplier - nitrogen -= delta_nitrogen/group_multiplier - toxins -= delta_toxins/group_multiplier - - var/moved_moles = (delta_oxygen + delta_carbon_dioxide + delta_nitrogen + delta_toxins) - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - var/delta = 0 - - delta = trace_gas.moles_archived/5 - - if(border_multiplier) - trace_gas.moles -= delta*border_multiplier/group_multiplier - else - trace_gas.moles -= delta/group_multiplier - - var/heat_cap_transferred = delta*trace_gas.specific_heat - heat_transferred += heat_cap_transferred*temperature_archived - heat_capacity_transferred += heat_cap_transferred - moved_moles += delta - - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) - var/new_self_heat_capacity = old_self_heat_capacity - heat_capacity_transferred - if(new_self_heat_capacity > MINIMUM_HEAT_CAPACITY) - if(border_multiplier) - temperature = (old_self_heat_capacity*temperature - heat_capacity_transferred*border_multiplier*temperature_archived)/new_self_heat_capacity - else - temperature = (old_self_heat_capacity*temperature - heat_capacity_transferred*border_multiplier*temperature_archived)/new_self_heat_capacity - - temperature_mimic(model, model.thermal_conductivity, border_multiplier) - - if((delta_temperature > MINIMUM_TEMPERATURE_TO_MOVE) || abs(moved_moles) > MINIMUM_MOLES_DELTA_TO_MOVE) - var/delta_pressure = temperature_archived*(total_moles() + moved_moles) - model.temperature*(model.oxygen+model.carbon_dioxide+model.nitrogen+model.toxins) - return delta_pressure*R_IDEAL_GAS_EQUATION/volume - else - return 0 - - check_both_then_temperature_share(datum/gas_mixture/sharer, conduction_coefficient) - var/delta_temperature = (temperature_archived - sharer.temperature_archived) - - var/self_heat_capacity = heat_capacity_archived() - var/sharer_heat_capacity = sharer.heat_capacity_archived() - - var/self_temperature_delta = 0 - var/sharer_temperature_delta = 0 - - if((sharer_heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) - var/heat = conduction_coefficient*delta_temperature* \ - (self_heat_capacity*sharer_heat_capacity/(self_heat_capacity+sharer_heat_capacity)) - - self_temperature_delta = -heat/(self_heat_capacity*group_multiplier) - sharer_temperature_delta = heat/(sharer_heat_capacity*sharer.group_multiplier) - else - return 1 - - if((abs(self_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \ - && (abs(self_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*temperature_archived)) - return 0 - - if((abs(sharer_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \ - && (abs(sharer_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*sharer.temperature_archived)) - return -1 - - temperature += self_temperature_delta - sharer.temperature += sharer_temperature_delta - - return 1 - //Logic integrated from: temperature_share(sharer, conduction_coefficient) for efficiency - - check_me_then_temperature_share(datum/gas_mixture/sharer, conduction_coefficient) - var/delta_temperature = (temperature_archived - sharer.temperature_archived) - - var/self_heat_capacity = heat_capacity_archived() - var/sharer_heat_capacity = sharer.heat_capacity_archived() - - var/self_temperature_delta = 0 - var/sharer_temperature_delta = 0 - - if((sharer_heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) - var/heat = conduction_coefficient*delta_temperature* \ - (self_heat_capacity*sharer_heat_capacity/(self_heat_capacity+sharer_heat_capacity)) - - self_temperature_delta = -heat/(self_heat_capacity*group_multiplier) - sharer_temperature_delta = heat/(sharer_heat_capacity*sharer.group_multiplier) - else - return 1 - - if((abs(self_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \ - && (abs(self_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*temperature_archived)) - return 0 - - temperature += self_temperature_delta - sharer.temperature += sharer_temperature_delta - - return 1 - //Logic integrated from: temperature_share(sharer, conduction_coefficient) for efficiency - - check_me_then_temperature_turf_share(turf/simulated/sharer, conduction_coefficient) - var/delta_temperature = (temperature_archived - sharer.temperature) - - var/self_temperature_delta = 0 - var/sharer_temperature_delta = 0 - - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) - var/self_heat_capacity = heat_capacity_archived() - - if((sharer.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) - var/heat = conduction_coefficient*delta_temperature* \ - (self_heat_capacity*sharer.heat_capacity/(self_heat_capacity+sharer.heat_capacity)) - - self_temperature_delta = -heat/(self_heat_capacity*group_multiplier) - sharer_temperature_delta = heat/sharer.heat_capacity - else - return 1 - - if((abs(self_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \ - && (abs(self_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*temperature_archived)) - return 0 - - temperature += self_temperature_delta - sharer.temperature += sharer_temperature_delta - - return 1 - //Logic integrated from: temperature_turf_share(sharer, conduction_coefficient) for efficiency - - check_me_then_temperature_mimic(turf/model, conduction_coefficient) - var/delta_temperature = (temperature_archived - model.temperature) - var/self_temperature_delta = 0 - - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) - var/self_heat_capacity = heat_capacity_archived() - - if((model.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) - var/heat = conduction_coefficient*delta_temperature* \ - (self_heat_capacity*model.heat_capacity/(self_heat_capacity+model.heat_capacity)) - - self_temperature_delta = -heat/(self_heat_capacity*group_multiplier) - - if((abs(self_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \ - && (abs(self_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*temperature_archived)) - return 0 - - temperature += self_temperature_delta - - return 1 - //Logic integrated from: temperature_mimic(model, conduction_coefficient) for efficiency - - temperature_share(datum/gas_mixture/sharer, conduction_coefficient) - - var/delta_temperature = (temperature_archived - sharer.temperature_archived) - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) - var/self_heat_capacity = heat_capacity_archived() - var/sharer_heat_capacity = sharer.heat_capacity_archived() - - if((sharer_heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) - var/heat = conduction_coefficient*delta_temperature* \ - (self_heat_capacity*sharer_heat_capacity/(self_heat_capacity+sharer_heat_capacity)) - - temperature -= heat/(self_heat_capacity*group_multiplier) - sharer.temperature += heat/(sharer_heat_capacity*sharer.group_multiplier) - - temperature_mimic(turf/model, conduction_coefficient, border_multiplier) - var/delta_temperature = (temperature - model.temperature) - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) - var/self_heat_capacity = heat_capacity()//_archived() - - if((model.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) - var/heat = conduction_coefficient*delta_temperature* \ - (self_heat_capacity*model.heat_capacity/(self_heat_capacity+model.heat_capacity)) - - if(border_multiplier) - temperature -= heat*border_multiplier/(self_heat_capacity*group_multiplier) - else - temperature -= heat/(self_heat_capacity*group_multiplier) - - temperature_turf_share(turf/simulated/sharer, conduction_coefficient) - var/delta_temperature = (temperature_archived - sharer.temperature) - if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) - var/self_heat_capacity = heat_capacity() - - if((sharer.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) - var/heat = conduction_coefficient*delta_temperature* \ - (self_heat_capacity*sharer.heat_capacity/(self_heat_capacity+sharer.heat_capacity)) - - temperature -= heat/(self_heat_capacity*group_multiplier) - sharer.temperature += heat/sharer.heat_capacity - - compare(datum/gas_mixture/sample) - if((abs(oxygen-sample.oxygen) > MINIMUM_AIR_TO_SUSPEND) && \ - ((oxygen < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.oxygen) || (oxygen > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.oxygen))) - return 0 - if((abs(nitrogen-sample.nitrogen) > MINIMUM_AIR_TO_SUSPEND) && \ - ((nitrogen < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.nitrogen) || (nitrogen > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.nitrogen))) - return 0 - if((abs(carbon_dioxide-sample.carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && \ - ((carbon_dioxide < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.carbon_dioxide) || (oxygen > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.carbon_dioxide))) - return 0 - if((abs(toxins-sample.toxins) > MINIMUM_AIR_TO_SUSPEND) && \ - ((toxins < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.toxins) || (toxins > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.toxins))) - return 0 - - if(total_moles() > MINIMUM_AIR_TO_SUSPEND) - if((abs(temperature-sample.temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) && \ - ((temperature < (1-MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND)*sample.temperature) || (temperature > (1+MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND)*sample.temperature))) - //world << "temp fail [temperature] & [sample.temperature]" - return 0 - - if(sample.trace_gases.len) - for(var/datum/gas/trace_gas in sample.trace_gases) - if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND) - var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases - if(corresponding) - if((abs(trace_gas.moles - corresponding.moles) > MINIMUM_AIR_TO_SUSPEND) && \ - ((corresponding.moles < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*trace_gas.moles) || (corresponding.moles > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*trace_gas.moles))) - return 0 - else - return 0 - - if(trace_gases.len) - for(var/datum/gas/trace_gas in trace_gases) - if(trace_gas.moles > MINIMUM_AIR_TO_SUSPEND) - var/datum/gas/corresponding = locate(trace_gas.type) in sample.trace_gases - if(corresponding) - if((abs(trace_gas.moles - corresponding.moles) > MINIMUM_AIR_TO_SUSPEND) && \ - ((trace_gas.moles < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*corresponding.moles) || (trace_gas.moles > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*corresponding.moles))) - return 0 - else - return 0 + /* +What are the archived variables for? + Calculations are done using the archived variables with the results merged into the regular variables. + This prevents race conditions that arise based on the order of tile processing. +*/ + +#define SPECIFIC_HEAT_TOXIN 200 +#define SPECIFIC_HEAT_AIR 20 +#define SPECIFIC_HEAT_CDO 30 +#define HEAT_CAPACITY_CALCULATION(oxygen,carbon_dioxide,nitrogen,toxins) \ + (carbon_dioxide*SPECIFIC_HEAT_CDO + (oxygen+nitrogen)*SPECIFIC_HEAT_AIR + toxins*SPECIFIC_HEAT_TOXIN) + +#define MINIMUM_HEAT_CAPACITY 0.0003 +#define QUANTIZE(variable) (round(variable,0.0001)) + +/datum/gas + sleeping_agent + specific_heat = 40 + + oxygen_agent_b + specific_heat = 300 + + volatile_fuel + specific_heat = 30 + + var/moles = 0 + var/specific_heat = 0 + + var/moles_archived = 0 + + +/datum/gas_mixture + var/oxygen = 0 + var/carbon_dioxide = 0 + var/nitrogen = 0 + var/toxins = 0 + + var/volume = CELL_VOLUME + + var/temperature = 0 //in Kelvin, use calculate_temperature() to modify + + var/last_share + + var/group_multiplier = 1 + //Size of the group this gas_mixture is representing. + //=1 for singletons + + var/graphic + + var/list/datum/gas/trace_gases = list() + + + var/tmp/oxygen_archived + var/tmp/carbon_dioxide_archived + var/tmp/nitrogen_archived + var/tmp/toxins_archived + + var/tmp/temperature_archived + + var/tmp/graphic_archived + var/tmp/fuel_burnt = 0 + + //PV=nRT - related procedures + proc/heat_capacity() + var/heat_capacity = HEAT_CAPACITY_CALCULATION(oxygen,carbon_dioxide,nitrogen,toxins) + + if(trace_gases.len) + for(var/datum/gas/trace_gas in trace_gases) + heat_capacity += trace_gas.moles*trace_gas.specific_heat + return heat_capacity + + + proc/heat_capacity_archived() + var/heat_capacity_archived = HEAT_CAPACITY_CALCULATION(oxygen_archived,carbon_dioxide_archived,nitrogen_archived,toxins_archived) + + if(trace_gases.len) + for(var/datum/gas/trace_gas in trace_gases) + heat_capacity_archived += trace_gas.moles_archived*trace_gas.specific_heat + return heat_capacity_archived + + + proc/total_moles() + var/moles = oxygen + carbon_dioxide + nitrogen + toxins + + if(trace_gases.len) + for(var/datum/gas/trace_gas in trace_gases) + moles += trace_gas.moles + return moles + + + proc/return_pressure() + if(volume>0) + return total_moles()*R_IDEAL_GAS_EQUATION*temperature/volume + return 0 + + + proc/return_temperature() + return temperature + + + proc/return_volume() + return max(0, volume) + + + proc/thermal_energy() + return temperature*heat_capacity() + + + //Procedures used for very specific events + proc/check_tile_graphic() + //returns 1 if graphic changed + graphic = null + if(toxins > MOLES_PLASMA_VISIBLE) + graphic = "plasma" + else + var/datum/gas/sleeping_agent = locate(/datum/gas/sleeping_agent) in trace_gases + if(sleeping_agent && (sleeping_agent.moles > 1)) + graphic = "sleeping_agent" + else + graphic = null + + return graphic != graphic_archived + + proc/react(atom/dump_location) + var/reacting = 0 //set to 1 if a notable reaction occured (used by pipe_network) + + if(trace_gases.len > 0) + if(temperature > 900) + if(toxins > MINIMUM_HEAT_CAPACITY && carbon_dioxide > MINIMUM_HEAT_CAPACITY) + var/datum/gas/oxygen_agent_b/trace_gas = locate(/datum/gas/oxygen_agent_b/) in trace_gases + if(trace_gas) + var/reaction_rate = min(carbon_dioxide*0.75, toxins*0.25, trace_gas.moles*0.05) + + carbon_dioxide -= reaction_rate + oxygen += reaction_rate + + trace_gas.moles -= reaction_rate*0.05 + + temperature -= (reaction_rate*20000)/heat_capacity() + + reacting = 1 + + fuel_burnt = 0 + if(temperature > FIRE_MINIMUM_TEMPERATURE_TO_EXIST) + //world << "pre [temperature], [oxygen], [toxins]" + if(fire() > 0) + reacting = 1 + //world << "post [temperature], [oxygen], [toxins]" + + return reacting + + proc/fire() + var/energy_released = 0 + var/old_heat_capacity = heat_capacity() + + var/datum/gas/volatile_fuel/fuel_store = locate(/datum/gas/volatile_fuel/) in trace_gases + if(fuel_store) //General volatile gas burn + var/burned_fuel = 0 + + if(oxygen < fuel_store.moles) + burned_fuel = oxygen + fuel_store.moles -= burned_fuel + oxygen = 0 + else + burned_fuel = fuel_store.moles + oxygen -= fuel_store.moles + trace_gases -= fuel_store + fuel_store = null + + energy_released += FIRE_CARBON_ENERGY_RELEASED * burned_fuel + carbon_dioxide += burned_fuel + fuel_burnt += burned_fuel + + //Handle plasma burning + if(toxins > MINIMUM_HEAT_CAPACITY) + var/plasma_burn_rate = 0 + var/oxygen_burn_rate = 0 + //more plasma released at higher temperatures + var/temperature_scale + if(temperature > PLASMA_UPPER_TEMPERATURE) + temperature_scale = 1 + else + temperature_scale = (temperature-PLASMA_MINIMUM_BURN_TEMPERATURE)/(PLASMA_UPPER_TEMPERATURE-PLASMA_MINIMUM_BURN_TEMPERATURE) + if(temperature_scale > 0) + oxygen_burn_rate = 1.4 - temperature_scale + if(oxygen > toxins*PLASMA_OXYGEN_FULLBURN) + plasma_burn_rate = (toxins*temperature_scale)/4 + else + plasma_burn_rate = (temperature_scale*(oxygen/PLASMA_OXYGEN_FULLBURN))/4 + if(plasma_burn_rate > MINIMUM_HEAT_CAPACITY) + toxins -= plasma_burn_rate + oxygen -= plasma_burn_rate*oxygen_burn_rate + carbon_dioxide += plasma_burn_rate + + energy_released += FIRE_PLASMA_ENERGY_RELEASED * (plasma_burn_rate) + + fuel_burnt += (plasma_burn_rate)*(1+oxygen_burn_rate) + + if(energy_released > 0) + var/new_heat_capacity = heat_capacity() + if(new_heat_capacity > MINIMUM_HEAT_CAPACITY) + temperature = (temperature*old_heat_capacity + energy_released)/new_heat_capacity + + return fuel_burnt + + proc/archive() + //Update archived versions of variables + //Returns: 1 in all cases + + proc/merge(datum/gas_mixture/giver) + //Merges all air from giver into self. Deletes giver. + //Returns: 1 on success (no failure cases yet) + + proc/check_then_merge(datum/gas_mixture/giver) + //Similar to merge(...) but first checks to see if the amount of air assumed is small enough + // that group processing is still accurate for source (aborts if not) + //Returns: 1 on successful merge, 0 if the check failed + + proc/remove(amount) + //Proportionally removes amount of gas from the gas_mixture + //Returns: gas_mixture with the gases removed + + proc/remove_ratio(ratio) + //Proportionally removes amount of gas from the gas_mixture + //Returns: gas_mixture with the gases removed + + proc/subtract(datum/gas_mixture/right_side) + //Subtracts right_side from air_mixture. Used to help turfs mingle + + proc/check_then_remove(amount) + //Similar to remove(...) but first checks to see if the amount of air removed is small enough + // that group processing is still accurate for source (aborts if not) + //Returns: gas_mixture with the gases removed or null + + proc/copy_from(datum/gas_mixture/sample) + //Copies variables from sample + + proc/share(datum/gas_mixture/sharer) + //Performs air sharing calculations between two gas_mixtures assuming only 1 boundary length + //Return: amount of gas exchanged (+ if sharer received) + + proc/mimic(turf/model) + //Similar to share(...), except the model is not modified + //Return: amount of gas exchanged + + proc/check_gas_mixture(datum/gas_mixture/sharer) + //Returns: 0 if the self-check failed then -1 if sharer-check failed then 1 if both checks pass + + proc/check_turf(turf/model) + //Returns: 0 if self-check failed or 1 if check passes + + // check_me_then_share(datum/gas_mixture/sharer) + //Similar to share(...) but first checks to see if amount of air moved is small enough + // that group processing is still accurate for source (aborts if not) + //Returns: 1 on successful share, 0 if the check failed + + // check_me_then_mimic(turf/model) + //Similar to mimic(...) but first checks to see if amount of air moved is small enough + // that group processing is still accurate (aborts if not) + //Returns: 1 on successful mimic, 0 if the check failed + + // check_both_then_share(datum/gas_mixture/sharer) + //Similar to check_me_then_share(...) but also checks to see if amount of air moved is small enough + // that group processing is still accurate for the sharer (aborts if not) + //Returns: 0 if the self-check failed then -1 if sharer-check failed then 1 if successful share + + + proc/temperature_mimic(turf/model, conduction_coefficient) + + proc/temperature_share(datum/gas_mixture/sharer, conduction_coefficient) + + proc/temperature_turf_share(turf/simulated/sharer, conduction_coefficient) + + + proc/check_me_then_temperature_mimic(turf/model, conduction_coefficient) + + proc/check_me_then_temperature_share(datum/gas_mixture/sharer, conduction_coefficient) + + proc/check_both_then_temperature_share(datum/gas_mixture/sharer, conduction_coefficient) + + proc/check_me_then_temperature_turf_share(turf/simulated/sharer, conduction_coefficient) + + proc/compare(datum/gas_mixture/sample) + //Compares sample to self to see if within acceptable ranges that group processing may be enabled + + archive() + oxygen_archived = oxygen + carbon_dioxide_archived = carbon_dioxide + nitrogen_archived = nitrogen + toxins_archived = toxins + + if(trace_gases.len) + for(var/datum/gas/trace_gas in trace_gases) + trace_gas.moles_archived = trace_gas.moles + + temperature_archived = temperature + + graphic_archived = graphic + + return 1 + + check_then_merge(datum/gas_mixture/giver) + if(!giver) + return 0 + if(((giver.oxygen > MINIMUM_AIR_TO_SUSPEND) && (giver.oxygen >= oxygen*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((giver.carbon_dioxide > MINIMUM_AIR_TO_SUSPEND) && (giver.carbon_dioxide >= carbon_dioxide*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((giver.nitrogen > MINIMUM_AIR_TO_SUSPEND) && (giver.nitrogen >= nitrogen*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((giver.toxins > MINIMUM_AIR_TO_SUSPEND) && (giver.toxins >= toxins*MINIMUM_AIR_RATIO_TO_SUSPEND))) + return 0 + if(abs(giver.temperature - temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) + return 0 + + if(giver.trace_gases.len) + for(var/datum/gas/trace_gas in giver.trace_gases) + var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases + if((trace_gas.moles > MINIMUM_AIR_TO_SUSPEND) && (!corresponding || (trace_gas.moles >= corresponding.moles*MINIMUM_AIR_RATIO_TO_SUSPEND))) + return 0 + + return merge(giver) + + merge(datum/gas_mixture/giver) + if(!giver) + return 0 + + if(abs(temperature-giver.temperature)>MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) + var/self_heat_capacity = heat_capacity()*group_multiplier + var/giver_heat_capacity = giver.heat_capacity()*giver.group_multiplier + var/combined_heat_capacity = giver_heat_capacity + self_heat_capacity + if(combined_heat_capacity != 0) + temperature = (giver.temperature*giver_heat_capacity + temperature*self_heat_capacity)/combined_heat_capacity + + if((group_multiplier>1)||(giver.group_multiplier>1)) + oxygen += giver.oxygen*giver.group_multiplier/group_multiplier + carbon_dioxide += giver.carbon_dioxide*giver.group_multiplier/group_multiplier + nitrogen += giver.nitrogen*giver.group_multiplier/group_multiplier + toxins += giver.toxins*giver.group_multiplier/group_multiplier + else + oxygen += giver.oxygen + carbon_dioxide += giver.carbon_dioxide + nitrogen += giver.nitrogen + toxins += giver.toxins + + if(giver.trace_gases.len) + for(var/datum/gas/trace_gas in giver.trace_gases) + var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases + if(!corresponding) + corresponding = new trace_gas.type() + trace_gases += corresponding + corresponding.moles += trace_gas.moles*giver.group_multiplier/group_multiplier + + // del(giver) + return 1 + + remove(amount) + + var/sum = total_moles() + amount = min(amount,sum) //Can not take more air than tile has! + if(amount <= 0) + return null + + var/datum/gas_mixture/removed = new + + + removed.oxygen = QUANTIZE((oxygen/sum)*amount) + removed.nitrogen = QUANTIZE((nitrogen/sum)*amount) + removed.carbon_dioxide = QUANTIZE((carbon_dioxide/sum)*amount) + removed.toxins = QUANTIZE((toxins/sum)*amount) + + oxygen -= removed.oxygen/group_multiplier + nitrogen -= removed.nitrogen/group_multiplier + carbon_dioxide -= removed.carbon_dioxide/group_multiplier + toxins -= removed.toxins/group_multiplier + + if(trace_gases.len) + for(var/datum/gas/trace_gas in trace_gases) + var/datum/gas/corresponding = new trace_gas.type() + removed.trace_gases += corresponding + + corresponding.moles = (trace_gas.moles/sum)*amount + trace_gas.moles -= corresponding.moles/group_multiplier + + removed.temperature = temperature + + return removed + + remove_ratio(ratio) + + if(ratio <= 0) + return null + + ratio = min(ratio, 1) + + var/datum/gas_mixture/removed = new + + removed.oxygen = QUANTIZE(oxygen*ratio) + removed.nitrogen = QUANTIZE(nitrogen*ratio) + removed.carbon_dioxide = QUANTIZE(carbon_dioxide*ratio) + removed.toxins = QUANTIZE(toxins*ratio) + + oxygen -= removed.oxygen/group_multiplier + nitrogen -= removed.nitrogen/group_multiplier + carbon_dioxide -= removed.carbon_dioxide/group_multiplier + toxins -= removed.toxins/group_multiplier + + if(trace_gases.len) + for(var/datum/gas/trace_gas in trace_gases) + var/datum/gas/corresponding = new trace_gas.type() + removed.trace_gases += corresponding + + corresponding.moles = trace_gas.moles*ratio + trace_gas.moles -= corresponding.moles/group_multiplier + + removed.temperature = temperature + + return removed + + check_then_remove(amount) + + //Since it is all proportional, the check may be done on the gas as a whole + var/sum = total_moles() + amount = min(amount,sum) //Can not take more air than tile has! + + if((amount > MINIMUM_AIR_RATIO_TO_SUSPEND) && (amount > sum*MINIMUM_AIR_RATIO_TO_SUSPEND)) + return 0 + + return remove(amount) + + copy_from(datum/gas_mixture/sample) + oxygen = sample.oxygen + carbon_dioxide = sample.carbon_dioxide + nitrogen = sample.nitrogen + toxins = sample.toxins + + trace_gases.len=null + if(sample.trace_gases.len > 0) + for(var/datum/gas/trace_gas in sample.trace_gases) + var/datum/gas/corresponding = new trace_gas.type() + trace_gases += corresponding + + corresponding.moles = trace_gas.moles + + temperature = sample.temperature + + return 1 + + subtract(datum/gas_mixture/right_side) + oxygen -= right_side.oxygen + carbon_dioxide -= right_side.carbon_dioxide + nitrogen -= right_side.nitrogen + toxins -= right_side.toxins + + if((trace_gases.len > 0)||(right_side.trace_gases.len > 0)) + for(var/datum/gas/trace_gas in right_side.trace_gases) + var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases + if(!corresponding) + corresponding = new trace_gas.type() + trace_gases += corresponding + + corresponding.moles -= trace_gas.moles + + return 1 + + check_gas_mixture(datum/gas_mixture/sharer) + if(!sharer) return 0 + var/delta_oxygen = (oxygen_archived - sharer.oxygen_archived)/5 + var/delta_carbon_dioxide = (carbon_dioxide_archived - sharer.carbon_dioxide_archived)/5 + var/delta_nitrogen = (nitrogen_archived - sharer.nitrogen_archived)/5 + var/delta_toxins = (toxins_archived - sharer.toxins_archived)/5 + + var/delta_temperature = (temperature_archived - sharer.temperature_archived) + + if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= oxygen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= nitrogen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((abs(delta_toxins) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_toxins) >= toxins_archived*MINIMUM_AIR_RATIO_TO_SUSPEND))) + return 0 + + if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) + return 0 + + if(sharer.trace_gases.len) + for(var/datum/gas/trace_gas in sharer.trace_gases) + if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND*4) + var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases + if(corresponding) + if(trace_gas.moles_archived >= corresponding.moles_archived*MINIMUM_AIR_RATIO_TO_SUSPEND*4) + return 0 + else + return 0 + + if(trace_gases.len) + for(var/datum/gas/trace_gas in trace_gases) + if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND*4) + if(!locate(trace_gas.type) in sharer.trace_gases) + return 0 + + if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= sharer.oxygen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= sharer.carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= sharer.nitrogen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((abs(delta_toxins) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_toxins) >= sharer.toxins_archived*MINIMUM_AIR_RATIO_TO_SUSPEND))) + return -1 + + if(trace_gases.len) + for(var/datum/gas/trace_gas in trace_gases) + if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND*4) + var/datum/gas/corresponding = locate(trace_gas.type) in sharer.trace_gases + if(corresponding) + if(trace_gas.moles_archived >= corresponding.moles_archived*MINIMUM_AIR_RATIO_TO_SUSPEND*4) + return -1 + else + return -1 + + return 1 + + check_turf(turf/model, atmos_adjacent_turfs = 4) + var/delta_oxygen = (oxygen_archived - model.oxygen)/(atmos_adjacent_turfs+1) + var/delta_carbon_dioxide = (carbon_dioxide_archived - model.carbon_dioxide)/(atmos_adjacent_turfs+1) + var/delta_nitrogen = (nitrogen_archived - model.nitrogen)/(atmos_adjacent_turfs+1) + var/delta_toxins = (toxins_archived - model.toxins)/(atmos_adjacent_turfs+1) + + var/delta_temperature = (temperature_archived - model.temperature) + + if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= oxygen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= carbon_dioxide_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= nitrogen_archived*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((abs(delta_toxins) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_toxins) >= toxins_archived*MINIMUM_AIR_RATIO_TO_SUSPEND))) + return 0 + if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) + return 0 + + if(trace_gases.len) + for(var/datum/gas/trace_gas in trace_gases) + if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND*4) + return 0 + + return 1 + + proc/check_turf_total(turf/model) + var/delta_oxygen = (oxygen - model.oxygen) + var/delta_carbon_dioxide = (carbon_dioxide - model.carbon_dioxide) + var/delta_nitrogen = (nitrogen - model.nitrogen) + var/delta_toxins = (toxins - model.toxins) + + var/delta_temperature = (temperature - model.temperature) + + if(((abs(delta_oxygen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_oxygen) >= oxygen*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((abs(delta_carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_carbon_dioxide) >= carbon_dioxide*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((abs(delta_nitrogen) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_nitrogen) >= nitrogen*MINIMUM_AIR_RATIO_TO_SUSPEND)) \ + || ((abs(delta_toxins) > MINIMUM_AIR_TO_SUSPEND) && (abs(delta_toxins) >= toxins*MINIMUM_AIR_RATIO_TO_SUSPEND))) + return 0 + if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) + return 0 + + if(trace_gases.len) + for(var/datum/gas/trace_gas in trace_gases) + if(trace_gas.moles > MINIMUM_AIR_TO_SUSPEND*4) + return 0 + + return 1 + + share(datum/gas_mixture/sharer, var/atmos_adjacent_turfs = 4) + if(!sharer) return 0 + var/delta_oxygen = QUANTIZE(oxygen_archived - sharer.oxygen_archived)/(atmos_adjacent_turfs+1) + var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - sharer.carbon_dioxide_archived)/(atmos_adjacent_turfs+1) + var/delta_nitrogen = QUANTIZE(nitrogen_archived - sharer.nitrogen_archived)/(atmos_adjacent_turfs+1) + var/delta_toxins = QUANTIZE(toxins_archived - sharer.toxins_archived)/(atmos_adjacent_turfs+1) + + var/delta_temperature = (temperature_archived - sharer.temperature_archived) + + var/old_self_heat_capacity = 0 + var/old_sharer_heat_capacity = 0 + + var/heat_capacity_self_to_sharer = 0 + var/heat_capacity_sharer_to_self = 0 + + if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) + + var/delta_air = delta_oxygen+delta_nitrogen + if(delta_air) + var/air_heat_capacity = SPECIFIC_HEAT_AIR*delta_air + if(delta_air > 0) + heat_capacity_self_to_sharer += air_heat_capacity + else + heat_capacity_sharer_to_self -= air_heat_capacity + + if(delta_carbon_dioxide) + var/carbon_dioxide_heat_capacity = SPECIFIC_HEAT_CDO*delta_carbon_dioxide + if(delta_carbon_dioxide > 0) + heat_capacity_self_to_sharer += carbon_dioxide_heat_capacity + else + heat_capacity_sharer_to_self -= carbon_dioxide_heat_capacity + + if(delta_toxins) + var/toxins_heat_capacity = SPECIFIC_HEAT_TOXIN*delta_toxins + if(delta_toxins > 0) + heat_capacity_self_to_sharer += toxins_heat_capacity + else + heat_capacity_sharer_to_self -= toxins_heat_capacity + + old_self_heat_capacity = heat_capacity()*group_multiplier + old_sharer_heat_capacity = sharer.heat_capacity()*sharer.group_multiplier + + oxygen -= delta_oxygen/group_multiplier + sharer.oxygen += delta_oxygen/sharer.group_multiplier + + carbon_dioxide -= delta_carbon_dioxide/group_multiplier + sharer.carbon_dioxide += delta_carbon_dioxide/sharer.group_multiplier + + nitrogen -= delta_nitrogen/group_multiplier + sharer.nitrogen += delta_nitrogen/sharer.group_multiplier + + toxins -= delta_toxins/group_multiplier + sharer.toxins += delta_toxins/sharer.group_multiplier + + var/moved_moles = (delta_oxygen + delta_carbon_dioxide + delta_nitrogen + delta_toxins) + last_share = abs(delta_oxygen) + abs(delta_carbon_dioxide) + abs(delta_nitrogen) + abs(delta_toxins) + + var/list/trace_types_considered = list() + + if(trace_gases.len) + for(var/datum/gas/trace_gas in trace_gases) + + var/datum/gas/corresponding = locate(trace_gas.type) in sharer.trace_gases + var/delta = 0 + + if(corresponding) + delta = QUANTIZE(trace_gas.moles_archived - corresponding.moles_archived)/(atmos_adjacent_turfs+1) + else + corresponding = new trace_gas.type() + sharer.trace_gases += corresponding + + delta = trace_gas.moles_archived/(atmos_adjacent_turfs+1) + + trace_gas.moles -= delta/group_multiplier + corresponding.moles += delta/sharer.group_multiplier + + if(delta) + var/individual_heat_capacity = trace_gas.specific_heat*delta + if(delta > 0) + heat_capacity_self_to_sharer += individual_heat_capacity + else + heat_capacity_sharer_to_self -= individual_heat_capacity + + moved_moles += delta + last_share += abs(delta) + + trace_types_considered += trace_gas.type + + + if(sharer.trace_gases.len) + for(var/datum/gas/trace_gas in sharer.trace_gases) + if(trace_gas.type in trace_types_considered) continue + else + var/datum/gas/corresponding + var/delta = 0 + + corresponding = new trace_gas.type() + trace_gases += corresponding + + delta = trace_gas.moles_archived/5 + + trace_gas.moles -= delta/sharer.group_multiplier + corresponding.moles += delta/group_multiplier + + //Guaranteed transfer from sharer to self + var/individual_heat_capacity = trace_gas.specific_heat*delta + heat_capacity_sharer_to_self += individual_heat_capacity + + moved_moles += -delta + last_share += abs(delta) + + if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) + var/new_self_heat_capacity = old_self_heat_capacity + heat_capacity_sharer_to_self - heat_capacity_self_to_sharer + var/new_sharer_heat_capacity = old_sharer_heat_capacity + heat_capacity_self_to_sharer - heat_capacity_sharer_to_self + + if(new_self_heat_capacity > MINIMUM_HEAT_CAPACITY) + temperature = (old_self_heat_capacity*temperature - heat_capacity_self_to_sharer*temperature_archived + heat_capacity_sharer_to_self*sharer.temperature_archived)/new_self_heat_capacity + + if(new_sharer_heat_capacity > MINIMUM_HEAT_CAPACITY) + sharer.temperature = (old_sharer_heat_capacity*sharer.temperature-heat_capacity_sharer_to_self*sharer.temperature_archived + heat_capacity_self_to_sharer*temperature_archived)/new_sharer_heat_capacity + + if(abs(old_sharer_heat_capacity) > MINIMUM_HEAT_CAPACITY) + if(abs(new_sharer_heat_capacity/old_sharer_heat_capacity - 1) < 0.10) // <10% change in sharer heat capacity + temperature_share(sharer, OPEN_HEAT_TRANSFER_COEFFICIENT) + + if((delta_temperature > MINIMUM_TEMPERATURE_TO_MOVE) || abs(moved_moles) > MINIMUM_MOLES_DELTA_TO_MOVE) + var/delta_pressure = temperature_archived*(total_moles() + moved_moles) - sharer.temperature_archived*(sharer.total_moles() - moved_moles) + return delta_pressure*R_IDEAL_GAS_EQUATION/volume + + mimic(turf/model, border_multiplier, var/atmos_adjacent_turfs = 4) + var/delta_oxygen = QUANTIZE(oxygen_archived - model.oxygen)/(atmos_adjacent_turfs+1) + var/delta_carbon_dioxide = QUANTIZE(carbon_dioxide_archived - model.carbon_dioxide)/(atmos_adjacent_turfs+1) + var/delta_nitrogen = QUANTIZE(nitrogen_archived - model.nitrogen)/(atmos_adjacent_turfs+1) + var/delta_toxins = QUANTIZE(toxins_archived - model.toxins)/(atmos_adjacent_turfs+1) + + var/delta_temperature = (temperature_archived - model.temperature) + + var/heat_transferred = 0 + var/old_self_heat_capacity = 0 + var/heat_capacity_transferred = 0 + + if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) + + var/delta_air = delta_oxygen+delta_nitrogen + if(delta_air) + var/air_heat_capacity = SPECIFIC_HEAT_AIR*delta_air + heat_transferred -= air_heat_capacity*model.temperature + heat_capacity_transferred -= air_heat_capacity + + if(delta_carbon_dioxide) + var/carbon_dioxide_heat_capacity = SPECIFIC_HEAT_CDO*delta_carbon_dioxide + heat_transferred -= carbon_dioxide_heat_capacity*model.temperature + heat_capacity_transferred -= carbon_dioxide_heat_capacity + + if(delta_toxins) + var/toxins_heat_capacity = SPECIFIC_HEAT_TOXIN*delta_toxins + heat_transferred -= toxins_heat_capacity*model.temperature + heat_capacity_transferred -= toxins_heat_capacity + + old_self_heat_capacity = heat_capacity()*group_multiplier + + if(border_multiplier) + oxygen -= delta_oxygen*border_multiplier/group_multiplier + carbon_dioxide -= delta_carbon_dioxide*border_multiplier/group_multiplier + nitrogen -= delta_nitrogen*border_multiplier/group_multiplier + toxins -= delta_toxins*border_multiplier/group_multiplier + else + oxygen -= delta_oxygen/group_multiplier + carbon_dioxide -= delta_carbon_dioxide/group_multiplier + nitrogen -= delta_nitrogen/group_multiplier + toxins -= delta_toxins/group_multiplier + + var/moved_moles = (delta_oxygen + delta_carbon_dioxide + delta_nitrogen + delta_toxins) + last_share = abs(delta_oxygen) + abs(delta_carbon_dioxide) + abs(delta_nitrogen) + abs(delta_toxins) + + if(trace_gases.len) + for(var/datum/gas/trace_gas in trace_gases) + var/delta = 0 + + delta = trace_gas.moles_archived/(atmos_adjacent_turfs+1) + + if(border_multiplier) + trace_gas.moles -= delta*border_multiplier/group_multiplier + else + trace_gas.moles -= delta/group_multiplier + + var/heat_cap_transferred = delta*trace_gas.specific_heat + heat_transferred += heat_cap_transferred*temperature_archived + heat_capacity_transferred += heat_cap_transferred + moved_moles += delta + moved_moles += abs(delta) + + if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) + var/new_self_heat_capacity = old_self_heat_capacity - heat_capacity_transferred + if(new_self_heat_capacity > MINIMUM_HEAT_CAPACITY) + if(border_multiplier) + temperature = (old_self_heat_capacity*temperature - heat_capacity_transferred*border_multiplier*temperature_archived)/new_self_heat_capacity + else + temperature = (old_self_heat_capacity*temperature - heat_capacity_transferred*border_multiplier*temperature_archived)/new_self_heat_capacity + + temperature_mimic(model, model.thermal_conductivity, border_multiplier) + + if((delta_temperature > MINIMUM_TEMPERATURE_TO_MOVE) || abs(moved_moles) > MINIMUM_MOLES_DELTA_TO_MOVE) + var/delta_pressure = temperature_archived*(total_moles() + moved_moles) - model.temperature*(model.oxygen+model.carbon_dioxide+model.nitrogen+model.toxins) + return delta_pressure*R_IDEAL_GAS_EQUATION/volume + else + return 0 + + check_both_then_temperature_share(datum/gas_mixture/sharer, conduction_coefficient) + var/delta_temperature = (temperature_archived - sharer.temperature_archived) + + var/self_heat_capacity = heat_capacity_archived() + var/sharer_heat_capacity = sharer.heat_capacity_archived() + + var/self_temperature_delta = 0 + var/sharer_temperature_delta = 0 + + if((sharer_heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) + var/heat = conduction_coefficient*delta_temperature* \ + (self_heat_capacity*sharer_heat_capacity/(self_heat_capacity+sharer_heat_capacity)) + + self_temperature_delta = -heat/(self_heat_capacity*group_multiplier) + sharer_temperature_delta = heat/(sharer_heat_capacity*sharer.group_multiplier) + else + return 1 + + if((abs(self_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \ + && (abs(self_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*temperature_archived)) + return 0 + + if((abs(sharer_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \ + && (abs(sharer_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*sharer.temperature_archived)) + return -1 + + temperature += self_temperature_delta + sharer.temperature += sharer_temperature_delta + + return 1 + //Logic integrated from: temperature_share(sharer, conduction_coefficient) for efficiency + + check_me_then_temperature_share(datum/gas_mixture/sharer, conduction_coefficient) + var/delta_temperature = (temperature_archived - sharer.temperature_archived) + + var/self_heat_capacity = heat_capacity_archived() + var/sharer_heat_capacity = sharer.heat_capacity_archived() + + var/self_temperature_delta = 0 + var/sharer_temperature_delta = 0 + + if((sharer_heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) + var/heat = conduction_coefficient*delta_temperature* \ + (self_heat_capacity*sharer_heat_capacity/(self_heat_capacity+sharer_heat_capacity)) + + self_temperature_delta = -heat/(self_heat_capacity*group_multiplier) + sharer_temperature_delta = heat/(sharer_heat_capacity*sharer.group_multiplier) + else + return 1 + + if((abs(self_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \ + && (abs(self_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*temperature_archived)) + return 0 + + temperature += self_temperature_delta + sharer.temperature += sharer_temperature_delta + + return 1 + //Logic integrated from: temperature_share(sharer, conduction_coefficient) for efficiency + + check_me_then_temperature_turf_share(turf/simulated/sharer, conduction_coefficient) + var/delta_temperature = (temperature_archived - sharer.temperature) + + var/self_temperature_delta = 0 + var/sharer_temperature_delta = 0 + + if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) + var/self_heat_capacity = heat_capacity_archived() + + if((sharer.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) + var/heat = conduction_coefficient*delta_temperature* \ + (self_heat_capacity*sharer.heat_capacity/(self_heat_capacity+sharer.heat_capacity)) + + self_temperature_delta = -heat/(self_heat_capacity*group_multiplier) + sharer_temperature_delta = heat/sharer.heat_capacity + else + return 1 + + if((abs(self_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \ + && (abs(self_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*temperature_archived)) + return 0 + + temperature += self_temperature_delta + sharer.temperature += sharer_temperature_delta + + return 1 + //Logic integrated from: temperature_turf_share(sharer, conduction_coefficient) for efficiency + + check_me_then_temperature_mimic(turf/model, conduction_coefficient) + var/delta_temperature = (temperature_archived - model.temperature) + var/self_temperature_delta = 0 + + if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) + var/self_heat_capacity = heat_capacity_archived() + + if((model.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) + var/heat = conduction_coefficient*delta_temperature* \ + (self_heat_capacity*model.heat_capacity/(self_heat_capacity+model.heat_capacity)) + + self_temperature_delta = -heat/(self_heat_capacity*group_multiplier) + + if((abs(self_temperature_delta) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) \ + && (abs(self_temperature_delta) > MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND*temperature_archived)) + return 0 + + temperature += self_temperature_delta + + return 1 + //Logic integrated from: temperature_mimic(model, conduction_coefficient) for efficiency + + temperature_share(datum/gas_mixture/sharer, conduction_coefficient) + + var/delta_temperature = (temperature_archived - sharer.temperature_archived) + if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) + var/self_heat_capacity = heat_capacity_archived() + var/sharer_heat_capacity = sharer.heat_capacity_archived() + + if((sharer_heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) + var/heat = conduction_coefficient*delta_temperature* \ + (self_heat_capacity*sharer_heat_capacity/(self_heat_capacity+sharer_heat_capacity)) + + temperature -= heat/(self_heat_capacity*group_multiplier) + sharer.temperature += heat/(sharer_heat_capacity*sharer.group_multiplier) + + temperature_mimic(turf/model, conduction_coefficient, border_multiplier) + var/delta_temperature = (temperature - model.temperature) + if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) + var/self_heat_capacity = heat_capacity()//_archived() + + if((model.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) + var/heat = conduction_coefficient*delta_temperature* \ + (self_heat_capacity*model.heat_capacity/(self_heat_capacity+model.heat_capacity)) + + if(border_multiplier) + temperature -= heat*border_multiplier/(self_heat_capacity*group_multiplier) + else + temperature -= heat/(self_heat_capacity*group_multiplier) + + temperature_turf_share(turf/simulated/sharer, conduction_coefficient) + var/delta_temperature = (temperature_archived - sharer.temperature) + if(abs(delta_temperature) > MINIMUM_TEMPERATURE_DELTA_TO_CONSIDER) + var/self_heat_capacity = heat_capacity() + + if((sharer.heat_capacity > MINIMUM_HEAT_CAPACITY) && (self_heat_capacity > MINIMUM_HEAT_CAPACITY)) + var/heat = conduction_coefficient*delta_temperature* \ + (self_heat_capacity*sharer.heat_capacity/(self_heat_capacity+sharer.heat_capacity)) + + temperature -= heat/(self_heat_capacity*group_multiplier) + sharer.temperature += heat/sharer.heat_capacity + + compare(datum/gas_mixture/sample) + if(!istype(sample)) return //fix for this.. randomly runtiming + if((abs(oxygen-sample.oxygen) > MINIMUM_AIR_TO_SUSPEND) && \ + ((oxygen < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.oxygen) || (oxygen > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.oxygen))) + return 0 + if((abs(nitrogen-sample.nitrogen) > MINIMUM_AIR_TO_SUSPEND) && \ + ((nitrogen < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.nitrogen) || (nitrogen > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.nitrogen))) + return 0 + if((abs(carbon_dioxide-sample.carbon_dioxide) > MINIMUM_AIR_TO_SUSPEND) && \ + ((carbon_dioxide < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.carbon_dioxide) || (oxygen > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.carbon_dioxide))) + return 0 + if((abs(toxins-sample.toxins) > MINIMUM_AIR_TO_SUSPEND) && \ + ((toxins < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.toxins) || (toxins > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*sample.toxins))) + return 0 + + if(total_moles() > MINIMUM_AIR_TO_SUSPEND) + if((abs(temperature-sample.temperature) > MINIMUM_TEMPERATURE_DELTA_TO_SUSPEND) && \ + ((temperature < (1-MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND)*sample.temperature) || (temperature > (1+MINIMUM_TEMPERATURE_RATIO_TO_SUSPEND)*sample.temperature))) + //world << "temp fail [temperature] & [sample.temperature]" + return 0 + + if(sample.trace_gases.len) + for(var/datum/gas/trace_gas in sample.trace_gases) + if(trace_gas.moles_archived > MINIMUM_AIR_TO_SUSPEND) + var/datum/gas/corresponding = locate(trace_gas.type) in trace_gases + if(corresponding) + if((abs(trace_gas.moles - corresponding.moles) > MINIMUM_AIR_TO_SUSPEND) && \ + ((corresponding.moles < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*trace_gas.moles) || (corresponding.moles > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*trace_gas.moles))) + return 0 + else + return 0 + + if(trace_gases.len) + for(var/datum/gas/trace_gas in trace_gases) + if(trace_gas.moles > MINIMUM_AIR_TO_SUSPEND) + var/datum/gas/corresponding = locate(trace_gas.type) in sample.trace_gases + if(corresponding) + if((abs(trace_gas.moles - corresponding.moles) > MINIMUM_AIR_TO_SUSPEND) && \ + ((trace_gas.moles < (1-MINIMUM_AIR_RATIO_TO_SUSPEND)*corresponding.moles) || (trace_gas.moles > (1+MINIMUM_AIR_RATIO_TO_SUSPEND)*corresponding.moles))) + return 0 + else + return 0 return 1 \ No newline at end of file diff --git a/code/game/atoms.dm b/code/game/atoms.dm index b0c1e4e60c6..97cea1d09af 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -252,6 +252,9 @@ its easier to just keep the beam vertical. /atom/proc/blob_act() return +/atom/proc/fire_act() + return + /atom/proc/emag_act() return diff --git a/code/game/dna/genes/goon_powers.dm b/code/game/dna/genes/goon_powers.dm index 687bf9c1bb1..a98313eefdb 100644 --- a/code/game/dna/genes/goon_powers.dm +++ b/code/game/dna/genes/goon_powers.dm @@ -534,9 +534,11 @@ "their hair","what to do next","their job","space","amusing things","sad things", "annoying things","happy things","something incoherent","something they did wrong") var/thoughts = "thinking about [pick(randomthoughts)]" - if (M.fire_stacks) + + if(M.fire_stacks) pain_condition -= 50 thoughts = "preoccupied with the fire" + if (M.radiation) pain_condition -= 25 diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index 2f7e6be9c46..3636acdb2e1 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -42,6 +42,7 @@ var/global/datum/controller/gameticker/ticker /datum/controller/gameticker/proc/pregame() login_music = pick(\ + 'sound/music/THUNDERDOME.ogg',\ 'sound/music/space.ogg',\ 'sound/music/Title1.ogg',\ 'sound/music/Title2.ogg',) diff --git a/code/game/gamemodes/vampire/vampire.dm b/code/game/gamemodes/vampire/vampire.dm index fd41c77e985..ec971e84e59 100644 --- a/code/game/gamemodes/vampire/vampire.dm +++ b/code/game/gamemodes/vampire/vampire.dm @@ -293,7 +293,7 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha H.vessel.remove_reagent("blood",25) if(ishuman(src)) var/mob/living/carbon/human/V = src - V.nutrition += blood + V.nutrition = min(450,V.nutrition+(blood/2)) src.mind.vampire.draining = null src << "\blue You stop draining [H.name] of blood." diff --git a/code/game/machinery/Freezer.dm b/code/game/machinery/Freezer.dm index 68c47360599..9c1bd3fdafc 100644 --- a/code/game/machinery/Freezer.dm +++ b/code/game/machinery/Freezer.dm @@ -33,7 +33,7 @@ component_parts += new /obj/item/weapon/stock_parts/console_screen(src) component_parts += new /obj/item/stack/cable_coil(src, 1) RefreshParts() - + /obj/machinery/atmospherics/unary/cold_sink/freezer/RefreshParts() var/H var/T @@ -58,7 +58,7 @@ if (istype(I, /obj/item/weapon/wrench)) if(!panel_open) user << "Open the maintenance panel first." - return + return playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) dir = pick(WEST,EAST,SOUTH,NORTH) var/node_connect = dir @@ -88,7 +88,7 @@ /obj/machinery/atmospherics/unary/cold_sink/freezer/attack_hand(mob/user as mob) if(panel_open) user << "Close the maintenance panel first." - return + return src.ui_interact(user) /obj/machinery/atmospherics/unary/cold_sink/freezer/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) @@ -98,13 +98,13 @@ data["gasPressure"] = round(air_contents.return_pressure()) data["gasTemperature"] = round(air_contents.temperature) data["gasTemperatureCelsius"] = round(air_contents.temperature - T0C,1) - if(air_contents.total_moles == 0 && air_contents.temperature == 0) + if(air_contents.total_moles() == 0 && air_contents.temperature == 0) data["gasTemperatureCelsius"] = 0 data["minGasTemperature"] = round(min_temperature) data["maxGasTemperature"] = round(T20C) data["targetGasTemperature"] = round(current_temperature) data["targetGasTemperatureCelsius"] = round(current_temperature - T0C,1) - + var/temp_class = "good" if (air_contents.temperature > (T0C - 20)) temp_class = "bad" @@ -175,7 +175,7 @@ component_parts += new /obj/item/weapon/stock_parts/console_screen(src) component_parts += new /obj/item/stack/cable_coil(src, 1) RefreshParts() - + /obj/machinery/atmospherics/unary/heat_reservoir/heater/upgraded/New() ..() var/obj/item/weapon/circuitboard/thermomachine/H = new /obj/item/weapon/circuitboard/thermomachine(null) @@ -215,7 +215,7 @@ if (istype(I, /obj/item/weapon/wrench)) if(!panel_open) user << "Open the maintenance panel first." - return + return playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) dir = pick(WEST,EAST,SOUTH,NORTH) var/node_connect = dir @@ -245,7 +245,7 @@ /obj/machinery/atmospherics/unary/heat_reservoir/heater/attack_hand(mob/user as mob) if(panel_open) user << "Close the maintenance panel first." - return + return src.ui_interact(user) /obj/machinery/atmospherics/unary/heat_reservoir/heater/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) @@ -255,13 +255,13 @@ data["gasPressure"] = round(air_contents.return_pressure()) data["gasTemperature"] = round(air_contents.temperature) data["gasTemperatureCelsius"] = round(air_contents.temperature - T0C,1) - if(air_contents.total_moles == 0 && air_contents.temperature == 0) + if(air_contents.total_moles() == 0 && air_contents.temperature == 0) data["gasTemperatureCelsius"] = 0 data["minGasTemperature"] = round(T20C) data["maxGasTemperature"] = round(T20C+max_temperature) data["targetGasTemperature"] = round(current_temperature) data["targetGasTemperatureCelsius"] = round(current_temperature - T0C,1) - + var/temp_class = "normal" if (air_contents.temperature > (T20C+40)) temp_class = "bad" diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index a41fcc019f9..917a2212365 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -202,7 +202,7 @@ if(target_temperature < T0C + MIN_TEMPERATURE) target_temperature = T0C + MIN_TEMPERATURE - var/datum/gas_mixture/gas = location.remove_air(0.25*environment.total_moles) + var/datum/gas_mixture/gas = location.remove_air(0.25*environment.total_moles()) var/heat_capacity = gas.heat_capacity() var/energy_used = max( abs( heat_capacity*(gas.temperature - target_temperature) ), MAX_ENERGY_CHANGE) @@ -1099,7 +1099,7 @@ FIRE ALARM else icon_state = "fire0" -/obj/machinery/firealarm/fire_act(datum/gas_mixture/air, temperature, volume) +/obj/machinery/firealarm/temperature_expose(datum/gas_mixture/air, temperature, volume) if(src.detecting) if(temperature > T0C+200) src.alarm() // added check of detector status here @@ -1130,17 +1130,26 @@ FIRE ALARM if(wiresexposed) switch(buildstage) if(2) - if (istype(W, /obj/item/device/multitool)) + 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.") else user.visible_message("\red [user] has disconnected [src]'s detecting unit!", "You have disconnected [src]'s detecting unit.") + + else if(istype(W, /obj/item/weapon/wirecutters)) // cutting the wires out + user << "You cut the wires!" + playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1) + var/obj/item/stack/cable_coil/new_coil = new /obj/item/stack/cable_coil() + new_coil.amount = 5 + new_coil.loc = user.loc + buildstage = 1 + update_icon() if(1) if(istype(W, /obj/item/stack/cable_coil)) var/obj/item/stack/cable_coil/coil = W if(coil.amount < 5) - user << "You need more cable for this!" + user << "You cut the wires!" return coil.amount -= 5 @@ -1148,11 +1157,11 @@ 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!" + user << "You pry out the circuit!" playsound(get_turf(src), 'sound/items/Crowbar.ogg', 50, 1) spawn(20) var/obj/item/weapon/firealarm_electronics/circuit = new /obj/item/weapon/firealarm_electronics() @@ -1161,13 +1170,13 @@ FIRE ALARM 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 << "You remove the fire alarm assembly from the wall!" new /obj/item/mounted/frame/firealarm(get_turf(user)) playsound(get_turf(src), 'sound/items/Ratchet.ogg', 50, 1) del(src) @@ -1191,7 +1200,7 @@ FIRE ALARM src.updateDialog() last_process = world.timeofday - if(locate(/obj/fire) in loc) + if(locate(/obj/effect/hotspot) in loc) alarm() return diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 4140d7cdcfe..99782c1b022 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -34,7 +34,7 @@ list("name" = "\[Air\]", "icon" = "grey-c-2"), list("name" = "\[CAUTION\]", "icon" = "yellow-c-2") ) - + possibledecals = list( //var that stores all possible decals, used by ui list("name" = "Low temperature canister", "icon" = "cold"), list("name" = "High temperature canister", "icon" = "hot"), @@ -50,24 +50,24 @@ var/datum/canister_icons/canister_icon_container = new() density = 1 var/health = 100.0 flags = CONDUCT - + var/menu = 0 //used by nanoui: 0 = main menu, 1 = relabel - + var/valve_open = 0 var/release_pressure = ONE_ATMOSPHERE - + var/list/_color //variable that stores colours var/list/decals //list that stores the decals - + //lists for check_change() var/list/oldcolor var/list/olddecals - + //passed to the ui to render the color lists var/list/colorcontainer var/list/possibledecals - + var/can_label = 1 var/filled = 0.5 pressure_resistance = 7*ONE_ATMOSPHERE @@ -77,7 +77,7 @@ var/datum/canister_icons/canister_icon_container = new() var/release_log = "" var/busy = 0 var/update_flag = 0 - + New() ..() _color = list( @@ -90,7 +90,7 @@ var/datum/canister_icons/canister_icon_container = new() colorcontainer = new /list(4) possibledecals = new /list(3) update_icon() - + /obj/machinery/portable_atmospherics/canister/proc/init_data_vars() //passed to the ui to render the color lists colorcontainer = list( @@ -111,7 +111,7 @@ var/datum/canister_icons/canister_icon_container = new() "name" = "Quaternary color", ) ) - + //var/anycolor used by the nanoUI, 0: no color applied. 1: color applied for(var/C in colorcontainer) if(C == "prim") continue @@ -121,9 +121,9 @@ var/datum/canister_icons/canister_icon_container = new() else L.Add(list("anycolor" = 1)) colorcontainer[C] = L - + possibledecals = new /list(3) - + var/i var/list/L = canister_icon_container.possibledecals for(i=1;i<=L.len;i++) @@ -153,11 +153,11 @@ var/datum/canister_icons/canister_icon_container = new() if(list2params(oldcolor) != list2params(_color)) update_flag |= 64 oldcolor = _color.Copy() - + if(list2params(olddecals) != list2params(decals)) update_flag |= 128 olddecals = decals.Copy() - + if(update_flag == old_flag) return 1 else @@ -188,12 +188,12 @@ update_flag return overlays.Cut() - + for(var/C in _color) if(C == "prim") continue if(_color[C] == "none") continue overlays.Add(_color[C]) - + for(var/D in decals) if(decals[D]) overlays.Add("decal-" + D) @@ -210,12 +210,12 @@ update_flag overlays += "can-o2" else if(update_flag & 32) overlays += "can-o3" - + update_flag &= ~196 //the flags 128 and 64 represent change, not states. As such, we have to reset them to be able to detect a change on the next go. return //template modification exploit prevention, used in Topic() -/obj/machinery/portable_atmospherics/canister/proc/is_a_color(var/inputVar, var/checkColor = "all") +/obj/machinery/portable_atmospherics/canister/proc/is_a_color(var/inputVar, var/checkColor = "all") if (checkColor == "prim" || checkColor == "all") for(var/list/L in canister_icon_container.possiblemaincolor) if (L["icon"] == inputVar) @@ -240,7 +240,7 @@ update_flag return 1 return 0 -/obj/machinery/portable_atmospherics/canister/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/machinery/portable_atmospherics/canister/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > temperature_resistance) health -= 5 healthcheck() @@ -294,15 +294,16 @@ update_flag environment.merge(removed) else loc.assume_air(removed) + air_update_turf() src.update_icon() + if(air_contents.return_pressure() < 1) can_label = 1 else can_label = 0 - if(air_contents.temperature > PLASMA_FLASHPOINT) - air_contents.zburn() + src.updateDialog() return /obj/machinery/portable_atmospherics/canister/return_air() @@ -389,7 +390,7 @@ update_flag return init_data_vars() //set up var/colorcontainer and var/possibledecals - + // this is the data which will be sent to the ui var/data[0] data["name"] = name @@ -421,7 +422,7 @@ update_flag ui.open() // auto update every Master Controller tick ui.set_auto_update(1) - + //Disregard these, avoid cluttering up the VV window colorcontainer = new /list(4) possibledecals = new /list(3) @@ -436,7 +437,7 @@ update_flag usr << browse(null, "window=canister") onclose(usr, "canister") return - + if (href_list["choice"] == "menu") menu = text2num(href_list["mode_target"]) @@ -467,7 +468,7 @@ update_flag release_pressure = min(10*ONE_ATMOSPHERE, release_pressure+diff) else release_pressure = max(ONE_ATMOSPHERE/10, release_pressure+diff) - + if (href_list["rename"]) if (can_label) var/T = sanitize(copytext(input("Choose canister label", "Name", name) as text|null,1,MAX_NAME_LEN)) @@ -497,11 +498,11 @@ update_flag _color["quart"] = "none" else if (is_a_color(href_list["icon"],"quart")) _color["quart"] = href_list["icon"] - + if (href_list["choice"] == "decals") if (is_a_decal(href_list["icon"])) decals[href_list["icon"]] = (decals[href_list["icon"]] == 0) - + src.add_fingerprint(usr) update_icon() @@ -540,11 +541,10 @@ update_flag /obj/machinery/portable_atmospherics/canister/toxins/New() ..() - + _color["prim"] = "orange" decals["plasma"] = 1 src.air_contents.toxins = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) - air_contents.update_values() src.update_icon() return 1 @@ -554,18 +554,17 @@ update_flag _color["prim"] = "blue" src.air_contents.oxygen = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) - air_contents.update_values() + src.update_icon() return 1 /obj/machinery/portable_atmospherics/canister/sleeping_agent/New() ..() - + _color["prim"] = "redws" var/datum/gas/sleeping_agent/trace_gas = new air_contents.trace_gases += trace_gas trace_gas.moles = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) - air_contents.update_values() src.update_icon() return 1 @@ -591,17 +590,15 @@ update_flag _color["prim"] = "red" src.air_contents.nitrogen = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) - air_contents.update_values() src.update_icon() return 1 /obj/machinery/portable_atmospherics/canister/carbon_dioxide/New() ..() - + _color["prim"] = "black" src.air_contents.carbon_dioxide = (src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) - air_contents.update_values() src.update_icon() return 1 @@ -609,11 +606,10 @@ update_flag /obj/machinery/portable_atmospherics/canister/air/New() ..() - + _color["prim"] = "grey" src.air_contents.oxygen = (O2STANDARD*src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) src.air_contents.nitrogen = (N2STANDARD*src.maximum_pressure*filled)*air_contents.volume/(R_IDEAL_GAS_EQUATION*air_contents.temperature) - air_contents.update_values() src.update_icon() return 1 diff --git a/code/game/machinery/atmoalter/pump.dm b/code/game/machinery/atmoalter/pump.dm index 4c86909c05e..aec5d82c346 100644 --- a/code/game/machinery/atmoalter/pump.dm +++ b/code/game/machinery/atmoalter/pump.dm @@ -66,6 +66,7 @@ environment.merge(removed) else loc.assume_air(removed) + air_update_turf() else var/pressure_delta = target_pressure - air_contents.return_pressure() //Can not have a pressure delta that would cause environment pressure > tank pressure @@ -80,6 +81,7 @@ removed = environment.remove(transfer_moles) else removed = loc.remove_air(transfer_moles) + air_update_turf() air_contents.merge(removed) //src.update_icon() diff --git a/code/game/machinery/atmoalter/zvent.dm b/code/game/machinery/atmoalter/zvent.dm index 163e86a74da..2e7ce0ac9b7 100644 --- a/code/game/machinery/atmoalter/zvent.dm +++ b/code/game/machinery/atmoalter/zvent.dm @@ -20,10 +20,8 @@ if (istype(zvent_conn)) //both floors have simulated turfs, share() var/turf/simulated/myturf = loc - var/datum/gas_mixture/conn_air = zturf_conn.zone.air //TODO: pop culture reference + var/datum/gas_mixture/conn_air = zturf_conn.air //TODO: pop culture reference var/datum/gas_mixture/my_air = myturf.air if (istype(conn_air) && istype(my_air)) -// if (!my_air.compare(conn_air)) -// myturf.reset_delay() -// zturf_conn.reset_delay() my_air.share(conn_air) + air_update_turf() diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm index 48ff9d2bd16..cb00c9cacc0 100644 --- a/code/game/machinery/cryo.dm +++ b/code/game/machinery/cryo.dm @@ -400,7 +400,7 @@ expel_gas = air_contents.remove(remove_amount) expel_gas.temperature = T20C // Lets expel hot gas and see if that helps people not die as they are removed loc.assume_air(expel_gas) - update_nearby_tiles() + air_update_turf(1) /obj/machinery/atmospherics/unary/cryo_cell/proc/go_out() if(!( occupant )) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index abf40d8de10..64f9bc02add 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -232,37 +232,27 @@ return /obj/machinery/door/airlock/plasma - name = "Plasma Airlock" + name = "plasma airlock" desc = "No way this can end badly." icon = 'icons/obj/doors/Doorplasma.dmi' mineral = "plasma" - autoignition_temperature = 300 +/obj/machinery/door/airlock/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(exposed_temperature > 300) + PlasmaBurn(exposed_temperature) -/obj/machinery/door/airlock/plasma/ignite(temperature) - PlasmaBurn(temperature) +/obj/machinery/door/airlock/plasma/proc/ignite(exposed_temperature) + if(exposed_temperature > 300) + PlasmaBurn(exposed_temperature) /obj/machinery/door/airlock/plasma/proc/PlasmaBurn(temperature) - for(var/turf/simulated/floor/target_tile in range(2,loc)) -// if(target_tile.parent && target_tile.parent.group_processing) // THESE PROBABLY DO SOMETHING IMPORTANT BUT I DON'T KNOW HOW TO FIX IT - Erthilo -// target_tile.parent.suspend_group_processing() - var/datum/gas_mixture/napalm = new - var/toxinsToDeduce = 35 - napalm.toxins = toxinsToDeduce - napalm.temperature = 400+T0C - target_tile.assume_air(napalm) - spawn (0) target_tile.hotspot_expose(temperature, 400) - for(var/obj/structure/falsewall/plasma/F in range(3,src))//Hackish as fuck, but until temperature_expose works, there is nothing I can do -Sieve - var/turf/T = get_turf(F) - T.ChangeTurf(/turf/simulated/wall/mineral/plasma/) - del (F) - for(var/turf/simulated/wall/mineral/plasma/W in range(3,src)) - W.ignite((temperature/4))//Added so that you can't set off a massive chain reaction with a small flame - for(var/obj/machinery/door/airlock/plasma/D in range(3,src)) - D.ignite(temperature/4) + atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 500) new/obj/structure/door_assembly( src.loc ) del (src) +/obj/machinery/door/airlock/plasma/BlockSuperconductivity() //we don't stop the heat~ + return 0 + /obj/machinery/door/airlock/clown name = "Bananium Airlock" icon = 'icons/obj/doors/Doorbananium.dmi' @@ -918,10 +908,9 @@ About the new airlock wires panel: // Do nothing else playsound(src.loc, 'sound/machines/airlock.ogg', 30, 1) - for(var/turf/turf in locs) - var/obj/structure/window/killthis = (locate(/obj/structure/window) in turf) - if(killthis) - killthis.ex_act(2)//Smashin windows + var/obj/structure/window/killthis = (locate(/obj/structure/window) in get_turf(src)) + if(killthis) + killthis.ex_act(2)//Smashin windows if(density) return 1 @@ -937,14 +926,11 @@ About the new airlock wires panel: if(visible && !glass) SetOpacity(1) operating = 0 - update_nearby_tiles() + air_update_turf(1) + update_freelok_sight() if(locate(/mob/living) in get_turf(src)) open() - //I shall not add a check every x ticks if a door has closed over some fire. - var/obj/fire/fire = locate() in loc - if(fire) - del fire return /obj/machinery/door/airlock/proc/lock(var/forced=0) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index b94fd17c30e..6588131ac9f 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -33,7 +33,6 @@ . = ..() if(density) layer = closed_layer - update_heat_protection(get_turf(src)) else layer = open_layer @@ -46,14 +45,16 @@ bound_width = world.icon_size bound_height = width * world.icon_size - update_nearby_tiles(need_rebuild=1) + air_update_turf(1) + update_freelok_sight() airlocks += src return /obj/machinery/door/Destroy() density = 0 - update_nearby_tiles() + air_update_turf(1) + update_freelok_sight() airlocks -= src ..() return @@ -95,11 +96,13 @@ /obj/machinery/door/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group) return !block_air_zones + if(air_group) return 0 if(istype(mover) && mover.checkpass(PASSGLASS)) return !opacity return !density +/obj/machinery/door/CanAtmosPass() + return !density //used in the AStar algorithm to determinate if the turf the door is on is passable /obj/machinery/door/proc/CanAStarPass(var/obj/item/weapon/card/id/ID) @@ -107,9 +110,9 @@ /obj/machinery/door/proc/bumpopen(mob/user as mob) if(operating) return - if(user.last_airflow > world.time - vsc.airflow_delay) //Fakkit +// if(user.last_airflow > world.time) //Fakkit //remind me to figure out the linda equiv // if(user.last_airflow > world.time - zas_settings.Get("airflow_delay")) //Fakkit - return +// return src.add_fingerprint(user) if(!src.requiresID()) user = null @@ -240,7 +243,8 @@ update_icon() SetOpacity(0) operating = 0 - update_nearby_tiles() + air_update_turf(1) + update_freelok_sight() if(autoclose && normalspeed) spawn(150) @@ -267,12 +271,13 @@ if(visible && !glass) SetOpacity(1) //caaaaarn! operating = 0 - update_nearby_tiles() + air_update_turf(1) + update_freelok_sight() //I shall not add a check every x ticks if a door has closed over some fire. - var/obj/fire/fire = locate() in loc + var/obj/effect/hotspot/fire = locate() in loc if(fire) - del fire + qdel(fire) return /obj/machinery/door/proc/crush() @@ -296,14 +301,6 @@ /obj/machinery/door/proc/requiresID() return 1 - -/obj/machinery/door/proc/update_heat_protection(var/turf/simulated/source) - if(istype(source)) - if(src.density && (src.opacity || src.heat_proof)) - source.thermal_conductivity = DOOR_HEAT_TRANSFER_COEFFICIENT - else - source.thermal_conductivity = initial(source.thermal_conductivity) - /obj/machinery/door/proc/autoclose() var/obj/machinery/door/airlock/A = src if(!A.density && !A.operating && !A.locked && !A.welded && A.autoclose) @@ -311,7 +308,10 @@ return /obj/machinery/door/Move(new_loc, new_dir) - update_nearby_tiles() + var/turf/T = loc + ..() + move_update_air(T) + . = ..() if(width > 1) if(dir in list(EAST, WEST)) @@ -321,7 +321,10 @@ bound_width = world.icon_size bound_height = width * world.icon_size - update_nearby_tiles() +/obj/machinery/door/BlockSuperconductivity() + if(opacity || heat_proof) + return 1 + return 0 /obj/machinery/door/morgue icon = 'icons/obj/doors/doormorgue.dmi' diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 43c392bdde8..afe8fe92580 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -1,85 +1,23 @@ /var/const/OPEN = 1 /var/const/CLOSED = 2 -/proc/convert_k2c(var/temp) - return ((temp - T0C)) // * 1.8) + 32 - -/proc/convert_c2k(var/temp) - return ((temp + T0C)) // * 1.8) + 32 - -/proc/getCardinalAirInfo(var/turf/loc, var/list/stats=list("temperature")) - var/list/temps = new/list(4) - for(var/dir in cardinal) - var/direction - switch(dir) - if(NORTH) - direction = 1 - if(SOUTH) - direction = 2 - if(EAST) - direction = 3 - if(WEST) - direction = 4 - var/turf/simulated/T=get_turf(get_step(loc,dir)) - var/list/rstats = new /list(stats.len) - if(T && istype(T) && T.zone) - var/datum/gas_mixture/environment = T.return_air() - for(var/i=1;i<=stats.len;i++) - if(stats[i] == "pressure") - rstats[i] = environment.return_pressure() - else - rstats[i] = environment.vars[stats[i]] - else if(istype(T, /turf/simulated)) - rstats = null // Exclude zone (wall, door, etc). - else if(istype(T, /turf)) - // Should still work. (/turf/return_air()) - var/datum/gas_mixture/environment = T.return_air() - for(var/i=1;i<=stats.len;i++) - if(stats[i] == "pressure") - continue - else - rstats[i] = environment.vars[stats[i]] - temps[direction] = rstats - return temps - -#define FIREDOOR_MAX_PRESSURE_DIFF 25 // kPa -#define FIREDOOR_MAX_TEMP 50 // Celsius -#define FIREDOOR_MIN_TEMP 0 - -// Bitflags -#define FIREDOOR_ALERT_HOT 1 -#define FIREDOOR_ALERT_COLD 2 -// Not used #define FIREDOOR_ALERT_LOWPRESS 4 - /obj/machinery/door/firedoor - name = "\improper Emergency Shutter" - desc = "Emergency air-tight shutter, capable of sealing off breached areas." - icon = 'icons/obj/doors/DoorHazard.dmi' + name = "Firelock" + desc = "Apply crowbar" + icon = 'icons/obj/doors/Doorfireglass.dmi' icon_state = "door_open" - req_one_access = list(access_atmospherics, access_engine) opacity = 0 density = 0 + heat_proof = 1 + glass = 1 + power_channel = ENVIRON - //These are frequenly used with windows, so make sure zones can pass. - //Generally if a firedoor is at a place where there should be a zone boundery then there will be a regular door underneath it. - block_air_zones = 0 + var/list/areas_added var/blocked = 0 - var/lockdown = 0 // When the door has detected a problem, it locks. - var/pdiff_alert = 0 - var/pdiff = 0 var/nextstate = null - var/net_id - var/list/areas_added - var/list/users_to_open - var/list/tile_info[4] - var/list/dir_alerts[4] // 4 dirs, bitflags - // MUST be in same order as FIREDOOR_ALERT_* - var/list/ALERT_STATES=list( - "hot", - "cold" - ) + var/logged_users /obj/machinery/door/firedoor/New() . = ..() @@ -88,6 +26,7 @@ spawn(1) del src return . + var/area/A = get_area(src) ASSERT(istype(A)) @@ -106,66 +45,16 @@ A.all_doors.Remove(src) . = ..() - -/obj/machinery/door/firedoor/examine() - set src in view() - . = ..() - - if(pdiff >= FIREDOOR_MAX_PRESSURE_DIFF) - usr << "WARNING: Current pressure differential is [pdiff]kPa! Opening door may result in injury!" - - usr << "Sensor readings:" - for(var/index = 1; index <= tile_info.len; index++) - var/o = "  " - switch(index) - if(1) - o += "NORTH: " - if(2) - o += "SOUTH: " - if(3) - o += "EAST: " - if(4) - o += "WEST: " - if(tile_info[index] == null) - o += "DATA UNAVAILABLE" - usr << o - continue - var/celsius = convert_k2c(tile_info[index][1]) - var/pressure = tile_info[index][2] - if(dir_alerts[index] & (FIREDOOR_ALERT_HOT|FIREDOOR_ALERT_COLD)) - o += "" - else - o += "" - o += "[celsius] Celsius " - o += "" - o += "[pressure] kPa" - usr << o - - if( islist(users_to_open) && users_to_open.len) - var/users_to_open_string = users_to_open[1] - if(users_to_open.len >= 2) - for(var/i = 2 to users_to_open.len) - users_to_open_string += ", [users_to_open[i]]" - usr << "These people have opened \the [src] during an alert: [users_to_open_string]." - /obj/machinery/door/firedoor/Bumped(atom/AM) - if(p_open || operating) - return - if(!density) - return ..() - if(istype(AM, /obj/mecha)) - var/obj/mecha/mecha = AM - if (mecha.occupant) - var/mob/M = mecha.occupant - if(world.time - M.last_bumped <= 10) return //Can bump-open one airlock per second. This is to prevent popup message spam. - M.last_bumped = world.time - attack_hand(M) + if(p_open || operating) return + if(!density) return ..() return 0 /obj/machinery/door/firedoor/power_change() - if(powered(ENVIRON)) + if(powered(power_channel)) stat &= ~NOPOWER + latetoggle() else stat |= NOPOWER return @@ -177,6 +66,7 @@ add_fingerprint(user) if(operating) return//Already doing something. + if(istype(C, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/W = C if(W.remove_fuel(0, user)) @@ -198,24 +88,21 @@ if( istype(C, /obj/item/weapon/crowbar) || ( istype(C,/obj/item/weapon/twohanded/fireaxe) && C:wielded == 1 ) ) if(operating) return - if( blocked ) + if(blocked) user.visible_message("\red \The [user] pries at \the [src] with \a [C], but \the [src] is welded in place!",\ "You try to pry \the [src] [density ? "open" : "closed"], but it is welded in place!",\ "You hear someone struggle and metal straining.") - if( stat & (BROKEN|NOPOWER) || !density || !alarmed ) + if(stat & (BROKEN|NOPOWER) || !density || !alarmed) user.visible_message("\red \The [user] forces \the [src] [density ? "open" : "closed"] with \a [C]!",\ "You force \the [src] [density ? "open" : "closed"] with \the [C]!",\ "You hear metal strain, and a door [density ? "open" : "close"].") - else if( allowed(user) ) + + else if(allowed(user)) user.visible_message("\blue \The [user] lifts \the [src] with \a [C].",\ "\The [src] scans your ID, and obediently opens as you apply your [C].",\ "You hear metal move, and a door [density ? "open" : "close"].") - else if(lockdown) - user.visible_message("\blue \The [user] pries at \the [src] with \a [C], but \the [src] resists being opened.",\ - "\red You pry at \the [src], but it actively resists your efforts. Maybe use your ID, perhaps?",\ - "You hear someone struggling and metal straining") - return + if(density) spawn(0) open() @@ -223,6 +110,7 @@ spawn(0) close() return + var/access_granted = 0 var/users_name if(!istype(C, /obj)) //If someone hit it with their hand. We need to see if they are allowed. @@ -233,7 +121,7 @@ else users_name = "Unknown" - if( ishuman(user) && !stat && ( istype(C, /obj/item/weapon/card/id) || istype(C, /obj/item/device/pda) ) ) + if(ishuman(user) && !stat && (istype(C, /obj/item/weapon/card/id) || istype(C, /obj/item/device/pda))) var/obj/item/weapon/card/id/ID = C if( istype(C, /obj/item/device/pda) ) @@ -248,31 +136,26 @@ if(check_access(ID)) access_granted = 1 - var/answer = "Yes" + var/answer = alert(user, "Are you sure you want to [density ? "open" : "close"] \the [src]?","\The [src] confirmation","Yes","No") if(answer == "No") return + if(user.stat || user.stunned || user.weakened || user.paralysis || get_dist(src, user) > 1) user << "Sorry, you must remain able bodied and close to \the [src] in order to use it." return - if(alarmed && density && lockdown && !access_granted/* && !( users_name in users_to_open ) */) - // Too many shitters on /vg/ for the honor system to work. + if(alarmed && density && !access_granted) user << "Access denied. Please wait for authorities to arrive, or for the alert to clear." return - // End anti-shitter system - /* - user.visible_message("\red \The [src] opens for \the [user]",\ - "\The [src] opens after you acknowledge the consequences.",\ - "You hear a beep, and a door opening.") - */ + else user.visible_message("\blue \The [src] [density ? "open" : "close"]s for \the [user].",\ "\The [src] [density ? "open" : "close"]s.",\ "You hear a beep, and a door opening.") // Accountability! - if(!users_to_open) - users_to_open = list() - users_to_open += users_name + if(!logged_users) + logged_users = list() + logged_users += users_name var/needs_to_close = 0 if(density) @@ -290,8 +173,8 @@ nextstate = CLOSED /obj/machinery/door/firedoor/attack_ai(mob/user as mob) - if(operating) - return //Already doing something. + if(operating || stat & NOPOWER) + return //Already doing something or depowered. if(blocked) user << "\red \The [src] is welded solid!" @@ -325,49 +208,38 @@ if(alarmed) nextstate = CLOSED - // CHECK PRESSURE -/obj/machinery/door/firedoor/process() - ..() +/obj/machinery/door/firedoor/do_animate(animation) + switch(animation) + if("opening") + flick("door_opening", src) + if("closing") + flick("door_closing", src) + return +/obj/machinery/door/firedoor/update_icon() + overlays.Cut() if(density) - var/changed = 0 - lockdown=0 - // Pressure alerts - pdiff = getOPressureDifferential(src.loc) - if(pdiff >= FIREDOOR_MAX_PRESSURE_DIFF) - lockdown = 1 - if(!pdiff_alert) - pdiff_alert = 1 - changed = 1 // update_icon() - else - if(pdiff_alert) - pdiff_alert = 0 - changed = 1 // update_icon() + icon_state = "door_closed" + if(blocked) + overlays += "welded" + else + icon_state = "door_open" + if(blocked) + overlays += "welded_open" + return - tile_info = getCardinalAirInfo(src.loc,list("temperature","pressure")) - var/old_alerts = dir_alerts - for(var/index = 1; index <= 4; index++) - var/list/tileinfo=tile_info[index] - if(tileinfo==null) - continue // Bad data. - var/celsius = convert_k2c(tileinfo[1]) +/obj/machinery/door/firedoor/open() + ..() + latetoggle() + return - var/alerts=0 - - // Temperatures - if(celsius >= FIREDOOR_MAX_TEMP) - alerts |= FIREDOOR_ALERT_HOT - lockdown = 1 - else if(celsius <= FIREDOOR_MIN_TEMP) - alerts |= FIREDOOR_ALERT_COLD - lockdown = 1 - - dir_alerts[index]=alerts - - if(dir_alerts != old_alerts) - changed = 1 - if(changed) - update_icon() +/obj/machinery/door/firedoor/close() + ..() + if(locate(/mob/living) in get_turf(src)) + open() + return + latetoggle() + return /obj/machinery/door/firedoor/proc/latetoggle() if(operating || stat & NOPOWER || !nextstate) @@ -381,90 +253,30 @@ close() return -/obj/machinery/door/firedoor/close() - ..() - latetoggle() - layer = 3.1 -/obj/machinery/door/firedoor/open() - ..() - latetoggle() - layer = 2.6 - -/obj/machinery/door/firedoor/update_icon() - overlays = 0 - if(density) - icon_state = "door_closed" - if(blocked) - overlays += "welded" - if(pdiff_alert) - overlays += "palert" - if(dir_alerts) - for(var/d=1;d<=4;d++) - var/cdir = cardinal[d] - // Loop while i = [1, 3], incrementing each loop - for(var/i=1;i<=ALERT_STATES.len;i++) // - if(dir_alerts[d] & (1<<(i-1))) // Check to see if dir_alerts[d] has the i-1th bit set. - overlays += new /icon(icon,"alert_[ALERT_STATES[i]]",dir=cdir) - else - icon_state = "door_open" - if(blocked) - overlays += "welded_open" - return - -/obj/machinery/door/firedoor/do_animate(animation) - switch(animation) - if("opening") - flick("door_opening", src) - if("closing") - flick("door_closing", src) - return - /obj/machinery/door/firedoor/border_only -//These are playing merry hell on ZAS. Sorry fellas :( -/* icon = 'icons/obj/doors/edge_Doorfire.dmi' - glass = 1 //There is a glass window so you can see through the door - //This is needed due to BYOND limitations in controlling visibility - heat_proof = 1 - air_properties_vary_with_direction = 1 + flags = ON_BORDER - CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(istype(mover) && mover.checkpass(PASSGLASS)) - return 1 - if(get_dir(loc, target) == dir) //Make sure looking at appropriate border - if(air_group) return 0 - return !density - else - return 1 - - CheckExit(atom/movable/mover as mob|obj, turf/target as turf) - if(istype(mover) && mover.checkpass(PASSGLASS)) - return 1 - if(get_dir(loc, target) == dir) - return !density - else - return 1 - - - update_nearby_tiles(need_rebuild) - if(!air_master) return 0 - - var/turf/simulated/source = loc - var/turf/simulated/destination = get_step(source,dir) - - update_heat_protection(loc) - - if(istype(source)) air_master.tiles_to_update += source - if(istype(destination)) air_master.tiles_to_update += destination +/obj/machinery/door/firedoor/border_only/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) + if(istype(mover) && mover.checkpass(PASSGLASS)) + return 1 + if(get_dir(loc, target) == dir) //Make sure looking at appropriate border + if(air_group) return 0 + return !density + else return 1 -*/ -/obj/machinery/door/firedoor/multi_tile - icon = 'icons/obj/doors/DoorHazard2x1.dmi' - width = 2 +/obj/machinery/door/firedoor/border_only/CheckExit(atom/movable/mover as mob|obj, turf/target as turf) + if(istype(mover) && mover.checkpass(PASSGLASS)) + return 1 + if(get_dir(loc, target) == dir) + return !density + else + return 1 - -/obj/machinery/door/firedoor/multi_tile/triple - icon = 'icons/obj/doors/DoorHazard3x1.dmi' - width = 3 +/obj/machinery/door/firedoor/border_only/CanAtmosPass(var/turf/T) + if(get_dir(loc, T) == dir) + return !density + else + return 1 \ No newline at end of file diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index 0e549e5183d..7348a57181c 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -53,7 +53,8 @@ sleep(5) src.density = 0 sleep(5) - update_nearby_tiles() + air_update_turf(1) + update_freelok_sight() if(operating == 1) //emag again src.operating = 0 @@ -69,7 +70,8 @@ flick("pdoorc1", src) src.icon_state = "pdoor1" src.SetOpacity(initial(opacity)) - update_nearby_tiles() + air_update_turf(1) + update_freelok_sight() sleep(5) crush() src.density = 1 @@ -147,7 +149,8 @@ f3.density = 0 f3.SetOpacity(0) - update_nearby_tiles() + air_update_turf(1) + update_freelok_sight() if(operating == 1) //emag again src.operating = 0 @@ -173,7 +176,8 @@ if (src.visible) src.SetOpacity(1) - update_nearby_tiles() + air_update_turf(1) + update_freelok_sight() sleep(10) src.operating = 0 @@ -201,7 +205,8 @@ f4.density = 0 f4.SetOpacity(0) - update_nearby_tiles() + air_update_turf(1) + update_freelok_sight() if(operating == 1) //emag again src.operating = 0 @@ -229,7 +234,8 @@ if (src.visible) src.SetOpacity(1) - update_nearby_tiles() + air_update_turf(1) + update_freelok_sight() sleep(10) src.operating = 0 @@ -304,7 +310,8 @@ f3.density = 0 f3.SetOpacity(0) - update_nearby_tiles() + air_update_turf(1) + update_freelok_sight() if(operating == 1) //emag again src.operating = 0 @@ -330,7 +337,8 @@ if (src.visible) src.SetOpacity(1) - update_nearby_tiles() + air_update_turf(1) + update_freelok_sight() sleep(10) src.operating = 0 @@ -358,7 +366,8 @@ f4.density = 0 f4.SetOpacity(0) - update_nearby_tiles() + air_update_turf(1) + update_freelok_sight() if(operating == 1) //emag again src.operating = 0 @@ -386,7 +395,8 @@ if (src.visible) src.SetOpacity(1) - update_nearby_tiles() + air_update_turf(1) + update_freelok_sight() sleep(10) src.operating = 0 diff --git a/code/game/machinery/doors/shutters.dm b/code/game/machinery/doors/shutters.dm index d8f751ec89e..c09226db1ee 100644 --- a/code/game/machinery/doors/shutters.dm +++ b/code/game/machinery/doors/shutters.dm @@ -7,7 +7,7 @@ /obj/machinery/door/poddoor/shutters/New() ..() layer = 3.1 - + /obj/machinery/door/poddoor/shutters/preopen icon_state = "shutter0" density = 0 @@ -41,7 +41,8 @@ sleep(10) density = 0 SetOpacity(0) - update_nearby_tiles() + air_update_turf(1) + update_freelok_sight() if(operating == 1) //emag again operating = 0 @@ -59,7 +60,8 @@ density = 1 if(visible) SetOpacity(1) - update_nearby_tiles() + air_update_turf(1) + update_freelok_sight() sleep(10) operating = 0 diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 544a4d7315d..d4cd6c3e500 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -81,6 +81,12 @@ else return 1 +/obj/machinery/door/window/CanAtmosPass(var/turf/T) + if(get_dir(loc, T) == dir) + return !density + else + return 1 + //used in the AStar algorithm to determinate if the turf the door is on is passable /obj/machinery/door/window/CanAStarPass(var/obj/item/weapon/card/id/ID, var/to_dir) return !density || (dir != to_dir) || check_access(ID) @@ -113,7 +119,8 @@ src.density = 0 // src.sd_SetOpacity(0) //TODO: why is this here? Opaque windoors? ~Carn - update_nearby_tiles() + air_update_turf(1) + update_freelok_sight() if(operating == 1) //emag again src.operating = 0 @@ -136,7 +143,8 @@ src.density = 1 // if(src.visible) // SetOpacity(1) //TODO: why is this here? Opaque windoors? ~Carn - update_nearby_tiles() + air_update_turf(1) + update_freelok_sight() sleep(10) src.operating = 0 diff --git a/code/game/machinery/programmable_unloader.dm b/code/game/machinery/programmable_unloader.dm index 291b5849d2f..2af4c5e0fbf 100644 --- a/code/game/machinery/programmable_unloader.dm +++ b/code/game/machinery/programmable_unloader.dm @@ -230,11 +230,11 @@ open = 0 if(!unwrenched && !circuit_removed) src.stat &= ~MAINT - user << "You open the [src]'s maintenance panel." + user << "You close \the [src]'s maintenance panel." else open = 1 src.stat |= MAINT - user << "You close the [src]'s maintenance panel." + user << "You open \the [src]'s maintenance panel." if(istype(I,/obj/item/weapon/crowbar)) if(open) user << "\blue You begin to pry out the [src]'s circuits." @@ -257,6 +257,7 @@ return else ..(I,user) + if(istype(I,/obj/item/weapon/circuitboard/programmable)) if(!open) user << "You have to open the machine first!" @@ -553,9 +554,9 @@ origin_tech = "engineering=3;programming=6" frame_desc = "Requires 2 Manipulators, 1 Scanning Module, 1 Cable." req_components = list( - "/obj/item/weapon/stock_parts/scanning_module" = 1, - "/obj/item/weapon/stock_parts/manipulator" = 2, - "/obj/item/stack/cable_coil" = 1) + /obj/item/weapon/stock_parts/scanning_module = 1, + /obj/item/weapon/stock_parts/manipulator = 2, + /obj/item/stack/cable_coil = 1) //Customization of the machine var/datum/cargoprofile/default = new/datum/cargoprofile() diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 07570114f00..d6a6a970acf 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -13,18 +13,26 @@ /obj/machinery/shield/New() src.dir = pick(1,2,3,4) ..() - update_nearby_tiles(need_rebuild=1) + air_update_turf(1) /obj/machinery/shield/Destroy() opacity = 0 density = 0 - update_nearby_tiles() + air_update_turf(1) ..() +/obj/machinery/shield/Move() + var/turf/T = loc + ..() + move_update_air(T) + /obj/machinery/shield/CanPass(atom/movable/mover, turf/target, height, air_group) if(!height || air_group) return 0 else return ..() +/obj/machinery/shield/CanAtmosPass(var/turf/T) + return !density + /obj/machinery/shield/attackby(obj/item/weapon/W as obj, mob/user as mob, params) if(!istype(W)) return diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index 9877ac6f138..c92b77ef47c 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -189,6 +189,7 @@ //world << "now at [removed.temperature]" env.merge(removed) + air_update_turf() //world << "turf now at [env.temperature]" diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 7eaa6315995..957111ea9d4 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -871,14 +871,10 @@ sleep(10) if(helmet) - if(radiation_level > 2) - helmet.decontaminate() if(radiation_level > 1) helmet.clean_blood() if(suit) - if(radiation_level > 2) - suit.decontaminate() if(radiation_level > 1) suit.clean_blood() diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index 007fc2f5f7e..e6bf09f19af 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -788,16 +788,16 @@ /obj/machinery/vending/snack name = "Getmore Chocolate Corp" desc = "A snack machine courtesy of the Getmore Chocolate Corporation, based out of Mars" - product_slogans = "Try our new nougat bar!;Twice the calories for half the price!;Now featuring Discount Dan's food line!" + product_slogans = "Try our new nougat bar!;Twice the calories for half the price!" product_ads = "The healthiest!;Award-winning chocolate bars!;Mmm! So good!;Oh my god it's so juicy!;Have a snack.;Snacks are good for you!;Have some more Getmore!;Best quality snacks straight from mars.;We love chocolate!;Try our new jerky!" icon_state = "snack" products = list(/obj/item/weapon/reagent_containers/food/snacks/candy/candybar = 6,/obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 6,/obj/item/weapon/reagent_containers/food/snacks/chips =6, /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,/obj/item/weapon/reagent_containers/food/drinks/dansoup/random = 20,/obj/item/weapon/reagent_containers/food/snacks/danburrito/random = 20) + /obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 6) contraband = list(/obj/item/weapon/reagent_containers/food/snacks/syndicake = 6) prices = list(/obj/item/weapon/reagent_containers/food/snacks/candy/candybar = 20,/obj/item/weapon/reagent_containers/food/drinks/dry_ramen = 30, /obj/item/weapon/reagent_containers/food/snacks/chips =25,/obj/item/weapon/reagent_containers/food/snacks/sosjerky = 30,/obj/item/weapon/reagent_containers/food/snacks/no_raisin = 20, - /obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 30,/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 25,/obj/item/weapon/reagent_containers/food/drinks/dansoup/random = 10,/obj/item/weapon/reagent_containers/food/snacks/danburrito/random = 12) + /obj/item/weapon/reagent_containers/food/snacks/spacetwinkie = 30,/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers = 25) refill_canister = /obj/item/weapon/vending_refill/snack /obj/machinery/vending/snack/New() @@ -845,20 +845,6 @@ component_parts += new /obj/item/weapon/vending_refill/cola(0) component_parts += new /obj/item/weapon/vending_refill/cola(0) -//New Cola Machine -/obj/machinery/vending/soda - name = "Donk Co. Cola" - desc = "A cola vendor provided by Donk Company, Inc." - icon_state = "soda" - product_slogans = "Donk Co. Cola: Refreshing, delicious, and robust!" - product_ads = "Refreshing!;Hope you're thirsty!;Over 1 million drinks sold!;Thirsty? Why not cola?;Please, have a drink!;Drink up!;The best drinks in space." - products = list(/obj/item/weapon/reagent_containers/food/drinks/cans/robust = 10, /obj/item/weapon/reagent_containers/food/drinks/cans/pubber = 10, /obj/item/weapon/reagent_containers/food/drinks/cans/grifeo = 10, - /obj/item/weapon/reagent_containers/food/drinks/cans/grones = 10, /obj/item/weapon/reagent_containers/food/drinks/cans/runoff = 10, /obj/item/weapon/reagent_containers/food/drinks/cans/horror = 10, - /obj/item/weapon/reagent_containers/food/drinks/cans/orangeaid = 10, /obj/item/weapon/reagent_containers/food/drinks/cans/limeaid = 10, /obj/item/weapon/reagent_containers/food/drinks/cans/decirprevo = 10) - prices = list(/obj/item/weapon/reagent_containers/food/drinks/cans/robust = 35, /obj/item/weapon/reagent_containers/food/drinks/cans/pubber = 35, /obj/item/weapon/reagent_containers/food/drinks/cans/grifeo = 35, - /obj/item/weapon/reagent_containers/food/drinks/cans/grones = 35, /obj/item/weapon/reagent_containers/food/drinks/cans/runoff = 35, /obj/item/weapon/reagent_containers/food/drinks/cans/horror = 35, - /obj/item/weapon/reagent_containers/food/drinks/cans/orangeaid = 50, /obj/item/weapon/reagent_containers/food/drinks/cans/limeaid = 50, /obj/item/weapon/reagent_containers/food/drinks/cans/decirprevo = 60) - //This one's from bay12 /obj/machinery/vending/cart diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index 361ecedb4e1..02597fed7d7 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -44,9 +44,6 @@ for(var/atom/A in contents) A.clean_blood() - for(var/obj/item/I in contents) - I.decontaminate() - //Tanning! for(var/obj/item/stack/sheet/hairlesshide/HH in contents) var/obj/item/stack/sheet/wetleather/WL = new(src) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 521716c44a5..0785ff11b29 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -668,7 +668,7 @@ check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT),1) return -/obj/mecha/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/mecha/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature>src.max_temperature) src.log_message("Exposed to dangerous temperature.",1) src.take_damage(5,"fire") diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm index 985b3bca9ba..cca19e50a98 100644 --- a/code/game/objects/effects/aliens.dm +++ b/code/game/objects/effects/aliens.dm @@ -35,7 +35,9 @@ ..() /obj/structure/alien/resin/Move() + var/turf/T = loc ..() + move_update_air(T) /obj/structure/alien/resin/wall name = "resin wall" @@ -229,7 +231,7 @@ del(src) -/obj/structure/alien/weeds/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/structure/alien/weeds/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 300) health -= 5 healthcheck() @@ -387,7 +389,7 @@ del(src) //Remove the egg after it has been hit after bursting. -/obj/structure/alien/egg/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/structure/alien/egg/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 500) health -= 5 healthcheck() diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index a0b3fff9c7b..c66706a18b3 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -118,10 +118,7 @@ ..() var/turf/simulated/T = get_turf(src) if(istype(T)) - var/datum/gas_mixture/payload = new - payload.toxins = 60 - T.zone.air.merge(payload) - T.hotspot_expose(1000, CELL_VOLUME) + T.atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 3) ///////////////////// diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 5057bb1d3b0..d5d3555e12d 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -171,7 +171,6 @@ steam.start() -- spawns the effect ..() playsound(src.loc, "sparks", 100, 1) var/turf/T = loc - if (istype(T, /turf)) T.hotspot_expose(1000, 100) spawn (100) @@ -953,7 +952,7 @@ steam.start() -- spawns the effect // foam disolves when heated // except metal foams -/obj/effect/effect/foam/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/effect/effect/foam/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(!metal && prob(max(0, exposed_temperature - 475))) flick("[icon_state]-disolve", src) @@ -1040,16 +1039,19 @@ steam.start() -- spawns the effect New() ..() - update_nearby_tiles(1) - - + air_update_turf(1) Destroy() density = 0 - update_nearby_tiles(1) + air_update_turf(1) ..() + Move() + var/turf/T = loc + ..() + move_update_air(T) + proc/updateicon() if(metal == 1) icon_state = "metalfoam" @@ -1109,6 +1111,9 @@ steam.start() -- spawns the effect if(air_group) return 0 return !density + CanAtmosPass() + return !density + /datum/effect/effect/system/reagents_explosion var/amount // TNT equivalent var/flashing = 0 // does explosion creates flash effect? diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm index e8b8cc4bdaf..edb7031f1e4 100644 --- a/code/game/objects/effects/glowshroom.dm +++ b/code/game/objects/effects/glowshroom.dm @@ -156,7 +156,7 @@ else return -/obj/effect/glowshroom/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/effect/glowshroom/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 300) endurance -= 5 CheckEndurance() diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index 53e24b9fc6f..9ca78dd7f30 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -46,35 +46,12 @@ del(src) /obj/effect/mine/proc/triggern2o(obj) - //example: n2o triggerproc - //note: im lazy - - for (var/turf/simulated/floor/target in range(1,src)) - if(!target.blocks_air) - - var/datum/gas_mixture/payload = new - var/datum/gas/sleeping_agent/trace_gas = new - - trace_gas.moles = 30 - payload += trace_gas - - target.zone.air.merge(payload) - + atmos_spawn_air(SPAWN_N2O, 360) spawn(0) del(src) /obj/effect/mine/proc/triggerplasma(obj) - for (var/turf/simulated/floor/target in range(1,src)) - if(!target.blocks_air) - - var/datum/gas_mixture/payload = new - - payload.toxins = 30 - - target.zone.air.merge(payload) - - target.hotspot_expose(1000, CELL_VOLUME) - + atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 360) spawn(0) del(src) diff --git a/code/game/objects/effects/spawners/bombspawner.dm b/code/game/objects/effects/spawners/bombspawner.dm index 26d56c153ed..ea7ee2764b1 100644 --- a/code/game/objects/effects/spawners/bombspawner.dm +++ b/code/game/objects/effects/spawners/bombspawner.dm @@ -110,11 +110,15 @@ icon = 'icons/mob/screen1.dmi' icon_state = "x" var/btype = 0 // 0=radio, 1=prox, 2=time + var/btemp1 = 1500 + var/btemp2 = 1000 // tank temperatures timer btype = 2 syndicate + btemp1 = 150 + btemp2 = 20 proximity btype = 1 @@ -136,14 +140,8 @@ PT.master = V OT.master = V - PT.air_contents.temperature = PLASMA_FLASHPOINT - PT.air_contents.toxins = 12 - PT.air_contents.carbon_dioxide = 8 - PT.air_contents.update_values() - - OT.air_contents.temperature = PLASMA_FLASHPOINT - OT.air_contents.oxygen = 20 - OT.air_contents.update_values() + PT.air_contents.temperature = btemp1 + T0C + OT.air_contents.temperature = btemp2 + T0C var/obj/item/device/assembly/S diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index ad68762c631..53178432ef6 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -47,7 +47,7 @@ if(health <= 0) qdel(src) -/obj/effect/spider/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/effect/spider/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 300) health -= 5 healthcheck() diff --git a/code/game/objects/items/dehy_carp.dm b/code/game/objects/items/dehy_carp.dm index f69e9025637..f3d20babcf5 100644 --- a/code/game/objects/items/dehy_carp.dm +++ b/code/game/objects/items/dehy_carp.dm @@ -39,5 +39,5 @@ // Make space carp var/mob/living/simple_animal/hostile/carp/C = new /mob/living/simple_animal/hostile/carp(get_turf(src)) // Make carp non-hostile to user, yes this means - C.faction |= "\ref[owner]" + C.faction |= list("syndicate", "\ref[owner]") qdel(src) \ No newline at end of file diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 65aa09d2567..323a86208a7 100755 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -1223,10 +1223,10 @@ var/global/list/obj/item/device/pda/PDAs = list() if (istype(A, /obj/machinery/atmospherics/pipe/tank)) var/obj/icon = A - for (var/mob/O in viewers(user, null)) - O << "\red [user] has used [src] on \icon[icon] [A]" - var/obj/machinery/atmospherics/pipe/tank/T = A + for (var/mob/O in viewers(user, null)) + O << "\red [user] has used [src] on \icon[icon] [T]" + var/pressure = T.parent.air.return_pressure() var/total_moles = T.parent.air.total_moles() @@ -1424,4 +1424,4 @@ var/global/list/obj/item/device/pda/PDAs = list() /obj/item/device/pda/proc/JFLOG(message as text) if (config) - log_pda("[JFLOG_DescribeSelf()] >>> [message]") + log_pda("[JFLOG_DescribeSelf()] >>> [message]") diff --git a/code/game/objects/items/latexballoon.dm b/code/game/objects/items/latexballoon.dm index daab9b55a69..9b02799e496 100644 --- a/code/game/objects/items/latexballoon.dm +++ b/code/game/objects/items/latexballoon.dm @@ -38,7 +38,7 @@ /obj/item/latexballon/bullet_act() burst() -/obj/item/latexballon/fire_act(datum/gas_mixture/air, temperature, volume) +/obj/item/latexballon/temperature_expose(datum/gas_mixture/air, temperature, volume) if(temperature > T0C+100) burst() return diff --git a/code/game/objects/items/policetape.dm b/code/game/objects/items/policetape.dm index f5044b1de28..b9d21b36934 100644 --- a/code/game/objects/items/policetape.dm +++ b/code/game/objects/items/policetape.dm @@ -9,6 +9,9 @@ var/tape_type = /obj/item/tape var/icon_base +var/list/image/hazard_overlays +var/list/tape_roll_applications = list() + /obj/item/tape name = "tape" icon = 'icons/policetape.dmi' @@ -16,6 +19,24 @@ density = 1 var/icon_base +/obj/item/tape/New() + ..() + if(!hazard_overlays) + hazard_overlays = list() + hazard_overlays["[NORTH]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "N") + hazard_overlays["[EAST]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "E") + hazard_overlays["[SOUTH]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "S") + hazard_overlays["[WEST]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "W") + +/obj/item/taperoll/New() //just using tape is not enough to guarantee the overlays are genned + ..() + if(!hazard_overlays) + hazard_overlays = list() + hazard_overlays["[NORTH]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "N") + hazard_overlays["[EAST]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "E") + hazard_overlays["[SOUTH]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "S") + hazard_overlays["[WEST]"] = new/image('icons/effects/warning_stripes.dmi', icon_state = "W") + /obj/item/taperoll/police name = "police tape" desc = "A roll of police tape used to block off crime scenes from the public." @@ -97,7 +118,10 @@ usr << "\blue You finish placing the [src]." //Git Test /obj/item/taperoll/afterattack(var/atom/A, mob/user as mob, proximity) - if (proximity && istype(A, /obj/machinery/door/airlock)) + if (!proximity) + return + + if(istype(A, /obj/machinery/door/airlock)) var/turf/T = get_turf(A) var/obj/item/tape/P = new tape_type(T.x,T.y,T.z) P.loc = locate(T.x,T.y,T.z) @@ -105,6 +129,23 @@ P.layer = 3.2 user << "\blue You finish placing the [src]." + if (istype(A, /turf/simulated/floor) ||istype(A, /turf/unsimulated/floor)) + var/turf/F = A + var/direction = user.loc == F ? user.dir : turn(user.dir, 180) + var/icon/hazard_overlay = hazard_overlays["[direction]"] + if(tape_roll_applications[F] == null) + tape_roll_applications[F] = 0 + + if(tape_roll_applications[F] & direction) // hazard_overlay in F.overlays wouldn't work. + user.visible_message("[user] uses the adhesive of \the [src] to remove area markings from \the [F].", "You use the adhesive of \the [src] to remove area markings from \the [F].") + F.overlays -= hazard_overlay + tape_roll_applications[F] &= ~direction + else + user.visible_message("[user] applied \the [src] on \the [F] to create area markings.", "You apply \the [src] on \the [F] to create area markings.") + F.overlays |= hazard_overlay + tape_roll_applications[F] |= direction + return + /obj/item/tape/Bumped(M as mob) if(src.allowed(M)) var/turf/T = get_turf(src) diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 015fc0f159e..e9f67a3b060 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -30,7 +30,7 @@ icon_state = "sheet-glass" g_amt = 0 created_window = /obj/structure/window/basic - + /obj/item/stack/sheet/glass/full/New() ..() amount = 50 @@ -106,6 +106,7 @@ W.ini_dir = W.dir W.state = 0 W.anchored = 0 + W.air_update_turf(1) src.use(1) if("Full Window") if(!src) return 1 @@ -119,6 +120,7 @@ var/obj/structure/window/W = new full_window( user.loc, 0 ) W.state = 0 W.anchored = 0 + W.air_update_turf(1) src.use(2) return 0 diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index 97bf00120ef..ab86e4994cf 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -117,7 +117,7 @@ //Step two - washing..... it's actually in washing machine code. //Step three - drying -/obj/item/stack/sheet/wetleather/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/item/stack/sheet/wetleather/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) ..() if(exposed_temperature >= drying_threshold_temperature) wetness-- diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 66dd12bf0b9..3914207e538 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -25,6 +25,10 @@ var/global/list/datum/stack_recipe/metal_recipes = list ( \ new/datum/stack_recipe("brown comfy chair", /obj/structure/stool/bed/chair/comfy/brown, 2, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("lime comfy chair", /obj/structure/stool/bed/chair/comfy/lime, 2, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("teal comfy chair", /obj/structure/stool/bed/chair/comfy/teal, 2, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("red comfy chair", /obj/structure/stool/bed/chair/comfy/red, 2, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("blue comfy chair", /obj/structure/stool/bed/chair/comfy/blue, 2, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("purple comfy chair", /obj/structure/stool/bed/chair/comfy/purp, 2, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("green comfy chair", /obj/structure/stool/bed/chair/comfy/green, 2, one_per_turf = 1, on_floor = 1), \ ), 2), \ null, \ new/datum/stack_recipe("table parts", /obj/item/weapon/table_parts, 2), \ diff --git a/code/game/objects/items/trash.dm b/code/game/objects/items/trash.dm index eb6b59b95cd..043cad9f443 100644 --- a/code/game/objects/items/trash.dm +++ b/code/game/objects/items/trash.dm @@ -6,7 +6,7 @@ icon = 'icons/obj/trash.dmi' w_class = 1.0 desc = "This is rubbish." - autoignition_temperature = AUTOIGNITION_PAPER + raisins name = "4no raisins" icon_state= "4no_raisins" diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm index c2f37d4a455..3ad8dd7a509 100644 --- a/code/game/objects/items/weapons/RCD.dm +++ b/code/game/objects/items/weapons/RCD.dm @@ -156,7 +156,7 @@ RCD if(do_after(user, 50)) if(!useResource(20, user)) return 0 activate() - del(A) + qdel(A) return 1 return 0 return 0 diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm index 4b009aef988..902ce1e052a 100644 --- a/code/game/objects/items/weapons/extinguisher.dm +++ b/code/game/objects/items/weapons/extinguisher.dm @@ -34,7 +34,7 @@ m_amt = 0 max_water = 30 sprite_name = "miniFE" - + /obj/item/weapon/extinguisher/examine() set src in usr @@ -160,6 +160,7 @@ if(isliving(atm)) //For extinguishing mobs on fire var/mob/living/M = atm M.ExtinguishMob() + if(W.loc == my_target) break sleep(2) @@ -168,4 +169,3 @@ step(user, user.inertia_dir) else return ..() - \ No newline at end of file diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm index 67d4528ef1e..af8b8e2fe5f 100644 --- a/code/game/objects/items/weapons/flamethrower.dm +++ b/code/game/objects/items/weapons/flamethrower.dm @@ -189,8 +189,8 @@ /obj/item/weapon/flamethrower/proc/flame_turf(turflist) if(!lit || operating) return operating = 1 - for(var/turf/T in turflist) - if(T.density || istype(T, /turf/space)) + for(var/turf/simulated/T in turflist) + if(!T.air) break if(!previousturf && length(turflist)>1) previousturf = get_turf(src) @@ -210,17 +210,16 @@ /obj/item/weapon/flamethrower/proc/ignite_turf(turf/target) //TODO: DEFERRED Consider checking to make sure tank pressure is high enough before doing this... //Transfer 5% of current tank air contents to turf - var/datum/gas_mixture/air_transfer = ptank.air_contents.remove_ratio(0.02*(throw_amount/100)) - //air_transfer.toxins = air_transfer.toxins * 5 // This is me not comprehending the air system. I realize this is retarded and I could probably make it work without fucking it up like this, but there you have it. -- TLE - new/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel(target,air_transfer.toxins,get_dir(loc,target)) - air_transfer.toxins = 0 + var/datum/gas_mixture/air_transfer = ptank.air_contents.remove_ratio(0.05) + air_transfer.toxins = air_transfer.toxins * 5 // This is me not comprehending the air system. I realize this is retarded and I could probably make it work without fucking it up like this, but there you have it. -- TLE target.assume_air(air_transfer) //Burn it based on transfered gas - //target.hotspot_expose(part4.air_contents.temperature*2,300) target.hotspot_expose((ptank.air_contents.temperature*2) + 380,500) // -- More of my "how do I shot fire?" dickery. -- TLE //location.hotspot_expose(1000,500,1) + air_master.add_to_active(target, 0) return + /obj/item/weapon/flamethrower/full/New(var/loc) ..() weldtool = new /obj/item/weapon/weldingtool(src) diff --git a/code/game/objects/items/weapons/storage/bible.dm b/code/game/objects/items/weapons/storage/bible.dm index cccd0564f8f..6237792040f 100644 --- a/code/game/objects/items/weapons/storage/bible.dm +++ b/code/game/objects/items/weapons/storage/bible.dm @@ -8,8 +8,6 @@ var/mob/affecting = null var/deity_name = "Christ" - autoignition_temperature = 522 // Kelvin - suicide_act(mob/user) viewers(user) << "[user] stares into [src.name] and attempts to trascend understanding of the universe!" return (user.dust()) @@ -20,8 +18,6 @@ desc = "To be applied to the head repeatedly." icon_state ="bible" - autoignition_temperature = 0 // Not actually paper - /obj/item/weapon/storage/bible/booze/New() ..() new /obj/item/weapon/reagent_containers/food/drinks/cans/beer(src) diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 03f627e56e7..04615c623e8 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -26,9 +26,6 @@ item_state = "syringe_kit" foldable = /obj/item/stack/sheet/cardboard //BubbleWrap - autoignition_temperature = 522 // Kelvin - - /obj/item/weapon/storage/box/large name = "large box" desc = "You could build a fort with this." @@ -39,8 +36,6 @@ storage_slots = 21 max_combined_w_class = 42 // 21*2 - autoignition_temperature = 530 // Kelvin - /obj/item/weapon/storage/box/survival New() ..() diff --git a/code/game/objects/items/weapons/tanks/jetpack.dm b/code/game/objects/items/weapons/tanks/jetpack.dm index 89df0ed8d01..74ab6d991ac 100644 --- a/code/game/objects/items/weapons/tanks/jetpack.dm +++ b/code/game/objects/items/weapons/tanks/jetpack.dm @@ -80,9 +80,8 @@ New() ..() - //src.air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) - air_contents.adjust((6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) - return + air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) + /obj/item/weapon/tank/jetpack/oxygen name = "Jetpack (Oxygen)" @@ -92,9 +91,7 @@ New() ..() - //src.air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) - air_contents.adjust((6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) - return + air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) /obj/item/weapon/tank/jetpack/oxygen/harness name = "jet harness (oxygen)" @@ -113,9 +110,7 @@ New() ..() - //src.air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) - air_contents.adjust((6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) - return + air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) /obj/item/weapon/tank/jetpack/carbondioxide name = "Jetpack (Carbon Dioxide)" @@ -128,9 +123,7 @@ ..() src.ion_trail = new /datum/effect/effect/system/ion_trail_follow() src.ion_trail.set_up(src) - //src.air_contents.carbon_dioxide = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) - air_contents.adjust(0,(6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) - return + air_contents.carbon_dioxide = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) examine() set src in usr diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm index 1533b5d2c51..70f7a8235a4 100644 --- a/code/game/objects/items/weapons/tanks/tank_types.dm +++ b/code/game/objects/items/weapons/tanks/tank_types.dm @@ -19,8 +19,7 @@ New() ..() - //src.air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) - air_contents.adjust((6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C)) + src.air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) return @@ -59,9 +58,6 @@ trace_gas.moles = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD src.air_contents.trace_gases += trace_gas - // - air_contents.update_values() - return /* @@ -85,12 +81,8 @@ src.air_contents.oxygen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * O2STANDARD src.air_contents.nitrogen = (6*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) * N2STANDARD - // - src.air_contents.update_values() - return - /* * Plasma */ @@ -101,15 +93,13 @@ flags = CONDUCT slot_flags = null //they have no straps! - /obj/item/weapon/tank/plasma/New() ..() src.air_contents.toxins = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C) - // - src.air_contents.update_values() return + /obj/item/weapon/tank/plasma/attackby(obj/item/weapon/W as obj, mob/user as mob, params) ..() @@ -152,9 +142,6 @@ New() ..() src.air_contents.oxygen = (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) - // - src.air_contents.update_values() - return @@ -182,7 +169,6 @@ New() ..() src.air_contents.oxygen = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) - src.air_contents.update_values() return /* @@ -199,8 +185,6 @@ ..() src.air_contents.nitrogen = (3*ONE_ATMOSPHERE)*70/(R_IDEAL_GAS_EQUATION*T20C) - // - src.air_contents.update_values() return /obj/item/weapon/tank/nitrogen/examine() @@ -224,7 +208,4 @@ ..() src.air_contents.oxygen -= (3*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) src.air_contents.nitrogen = (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C) - // - src.air_contents.update_values() - return \ No newline at end of file diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm index ebd2d4626f1..afaebdc4fe4 100644 --- a/code/game/objects/items/weapons/tanks/watertank.dm +++ b/code/game/objects/items/weapons/tanks/watertank.dm @@ -357,8 +357,8 @@ var/datum/gas_mixture/G = T.air if(get_dist(T, src) < 2) // Otherwise we'll get silliness like people using Nanofrost to kill people through walls with cold air G.temperature = 2 - update_nearby_tiles() - var/hotspot = (locate(/obj/fire) in T) + air_update_turf() + var/hotspot = (locate(/obj/effect/hotspot) in T) if(hotspot && !istype(T, /turf/space)) var/CT = 10 var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() ) diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 761b445d7ee..5f4cfbe49c9 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -267,7 +267,6 @@ var/turf/location = get_turf(user) if (istype(location, /turf)) location.hotspot_expose(700, 50, 1) - if(isliving(O)) var/mob/living/L = O L.IgniteMob() diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index 7909019481e..edc0426c5b8 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -178,14 +178,14 @@ obj/item/weapon/twohanded/ if(A && wielded && (istype(A,/obj/structure/window) || istype(A,/obj/structure/grille))) //destroys windows and grilles in one hit if(istype(A,/obj/structure/window)) - var/pdiff=performWallPressureCheck(A.loc) + /* var/pdiff=performWallPressureCheck(A.loc) if(pdiff>0) message_admins("[A] with pdiff [pdiff] fire-axed by [user.real_name] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(A.loc)]!") - log_admin("[A] with pdiff [pdiff] fire-axed by [user.real_name] ([user.ckey]) at [A.loc]!") + log_admin("[A] with pdiff [pdiff] fire-axed by [user.real_name] ([user.ckey]) at [A.loc]!")*///TODO: Figure out how the hell to remake this proc var/obj/structure/window/W = A W.destroy() else - del(A) + qdel(A) /* diff --git a/code/game/objects/structures/barsign.dm b/code/game/objects/structures/barsign.dm index 532454b445f..aeabb4e887b 100644 --- a/code/game/objects/structures/barsign.dm +++ b/code/game/objects/structures/barsign.dm @@ -2,6 +2,7 @@ icon = 'icons/obj/barsigns.dmi' icon_state = "empty" anchored = 1 + var/nopick = 0 New() ChangeSign(pick("magmasea", "limbo", "rustyaxe", "armokbar", "brokendrum", "meadbay", "thecavern", "cindikate", "theorchard", "lv426", "zocalo", "4theemprah", "ishimura", "tardis", "quarks", "tenforward", "thepranicngpony", "vault13", "solaris", "thehive", "cantina", "theouterspess", "milliways42", "thetimeofeve", "spaceasshole", "dwarffortress", "thebark", "thedrunkcarp", "theharmbaton", "thenest", "officerbeersky", "thesingulo")) return @@ -10,3 +11,18 @@ //on = 0 //brightness_on = 4 //uncomment these when the lighting fixes get in return + +/obj/structure/sign/double/barsign/attackby(obj/item/I, mob/user) + if(nopick) + return + + if(istype(I, /obj/item/weapon/card/id)) + var/obj/item/weapon/card/id/card = I + if(access_bar in card.GetAccess()) + var/sign_type = input(user, "What would you like to change the barsign to?") as null|anything in list("Off", "Magma Sea", "Limbo", "Rusty Axe", "Armok Bar", "Broken Drum", "Mead bay", "The Cavern", "Cindi Kate", "The Orchard", "LV 426", "Zocalo", "4 The Emprah", "Ishimura", "Tardis", "Quarks", "Ten Forward", "The Pranicng Pony", "Vault 13", "Solaris", "The Hive", "Cantina", "The Outer Spess", "Milliways 42", "The Time Of Eve", "Space Asshole", "Dwarf Fortress", "The Bark", "The Drunk Carp", "The Harm Baton", "The Nest", "Officer Beersky", "The Singulo", "On") + if(sign_type == null) + return + else + sign_type = replacetext(lowertext(sign_type), " ", "") // lowercase, strip spaces - along with choices for user options, avoids huge if-else-else + src.ChangeSign(sign_type) + user << "You change the barsign." \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index fcead78a565..48dd73532bf 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -105,6 +105,10 @@ new /obj/item/weapon/storage/backpack/cultpack (src) new /obj/item/weapon/storage/fancy/candle_box(src) new /obj/item/weapon/storage/fancy/candle_box(src) + new /obj/item/clothing/gloves/ring/silver(src) + new /obj/item/clothing/gloves/ring/silver(src) + new /obj/item/clothing/gloves/ring/gold(src) + new /obj/item/clothing/gloves/ring/gold(src) return diff --git a/code/game/objects/structures/curtains.dm b/code/game/objects/structures/curtains.dm index e48e8419d2c..53cc69d98ae 100644 --- a/code/game/objects/structures/curtains.dm +++ b/code/game/objects/structures/curtains.dm @@ -1,14 +1,17 @@ +#define SHOWER_OPEN_LAYER OBJ_LAYER + 0.4 +#define SHOWER_CLOSED_LAYER MOB_LAYER + 0.1 + /obj/structure/curtain icon = 'icons/obj/curtain.dmi' name = "curtain" icon_state = "closed" - layer = MOB_LAYER + 0.1 + layer = SHOWER_CLOSED_LAYER opacity = 1 density = 0 /obj/structure/curtain/open icon_state = "open" - layer = OBJ_LAYER + layer = SHOWER_OPEN_LAYER opacity = 0 /obj/structure/curtain/bullet_act(obj/item/projectile/P, def_zone) @@ -27,10 +30,10 @@ opacity = !opacity if(opacity) icon_state = "closed" - layer = MOB_LAYER + 0.1 + layer = SHOWER_CLOSED_LAYER else icon_state = "open" - layer = OBJ_LAYER + layer = SHOWER_OPEN_LAYER /obj/structure/curtain/black name = "black curtain" @@ -45,3 +48,12 @@ name = "shower curtain" color = "#ACD1E9" alpha = 200 + +/obj/structure/curtain/open/shower/engineering + color = "#FFA500" + +/obj/structure/curtain/open/shower/security + color = "#AA0000" + +#undef SHOWER_OPEN_LAYER +#undef SHOWER_CLOSED_LAYER \ No newline at end of file diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index e00b7f1c366..b69126768e0 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -6,68 +6,6 @@ // Also affects admin alerts. #define FALSEDOOR_MAX_PRESSURE_DIFF 25.0 -/** -* Gets the highest and lowest pressures from the tiles in cardinal directions -* around us, then checks the difference. -*/ -/proc/getOPressureDifferential(var/turf/loc) - var/minp=16777216; - var/maxp=0; - for(var/dir in cardinal) - var/turf/simulated/T=get_turf(get_step(loc,dir)) - var/cp=0 - if(T && istype(T) && T.zone) - var/datum/gas_mixture/environment = T.return_air() - cp = environment.return_pressure() - else - if(istype(T,/turf/simulated)) - continue - if(cpmaxp)maxp=cp - return abs(minp-maxp) - -// Checks pressure here vs. around us. -/proc/performFalseWallPressureCheck(var/turf/loc) - var/turf/simulated/lT=loc - if(!istype(lT) || !lT.zone) - return 0 - var/datum/gas_mixture/myenv=lT.return_air() - var/pressure=myenv.return_pressure() - - for(var/dir in cardinal) - var/turf/simulated/T=get_turf(get_step(loc,dir)) - if(T && istype(T) && T.zone) - var/datum/gas_mixture/environment = T.return_air() - var/pdiff = abs(pressure - environment.return_pressure()) - if(pdiff > FALSEDOOR_MAX_PRESSURE_DIFF) - return pdiff - return 0 - -/proc/performWallPressureCheck(var/turf/loc) - var/pdiff = getOPressureDifferential(loc) - if(pdiff > FALSEDOOR_MAX_PRESSURE_DIFF) - return pdiff - return 0 - -/client/proc/pdiff() - set name = "Get PDiff" - set category = "Debug" - - if(!mob || !holder) - return - var/turf/T = mob.loc - - if (!( istype(T, /turf) )) - return - - var/pdiff = getOPressureDifferential(T) - var/fwpcheck=performFalseWallPressureCheck(T) - var/wpcheck=performWallPressureCheck(T) - - src << "Pressure Differential (cardinals): [pdiff]" - src << "FWPCheck: [fwpcheck]" - src << "WPCheck: [wpcheck]" - /obj/structure/falsewall name = "wall" desc = "A huge chunk of metal used to seperate rooms." @@ -97,7 +35,7 @@ for(var/obj/structure/falsewall/W in range(temploc,1)) W.relativewall() ..() - + /obj/structure/falsewall/relativewall() if(!density) @@ -140,7 +78,7 @@ SetOpacity(1) update_icon() opening = 0 - + /obj/structure/falsewall/proc/do_the_flick() if(density) flick("[walltype]fwall_opening", src) @@ -154,7 +92,7 @@ relativewall() else icon_state = "[walltype]fwall_open" - + /obj/structure/falsewall/proc/ChangeToWall(delete = 1) var/turf/T = get_turf(src) if(!walltype || walltype == "metal") @@ -257,7 +195,7 @@ junction |= get_dir(src,W) icon_state = "rwall[junction]" return - + /* * Uranium Falsewalls */ @@ -321,7 +259,17 @@ desc = "A wall with plasma plating. This is definately a bad idea." icon_state = "" mineral = "plasma" - walltype = "plasma" + walltype = "plasma" + +/obj/structure/falsewall/plasma/proc/burnbabyburn(user) + playsound(src, 'sound/items/Welder.ogg', 100, 1) + atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 400) + new /obj/structure/girder/displaced(loc) + qdel(src) + +/obj/structure/falsewall/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(exposed_temperature > 300) + burnbabyburn() //-----------wtf?-----------start /obj/structure/falsewall/clown diff --git a/code/game/objects/structures/fullwindow.dm b/code/game/objects/structures/fullwindow.dm index cff4b75de02..71c6e56616d 100644 --- a/code/game/objects/structures/fullwindow.dm +++ b/code/game/objects/structures/fullwindow.dm @@ -10,18 +10,6 @@ return 1 return 0 -/obj/structure/window/full/update_nearby_tiles(need_rebuild) - if(!air_master) return 0 - if(!loc) return 0 - - var/turf/simulated/source = get_turf(src) - if(istype(source)) - air_master.tiles_to_update |= source - for(var/dir in cardinal) - var/turf/simulated/target = get_step(source,dir) - if(istype(target)) air_master.tiles_to_update |= target - return 1 - /obj/structure/window/full/is_fulltile() return 1 diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index f5a2e615b6a..8057ce7e922 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -71,17 +71,10 @@ if(/obj/item/stack/sheet/metal, /obj/item/stack/sheet/metal/cyborg) if(!anchored) if(S.amount < 2) return - var/pdiff=performWallPressureCheck(src.loc) - if(!pdiff) - 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) - del(src) - else - user << "\red There is too much air moving through the gap! The door wouldn't stay closed if you built it." - message_admins("Attempted false wall made by [user.real_name] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(loc)] had a pressure difference of [pdiff]!") - log_admin("Attempted false wall made by [user.real_name] (user.ckey) at [loc] had a pressure difference of [pdiff]!") - 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) + del(src) else if(S.amount < 2) return ..() user << "\blue Now adding plating..." @@ -99,17 +92,10 @@ if(/obj/item/stack/sheet/plasteel) if(!anchored) if(S.amount < 2) return - var/pdiff=performWallPressureCheck(src.loc) - if(!pdiff) - S.use(2) - user << "\blue You create a false wall! Push on it to open or close the passage." - new /obj/structure/falsewall/reinforced (src.loc) - del(src) - else - user << "\red There is too much air moving through the gap! The door wouldn't stay closed if you built it." - message_admins("Attempted false rwall made by [user.real_name] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(loc)] had a pressure difference of [pdiff]!") - log_admin("Attempted false rwall made by [user.real_name] ([user.ckey]) at [loc] had a pressure difference of [pdiff]!") - return + S.use(2) + user << "\blue You create a false wall! Push on it to open or close the passage." + new /obj/structure/falsewall/reinforced (src.loc) + del(src) else if (src.icon_state == "reinforced") //I cant believe someone would actually write this line of code... if(S.amount < 1) return ..() @@ -139,18 +125,11 @@ var/M = S.sheettype if(!anchored) if(S.amount < 2) return - var/pdiff=performWallPressureCheck(src.loc) - if(!pdiff) - S.use(2) - user << "\blue 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) - del(src) - else - user << "\red There is too much air moving through the gap! The door wouldn't stay closed if you built it." - message_admins("Attempted false [M] wall made by [user.real_name] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(loc)] had a pressure difference of [pdiff]!") - log_admin("Attempted false [M] wall made by [user.real_name] ([user.ckey]) at [loc] had a pressure difference of [pdiff]!") - return + S.use(2) + user << "\blue 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) + del(src) else if(S.amount < 2) return ..() user << "\blue Now adding plating..." @@ -187,7 +166,7 @@ if(health <= 0) new /obj/item/stack/sheet/metal(get_turf(src)) del(src) - + if(istype(Proj ,/obj/item/projectile/beam/pulse)) src.ex_act(2) ..() @@ -248,7 +227,7 @@ else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill)) user << "\blue You drill through the girder!" dismantle() - + /obj/structure/cultgirder/proc/dismantle() new /obj/effect/decal/remains/human(get_turf(src)) qdel(src) @@ -256,7 +235,7 @@ /obj/structure/cultgirder/blob_act() if(prob(40)) dismantle() - + /obj/structure/cultgirder/bullet_act(var/obj/item/projectile/Proj) //No beam check- How else will you destroy the cult girder with silver bullets????? health -= Proj.damage ..() diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 548bcbe0986..bb5838ceffd 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -258,7 +258,7 @@ return 0 return 0 -/obj/structure/grille/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/structure/grille/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(!destroyed) if(exposed_temperature > T0C + 1500) health -= 1 diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm index 3cb32653054..5d4eab9c35b 100644 --- a/code/game/objects/structures/inflatable.dm +++ b/code/game/objects/structures/inflatable.dm @@ -28,10 +28,10 @@ New(location) ..() - update_nearby_tiles(need_rebuild=1) + air_update_turf() Del() - update_nearby_tiles() + air_update_turf() ..() CanPass(atom/movable/mover, turf/target, height=0, air_group=0) @@ -217,7 +217,7 @@ Close() else Open() - update_nearby_tiles() + air_update_turf() proc/Open() isSwitchingStates = 1 diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 127ee7ee638..d4d3dc787c0 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -20,12 +20,17 @@ ..() icon_state = mineralType name = "[mineralType] door" - update_nearby_tiles(need_rebuild=1) + air_update_turf(1) Destroy() - update_nearby_tiles() + air_update_turf(1) ..() + Move() + var/turf/T = loc + ..() + move_update_air(T) + Bumped(atom/user) ..() if(!state) @@ -51,6 +56,9 @@ return !opacity return !density + CanAtmosPass() + return !density + proc/TryToSwitchState(atom/user) if(isSwitchingStates) return if(ismob(user)) @@ -82,7 +90,7 @@ state = 1 update_icon() isSwitchingStates = 0 - update_nearby_tiles() + air_update_turf() proc/Close() isSwitchingStates = 1 @@ -94,7 +102,7 @@ state = 0 update_icon() isSwitchingStates = 0 - update_nearby_tiles() + air_update_turf() update_icon() if(state) @@ -187,34 +195,21 @@ /obj/structure/mineral_door/transparent/plasma mineralType = "plasma" -/* - attackby(obj/item/weapon/W as obj, mob/user as mob, params) + attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W,/obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = W if(WT.remove_fuel(0, user)) TemperatureAct(100) ..() - fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) + temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 300) TemperatureAct(exposed_temperature) proc/TemperatureAct(temperature) - for(var/turf/simulated/floor/target_tile in range(2,loc)) - - var/datum/gas_mixture/napalm = new - - var/toxinsToDeduce = temperature/10 - - napalm.toxins = toxinsToDeduce - napalm.temperature = 200+T0C - - target_tile.assume_air(napalm) - spawn (0) target_tile.hotspot_expose(temperature, 400) - - hardness -= toxinsToDeduce/100 - CheckHardness() -*/ + atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 500) + hardness = 0 + CheckHardness() /obj/structure/mineral_door/transparent/diamond mineralType = "diamond" diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index 2a493bdff37..5d6dac37720 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -54,13 +54,20 @@ buckle_mob(M, user) return +/obj/structure/stool/bed/proc/afterbuckle(mob/M as mob) //Called after somebody buckled / unbuckled + return + /obj/structure/stool/bed/proc/unbuckle() if(buckled_mob) if(buckled_mob.buckled == src) //this is probably unneccesary, but it doesn't hurt buckled_mob.buckled = null buckled_mob.anchored = initial(buckled_mob.anchored) buckled_mob.update_canmove() + + var/M = buckled_mob buckled_mob = null + + afterbuckle(M) return /obj/structure/stool/bed/proc/manual_unbuckle(mob/user as mob) @@ -110,6 +117,7 @@ M.update_canmove() src.buckled_mob = M src.add_fingerprint(user) + afterbuckle(M) return /* diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm index 6a5598a37ef..85e47ec0c40 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm @@ -73,7 +73,6 @@ // Chair types /obj/structure/stool/bed/chair/wood - autoignition_temperature = AUTOIGNITION_WOOD // TODO: Special ash subtype that looks like charred chair legs /obj/structure/stool/bed/chair/wood/normal @@ -97,26 +96,53 @@ /obj/structure/stool/bed/chair/comfy name = "comfy chair" desc = "It looks comfy." + icon_state = "comfychair" + color = rgb(255,255,255) + var/image/armrest = null + +/obj/structure/stool/bed/chair/comfy/New() + armrest = image("icons/obj/objects.dmi", "comfychair_armrest") + armrest.layer = MOB_LAYER + 0.1 + + return ..() + +/obj/structure/stool/bed/chair/comfy/afterbuckle() + if(buckled_mob) + overlays += armrest + else + overlays -= armrest /obj/structure/stool/bed/chair/comfy/brown - icon_state = "comfychair_brown" + color = rgb(141,70,0) -/obj/structure/stool/bed/chair/comfy/beige - icon_state = "comfychair_beige" +/obj/structure/stool/bed/chair/comfy/red + color = rgb(218,2,10) /obj/structure/stool/bed/chair/comfy/teal - icon_state = "comfychair_teal" + color = rgb(0,234,250) + +/obj/structure/stool/bed/chair/comfy/black + color = rgb(60,60,60) + +/obj/structure/stool/bed/chair/comfy/green + color = rgb(1,196,8) + +/obj/structure/stool/bed/chair/comfy/purp + color = rgb(112,2,176) + +/obj/structure/stool/bed/chair/comfy/blue + color = rgb(2,9,210) + +/obj/structure/stool/bed/chair/comfy/beige + color = rgb(255,253,195) + +/obj/structure/stool/bed/chair/comfy/lime + color = rgb(255,251,0) /obj/structure/stool/bed/chair/office anchored = 0 movable = 1 -/obj/structure/stool/bed/chair/comfy/black - icon_state = "comfychair_black" - -/obj/structure/stool/bed/chair/comfy/lime - icon_state = "comfychair_lime" - /obj/structure/stool/bed/chair/office/Move() ..() if(buckled_mob) @@ -166,7 +192,7 @@ name = "old ratty sofa" icon_state = "sofamiddle" anchored = 1 - density = 1 + /obj/structure/stool/bed/chair/sofa/left icon_state = "sofaend_left" /obj/structure/stool/bed/chair/sofa/right diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 814fe2fc07e..9d50bbd9c4e 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -561,7 +561,6 @@ icon_state = "wood_table" parts = /obj/item/weapon/table_parts/wood health = 50 - autoignition_temperature = AUTOIGNITION_WOOD // TODO: Special ash subtype that looks like charred table legs. /obj/structure/table/woodentable/attackby(obj/item/I as obj, mob/user as mob, params) diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index b41b5be8afc..a9ef0455066 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -30,20 +30,32 @@ obj/structure/windoor_assembly obj/structure/windoor_assembly/New(dir=NORTH) ..() src.ini_dir = src.dir - update_nearby_tiles(need_rebuild=1) + air_update_turf(1) obj/structure/windoor_assembly/Destroy() density = 0 - update_nearby_tiles() + air_update_turf(1) ..() +/obj/structure/windoor_assembly/Move() + var/turf/T = loc + ..() + move_update_air(T) + /obj/structure/windoor_assembly/update_icon() icon_state = "[facing]_[secure ? "secure_" : ""]windoor_assembly[state]" -/obj/structure/windoor_assembly/CanPass(atom/movable/mover, turf/target, height=0) +/obj/structure/windoor_assembly/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) if(istype(mover) && mover.checkpass(PASSGLASS)) return 1 if(get_dir(loc, target) == dir) //Make sure looking at appropriate border + if(air_group) return 0 + return !density + else + return 1 + +/obj/structure/windoor_assembly/CanAtmosPass(var/turf/T) + if(get_dir(loc, T) == dir) return !density else return 1 diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 568f4d45e9a..4bcadcb265d 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -60,13 +60,9 @@ var/global/wcColored /obj/structure/window/bullet_act(var/obj/item/projectile/Proj) if((Proj.damage_type == BRUTE || Proj.damage_type == BURN)) health -= Proj.damage - update_nearby_icons() + air_update_turf(1) ..() if(health <= 0) - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff>0) - msg_admin_attack("Window destroyed by [Proj.firer.name] ([formatPlayerPanel(Proj.firer,Proj.firer.ckey)]) via \an [Proj]! pdiff = [pdiff] at [formatJumpTo(loc)]!") - log_admin("Window destroyed by ([Proj.firer.ckey]) via \an [Proj]! pdiff = [pdiff] at [loc]!") destroy() return @@ -118,11 +114,7 @@ var/global/wcColored ..() visible_message("[src] was hit by [AM].") var/tforce = 0 - var/mob/M=null - if(ismob(AM)) - tforce = 40 - M=AM - else if(isobj(AM)) + if(isobj(AM)) var/obj/item/I = AM tforce = I.throwforce if(reinf) tforce *= 0.25 @@ -132,23 +124,7 @@ var/global/wcColored anchored = 0 update_nearby_icons() step(src, get_dir(AM, src)) - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff>0) - if(M) - msg_admin_attack("Window with pdiff [pdiff] at [formatJumpTo(loc)] deanchored by [M.real_name][isAntag(M) ? "(ANTAG)" : ""] ([formatPlayerPanel(M,M.ckey)])!") - log_admin("Window with pdiff [pdiff] at [loc] deanchored by [M.real_name] ([M.ckey])!") - else - msg_admin_attack("Window with pdiff [pdiff] at [formatJumpTo(loc)] deanchored by [AM]!") - log_admin("Window with pdiff [pdiff] at [loc] deanchored by [AM]!") if(health <= 0) - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff>0) - if(M) - msg_admin_attack("Window with pdiff [pdiff] at [formatJumpTo(loc)] destroyed by [M.real_name][isAntag(M) ? "(ANTAG)" : ""] ([formatPlayerPanel(M,M.ckey)])!") - log_admin("Window with pdiff [pdiff] at [loc] destroyed by [M.real_name] ([M.ckey])!") - else - msg_admin_attack("Window with pdiff [pdiff] at [formatJumpTo(loc)] destroyed by [AM]!") - log_admin("Window with pdiff [pdiff] at [loc] destroyed by [AM]!") destroy() @@ -156,10 +132,6 @@ var/global/wcColored if(HULK in user.mutations) user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!")) user.visible_message("[user] smashes through [src]!") - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff>0) - msg_admin_attack("Window destroyed by hulk [user.real_name][isAntag(user) ? "(ANTAG)" : ""] ([formatPlayerPanel(user,user.ckey)]) with pdiff [pdiff] at [formatJumpTo(loc)]!") - log_admin("Window destroyed by hulk [user.real_name] ([user.ckey]) with pdiff [pdiff] at [loc]!") destroy() else if (usr.a_intent == "harm") user.changeNext_move(CLICK_CD_MELEE) @@ -185,9 +157,6 @@ var/global/wcColored health -= damage if(health <= 0) user.visible_message("[user] smashes through [src]!") - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff>0) - msg_admin_attack("Window destroyed by [user.real_name][isAntag(user) ? "(ANTAG)" : ""] ([formatPlayerPanel(user,user.ckey)]) with pdiff [pdiff] at [formatJumpTo(loc)]!") destroy() else //for nicer text~ user.visible_message("[user] smashes into [src]!") @@ -255,21 +224,11 @@ var/global/wcColored update_nearby_icons() playsound(loc, 'sound/items/Screwdriver.ogg', 75, 1) user << (anchored ? "You have fastened the frame to the floor." : "You have unfastened the frame from the floor.") - if(!anchored) - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff>0) - msg_admin_attack("Window with pdiff [pdiff] deanchored by [user.real_name][isAntag(user) ? "(ANTAG)" : ""] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(loc)]!") - log_admin("Window with pdiff [pdiff] deanchored by [user.real_name] ([user.ckey]) at [loc]!") else if(!reinf) anchored = !anchored update_nearby_icons() playsound(loc, 'sound/items/Screwdriver.ogg', 75, 1) user << (anchored ? "You have fastened the window to the floor." : "You have unfastened the window.") - if(!anchored) - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff>0) - msg_admin_attack("Window with pdiff [pdiff] deanchored by [user.real_name][isAntag(user) ? "(ANTAG)" : ""] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(loc)]!") - log_admin("Window with pdiff [pdiff] deanchored by [user.real_name] ([user.ckey]) at [loc]!") else if(istype(W, /obj/item/weapon/crowbar) && reinf && state <= 1) state = 1 - state playsound(loc, 'sound/items/Crowbar.ogg', 75, 1) @@ -297,7 +256,7 @@ var/global/wcColored user << "You have disassembled the window." disassembled = 1 density = 0 - update_nearby_tiles() + air_update_turf(1) update_nearby_icons() del(src) else @@ -308,10 +267,6 @@ var/global/wcColored anchored = 0 update_nearby_icons() step(src, get_dir(user, src)) - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff>0) - msg_admin_attack("Window with pdiff [pdiff] deanchored by [user.real_name][isAntag(user) ? "(ANTAG)" : ""] ([formatPlayerPanel(user,user.ckey)]) at [formatJumpTo(loc)]!") - log_admin("Window with pdiff [pdiff] deanchored by [user.real_name] ([user.ckey]) at [loc]!") else playsound(loc, 'sound/effects/Glasshit.ogg', 75, 1) ..() @@ -328,9 +283,6 @@ var/global/wcColored if(sound_effect) playsound(loc, 'sound/effects/Glasshit.ogg', 75, 1) if(health <= 0) - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff>0) - msg_admin_attack("Window with pdiff [pdiff] broken at [formatJumpTo(loc)]!") destroy() return @@ -344,10 +296,9 @@ var/global/wcColored usr << "It is fastened to the floor therefore you can't rotate it!" return 0 - update_nearby_tiles(need_rebuild=1) //Compel updates before dir = turn(dir, 90) // updateSilicate() - update_nearby_tiles(need_rebuild=1) + air_update_turf(1) ini_dir = dir return @@ -361,10 +312,9 @@ var/global/wcColored usr << "It is fastened to the floor therefore you can't rotate it!" return 0 - update_nearby_tiles(need_rebuild=1) //Compel updates before dir = turn(dir, 270) // updateSilicate() - update_nearby_tiles(need_rebuild=1) + air_update_turf(1) ini_dir = dir return @@ -389,24 +339,23 @@ var/global/wcColored ini_dir = dir if(!color && !istype(src,/obj/structure/window/plasmabasic) && !istype(src,/obj/structure/window/plasmareinforced)) color = color_windows(src) - update_nearby_tiles(need_rebuild=1) + air_update_turf(1) update_nearby_icons() return /obj/structure/window/Destroy() density = 0 - update_nearby_tiles() + air_update_turf(1) if(loc && !disassembled) playsound(get_turf(src), "shatter", 70, 1) - update_nearby_icons() ..() /obj/structure/window/Move() - update_nearby_tiles(need_rebuild=1) + var/turf/T = loc ..() dir = ini_dir - update_nearby_tiles(need_rebuild=1) + move_update_air(T) //checks if this window is full-tile one /obj/structure/window/proc/is_fulltile() @@ -414,7 +363,14 @@ var/global/wcColored return 1 return 0 -//This proc is used to update the icons of nearby windows. It should not be confused with update_nearby_tiles(), which is an atmos proc! +/obj/structure/window/CanAtmosPass(turf/T) + if(get_dir(loc, T) == dir) + return !density + if(dir == SOUTHWEST || dir == SOUTHEAST || dir == NORTHWEST || dir == NORTHEAST) + return !density + return 1 + +//This proc is used to update the icons of nearby windows. /obj/structure/window/proc/update_nearby_icons() if(!loc) return 0 update_icon() @@ -425,7 +381,7 @@ var/global/wcColored /obj/structure/window/update_icon() return -/obj/structure/window/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/structure/window/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > T0C + 800) hit(round(exposed_volume / 100), 0) ..() @@ -447,15 +403,23 @@ var/global/wcColored /obj/structure/window/plasmabasic/New(Loc,re=0) ..() ini_dir = dir - update_nearby_tiles(need_rebuild=1) + air_update_turf() update_nearby_icons() return +/obj/structure/window/plasmabasic/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(exposed_temperature > T0C + 32000) + hit(round(exposed_volume / 1000), 0) + ..() + /obj/structure/window/plasmabasic/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > T0C + 32000) hit(round(exposed_volume / 1000), 0) ..() +/obj/structure/window/plasmabasic/BlockSuperconductivity() + return 1 + /obj/structure/window/plasmareinforced name = "reinforced plasma window" desc = "A plasma-glass alloy window, with rods supporting it. It looks hopelessly tough to break. It also looks completely fireproof, considering how basic plasma windows are insanely fireproof." @@ -470,13 +434,19 @@ var/global/wcColored /obj/structure/window/plasmareinforced/New(Loc,re=0) ..() ini_dir = dir - update_nearby_tiles(need_rebuild=1) + air_update_turf() update_nearby_icons() return +/obj/structure/window/plasmareinforced/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + return + /obj/structure/window/plasmareinforced/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) return +/obj/structure/window/plasmareinforced/BlockSuperconductivity() + return 1 //okay this SHOULD MAKE THE TOXINS CHAMBER WORK + /obj/structure/window/reinforced name = "reinforced window" desc = "It looks rather strong. Might take a few good hits to shatter it." diff --git a/code/game/shuttle_engines.dm b/code/game/shuttle_engines.dm index 6bd631e88f3..f0d0544bd45 100644 --- a/code/game/shuttle_engines.dm +++ b/code/game/shuttle_engines.dm @@ -14,6 +14,9 @@ if(!height || air_group) return 0 else return ..() + CanAtmosPass(turf/T) + return !density + /obj/structure/shuttle/engine name = "engine" density = 1 diff --git a/code/game/turfs/simulated.dm b/code/game/turfs/simulated.dm index 3a9f559e133..fecdf392d51 100644 --- a/code/game/turfs/simulated.dm +++ b/code/game/turfs/simulated.dm @@ -15,6 +15,9 @@ ..() levelupdate() +/turf/simulated/proc/burn_tile() + return + /turf/simulated/proc/MakeSlippery(var/wet_setting = 1) // 1 = Water, 2 = Lube if(wet >= wet_setting) return @@ -157,7 +160,7 @@ else M.inertia_dir = 0 return - else if(!istype(M, /mob/living/carbon/metroid) || (M:species.bodyflags & FEET_NOSLIP)) + else if(!istype(M, /mob/living/carbon/slime) || (M:species.bodyflags & FEET_NOSLIP)) if (M.m_intent == "run" && prob(30)) M.stop_pulling() step(M, M.dir) diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index e75a0d4dc33..55954dc957f 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -44,15 +44,6 @@ var/list/wood_icons = list("wood","wood-broken") else icon_regular_floor = icon_state -/turf/simulated/floor/ignite(var/temperature) - on_fire=1 - visible_message("\The [src] bursts into flame!") - overlays += image(fire_dmi,fire_sprite) - spawn(rand(fire_time_min,fire_time_max) SECONDS) - if(!on_fire) - return - burn_tile() - //turf/simulated/floor/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) // if ((istype(mover, /obj/machinery/vehicle) && !(src.burnt))) // if (!( locate(/obj/machinery/mass_driver, src) )) @@ -302,7 +293,7 @@ turf/simulated/floor/proc/update_icon() src.icon_state = "sand[pick("1","2","3")]" broken = 1 -/turf/simulated/floor/proc/burn_tile() +/turf/simulated/floor/burn_tile() if(istype(src,/turf/simulated/floor/engine)) return if(istype(src,/turf/simulated/floor/plating/airless/asteroid)) return//Asteroid tiles don't burn if(broken || burnt) return diff --git a/code/game/turfs/simulated/floor_types.dm b/code/game/turfs/simulated/floor_types.dm index 9f1288de647..91e4fd2a9b9 100644 --- a/code/game/turfs/simulated/floor_types.dm +++ b/code/game/turfs/simulated/floor_types.dm @@ -74,14 +74,14 @@ /turf/simulated/floor/engine/n20 New() . = ..() - //var/datum/gas_mixture/adding = new + var/datum/gas_mixture/adding = new var/datum/gas/sleeping_agent/trace_gas = new - air.trace_gases += trace_gas - trace_gas.moles = 70000 - air.oxygen = 0 - air.nitrogen = 0 - air.update_values() + trace_gas.moles = 2000 + adding.trace_gases += trace_gas + adding.temperature = T20C + + assume_air(adding) /turf/simulated/floor/engine/vacuum name = "vacuum floor" @@ -120,7 +120,7 @@ /turf/simulated/floor/greengrid icon = 'icons/turf/floors.dmi' icon_state = "gcircuit" - + /turf/simulated/floor/greengrid/airless icon_state = "gcircuit" name = "airless floor" @@ -154,7 +154,7 @@ name = "plating" icon = 'icons/turf/floors.dmi' icon_state = "plating" - + /turf/simulated/shuttle/plating/vox //Vox skipjack plating oxygen = 0 nitrogen = MOLES_N2STANDARD + MOLES_O2STANDARD @@ -162,7 +162,7 @@ /turf/simulated/shuttle/floor4 // Added this floor tile so that I have a seperate turf to check in the shuttle -- Polymorph name = "Brig floor" // Also added it into the 2x3 brig area of the shuttle. icon_state = "floor4" - + /turf/simulated/shuttle/floor4/vox //Vox skipjack floors name = "skipjack floor" oxygen = 0 @@ -235,10 +235,10 @@ name = "snow" icon = 'icons/turf/snow.dmi' icon_state = "snow" - + /turf/simulated/floor/plating/snow/ex_act(severity) return - + /turf/simulated/floor/snow name = "snow" icon = 'icons/turf/snow.dmi' diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 6a763055b3b..4dd7d14d460 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -317,10 +317,6 @@ else if(!is_sharp(W) && W.force >= 10 || W.force >= 20) user << "\The [src] crumbles away under the force of your [W.name]." src.dismantle_wall(1) - - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff) - message_admins("[user.real_name] ([formatPlayerPanel(user,user.ckey)]) broke a rotting wall with a pdiff of [pdiff] at [formatJumpTo(loc)]!") return //THERMITE related stuff. Calls src.thermitemelt() which handles melting simulated walls and the relevant effects @@ -374,10 +370,6 @@ if( user.loc == T && user.get_active_hand() == WT ) user << "You remove the outer plating." - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff) - message_admins("[user.real_name] ([formatPlayerPanel(user,user.ckey)]) dismanted a wall with a pdiff of [pdiff] at [formatJumpTo(loc)]!") - log_admin("[user.real_name] ([user.ckey]) dismanted a wall with a pdiff of [pdiff] at [loc]!") dismantle_wall() return else @@ -397,10 +389,6 @@ if( user.loc == T && user.get_active_hand() == W ) user << "You remove the outer plating." dismantle_wall() - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff) - message_admins("[user.real_name] ([formatPlayerPanel(user,user.ckey)]) dismantled with a pdiff of [pdiff] at [formatJumpTo(loc)]!") - log_admin("[user.real_name] ([user.ckey]) dismantled with a pdiff of [pdiff] at [loc]!") for(var/mob/O in viewers(user, 5)) O.show_message("The wall was sliced apart by [user]!", 1, "You hear metal being sliced apart.", 2) return @@ -418,10 +406,6 @@ if( user.loc == T && user.get_active_hand() == W ) user << "Your drill tears though the last of the reinforced plating." dismantle_wall() - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff) - message_admins("[user.real_name] ([formatPlayerPanel(user,user.ckey)]) drilled a wall with a pdiff of [pdiff] at [formatJumpTo(loc)]!") - log_admin("[user.real_name] ([user.ckey]) drilled a wall with a pdiff of [pdiff] at [loc]!") for(var/mob/O in viewers(user, 5)) O.show_message("The wall was drilled through by [user]!", 1, "You hear the grinding of metal.", 2) return @@ -443,10 +427,6 @@ playsound(src, "sparks", 50, 1) playsound(src, 'sound/weapons/blade1.ogg', 50, 1) dismantle_wall(1) - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff) - message_admins("[user.real_name] ([formatPlayerPanel(user,user.ckey)]) sliced up a wall with a pdiff of [pdiff] at [formatJumpTo(loc)]!") - log_admin("[user.real_name] ([user.ckey]) sliced up a wall with a pdiff of [pdiff] at [loc]!") for(var/mob/O in viewers(user, 5)) O.show_message("The wall was sliced apart by [user]!", 1, "You hear metal being sliced apart and sparks flying.", 2) return diff --git a/code/game/turfs/simulated/walls_mineral.dm b/code/game/turfs/simulated/walls_mineral.dm index 6f0e99475ab..393ff4beb8e 100644 --- a/code/game/turfs/simulated/walls_mineral.dm +++ b/code/game/turfs/simulated/walls_mineral.dm @@ -78,47 +78,29 @@ /turf/simulated/wall/mineral/plasma name = "plasma wall" - desc = "A wall with plasma plating. This is definitely a bad idea." + desc = "A wall with plasma plating. This is definately a bad idea." icon_state = "plasma0" walltype = "plasma" mineral = "plasma" + thermal_conductivity = 0.04 -/turf/simulated/wall/mineral/plasma/attackby(obj/item/weapon/W as obj, mob/user as mob, params) +/turf/simulated/wall/mineral/plasma/attackby(obj/item/weapon/W as obj, mob/user as mob) if(is_hot(W) > 300)//If the temperature of the object is over 300, then ignite ignite(is_hot(W)) return ..() /turf/simulated/wall/mineral/plasma/proc/PlasmaBurn(temperature) - var/pdiff=performWallPressureCheck(src.loc) - if(pdiff>0) - message_admins("Plasma wall with pdiff [pdiff] at [formatJumpTo(loc)] just caught fire!") spawn(2) new /obj/structure/girder(src) src.ChangeTurf(/turf/simulated/floor) - for(var/turf/simulated/floor/target_tile in range(0,src)) - /*if(target_tile.parent && target_tile.parent.group_processing) - target_tile.parent.suspend_group_processing()*/ - var/datum/gas_mixture/napalm = new - var/toxinsToDeduce = 20 - napalm.toxins = toxinsToDeduce - napalm.temperature = 400+T0C - target_tile.assume_air(napalm) - spawn (0) target_tile.hotspot_expose(temperature, 400) - for(var/obj/structure/falsewall/plasma/F in range(3,src))//Hackish as fuck, but until temperature_expose works, there is nothing I can do -Sieve - var/turf/T = get_turf(F) - T.ChangeTurf(/turf/simulated/wall/mineral/plasma/) - del (F) - for(var/turf/simulated/wall/mineral/plasma/W in range(3,src)) - W.ignite((temperature/4))//Added so that you can't set off a massive chain reaction with a small flame - for(var/obj/machinery/door/airlock/plasma/D in range(3,src)) - D.ignite(temperature/4) + atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 400) -/turf/simulated/wall/mineral/plasma/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)//Doesn't fucking work because walls don't interact with air :( +/turf/simulated/wall/mineral/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)//Doesn't fucking work because walls don't interact with air :( if(exposed_temperature > 300) PlasmaBurn(exposed_temperature) -/turf/simulated/wall/mineral/plasma/ignite(exposed_temperature) +/turf/simulated/wall/mineral/plasma/proc/ignite(exposed_temperature) if(exposed_temperature > 300) PlasmaBurn(exposed_temperature) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index c84a24c12cb..ebefbf0ca20 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -36,6 +36,16 @@ return return +// Adds the adjacent turfs to the current atmos processing +/turf/Destroy() + if(air_master) + for(var/direction in cardinal) + if(atmos_adjacent_turfs & direction) + var/turf/simulated/T = get_step(src, direction) + if(istype(T)) + air_master.add_to_active(T) + ..() + /turf/ex_act(severity) return 0 @@ -213,117 +223,65 @@ del L //Creates a new turf -/turf/proc/ChangeTurf(var/turf/N) - if (!N) - return - +/turf/proc/ChangeTurf(var/path) + if(!path) return + if(path == type) return src var/old_lumcount = lighting_lumcount - initial(lighting_lumcount) var/old_opacity = opacity - //world << "Replacing [src.type] with [N]" + if(air_master) + air_master.remove_from_active(src) - if(connections) connections.erase_all() + var/turf/W = new path(src) - if(istype(src,/turf/simulated)) - //Yeah, we're just going to rebuild the whole thing. - //Despite this being called a bunch during explosions, - //the zone will only really do heavy lifting once. - var/turf/simulated/S = src - if(S.zone) S.zone.rebuild() + if(istype(W, /turf/simulated)) + W:Assimilate_Air() + W.RemoveLattice() - if(ispath(N, /turf/simulated/floor)) - //if the old turf had a zone, connect the new turf to it as well - Cael - //Adjusted by SkyMarshal 5/10/13 - The air master will handle the addition of the new turf. - //if(zone) - // zone.RemoveTurf(src) - // if(!zone.CheckStatus()) - // zone.SetStatus(ZONE_ACTIVE) + W.lighting_lumcount += old_lumcount + if(old_lumcount != W.lighting_lumcount) //light levels of the turf have changed. We need to shift it to another lighting-subarea + W.lighting_changed = 1 + lighting_controller.changed_turfs += W - var/turf/simulated/W = new N( locate(src.x, src.y, src.z) ) - //W.Assimilate_Air() + if(old_opacity != W.opacity) //opacity has changed. Need to update surrounding lights + if(W.lighting_lumcount) //unless we're being illuminated, don't bother (may be buggy, hard to test) + W.UpdateAffectingLights() - W.lighting_lumcount += old_lumcount - if(old_lumcount != W.lighting_lumcount) - W.lighting_changed = 1 - lighting_controller.changed_turfs += W + W.levelupdate() + W.CalculateAdjacentTurfs() + return W - - if(old_opacity != W.opacity) //opacity has changed. Need to update surrounding lights - if(W.lighting_lumcount) //unless we're being illuminated, don't bother (may be buggy, hard to test) - W.UpdateAffectingLights() - - if (istype(W,/turf/simulated/floor)) - W.RemoveLattice() - - if(air_master) - air_master.mark_for_update(src) - - W.levelupdate() - return W - - else - //if(zone) - // zone.RemoveTurf(src) - // if(!zone.CheckStatus()) - // zone.SetStatus(ZONE_ACTIVE) - - var/turf/W = new N( locate(src.x, src.y, src.z) ) - W.lighting_lumcount += old_lumcount - if(old_lumcount != W.lighting_lumcount) - W.lighting_changed = 1 - lighting_controller.changed_turfs += W - - if(air_master) - air_master.mark_for_update(src) - - W.levelupdate() - return W - -/* //////Assimilate Air////// /turf/simulated/proc/Assimilate_Air() - var/aoxy = 0//Holders to assimilate air from nearby turfs - var/anitro = 0 - var/aco = 0 - var/atox = 0 - var/atemp = 0 - var/turf_count = 0 + if(air) + var/aoxy = 0//Holders to assimilate air from nearby turfs + var/anitro = 0 + var/aco = 0 + var/atox = 0 + var/atemp = 0 + var/turf_count = 0 - for(var/direction in cardinal)//Only use cardinals to cut down on lag - var/turf/T = get_step(src,direction) - if(istype(T,/turf/space))//Counted as no air - turf_count++//Considered a valid turf for air calcs - continue - else if(istype(T,/turf/simulated/floor)) - var/turf/simulated/S = T - if(S.air)//Add the air's contents to the holders - aoxy += S.air.oxygen - anitro += S.air.nitrogen - aco += S.air.carbon_dioxide - atox += S.air.toxins - atemp += S.air.temperature - turf_count ++ - air.oxygen = (aoxy/max(turf_count,1))//Averages contents of the turfs, ignoring walls and the like - air.nitrogen = (anitro/max(turf_count,1)) - air.carbon_dioxide = (aco/max(turf_count,1)) - air.toxins = (atox/max(turf_count,1)) - air.temperature = (atemp/max(turf_count,1))//Trace gases can get bant - air.update_values() + for(var/direction in cardinal)//Only use cardinals to cut down on lag + var/turf/T = get_step(src,direction) + if(istype(T,/turf/space))//Counted as no air + turf_count++//Considered a valid turf for air calcs + continue + else if(istype(T,/turf/simulated/floor)) + var/turf/simulated/S = T + if(S.air)//Add the air's contents to the holders + aoxy += S.air.oxygen + anitro += S.air.nitrogen + aco += S.air.carbon_dioxide + atox += S.air.toxins + atemp += S.air.temperature + turf_count ++ + air.oxygen = (aoxy/max(turf_count,1))//Averages contents of the turfs, ignoring walls and the like + air.nitrogen = (anitro/max(turf_count,1)) + air.carbon_dioxide = (aco/max(turf_count,1)) + air.toxins = (atox/max(turf_count,1)) + air.temperature = (atemp/max(turf_count,1))//Trace gases can get bant + if(air_master) + air_master.add_to_active(src) - //cael - duplicate the averaged values across adjacent turfs to enforce a seamless atmos change - for(var/direction in cardinal)//Only use cardinals to cut down on lag - var/turf/T = get_step(src,direction) - if(istype(T,/turf/space))//Counted as no air - continue - else if(istype(T,/turf/simulated/floor)) - var/turf/simulated/S = T - if(S.air)//Add the air's contents to the holders - S.air.oxygen = air.oxygen - S.air.nitrogen = air.nitrogen - S.air.carbon_dioxide = air.carbon_dioxide - S.air.toxins = air.toxins - S.air.temperature = air.temperature - S.air.update_values() -*/ /turf/proc/ReplaceWithLattice() src.ChangeTurf(/turf/space) new /obj/structure/lattice( locate(src.x, src.y, src.z) ) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 51edf9a4cdf..1ea81011406 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -572,9 +572,6 @@ var/global/nologevent = 0 Quick Create Object
Create Turf
Create Mob
-
Edit Airflow Settings
- Edit Plasma Settings
- Choose a default ZAS setting
"} usr << browse(dat, "window=admin2;size=210x280") diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 1108c287461..5b151c850c2 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -129,8 +129,6 @@ var/list/admin_verbs_server = list( var/list/admin_verbs_debug = list( /client/proc/cmd_admin_list_open_jobs, /client/proc/Debug2, - /client/proc/kill_air, - /client/proc/ZASSettings, /client/proc/cmd_debug_make_powernets, /client/proc/debug_controller, /client/proc/cmd_debug_mob_lists, diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 210d020553f..ebc48a70d0c 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -3048,18 +3048,6 @@ src.admincaster_signature = adminscrub(input(usr, "Provide your desired signature", "Network Identity Handler", "")) src.access_news_network() - else if(href_list["vsc"]) - if(check_rights(R_ADMIN|R_SERVER)) - if(href_list["vsc"] == "airflow") - vsc.ChangeSettingsDialog(usr,vsc.settings) - if(href_list["vsc"] == "plasma") - vsc.ChangeSettingsDialog(usr,vsc.plc.settings) -// zas_settings.ChangeSettingsDialog(usr,zas_settings.settings) - if(href_list["vsc"] == "default") - vsc.SetDefault(usr) -// zas_settings.SetDefault(usr) - // player info stuff - if(href_list["add_player_info"]) var/key = href_list["add_player_info"] var/add = input("Add Player Info") as null|text diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm index 2c27be1cde9..4788dad2832 100644 --- a/code/modules/admin/verbs/diagnostics.dm +++ b/code/modules/admin/verbs/diagnostics.dm @@ -1,3 +1,22 @@ +/client/proc/air_status(turf/target as turf) + set category = "Debug" + set name = "Display Air Status" + + if(!isturf(target)) + return + + var/datum/gas_mixture/GM = target.return_air() + var/burning = 0 + if(istype(target, /turf/simulated)) + var/turf/simulated/T = target + if(T.active_hotspot) + burning = 1 + + usr << "\blue @[target.x],[target.y] ([GM.group_multiplier]): O:[GM.oxygen] T:[GM.toxins] N:[GM.nitrogen] C:[GM.carbon_dioxide] w [GM.temperature] Kelvin, [GM.return_pressure()] kPa [(burning)?("\red BURNING"):(null)]" + for(var/datum/gas/trace_gas in GM.trace_gases) + usr << "[trace_gas.type]: [trace_gas.moles]" + feedback_add_details("admin_verb","DAST") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + /client/proc/fix_next_move() set category = "Debug" set name = "Unfreeze Everyone" diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm index 5abfd4d1c04..7a616fd1c5c 100644 --- a/code/modules/admin/verbs/mapping.dm +++ b/code/modules/admin/verbs/mapping.dm @@ -143,10 +143,6 @@ var/intercom_range_display_status = 0 src.verbs += /client/proc/print_jobban_old src.verbs += /client/proc/print_jobban_old_filter src.verbs += /client/proc/forceEvent - src.verbs += /client/proc/Zone_Info - src.verbs += /client/proc/Test_ZAS_Connection - src.verbs += /client/proc/ZoneTick - //src.verbs += /client/proc/TestZASRebuild //src.verbs += /client/proc/cmd_admin_rejuvenate feedback_add_details("admin_verb","mDV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm index be39f1be89a..48acf97242f 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 diff --git a/code/modules/assembly/igniter.dm b/code/modules/assembly/igniter.dm index 7021deb3613..d91eac4a391 100644 --- a/code/modules/assembly/igniter.dm +++ b/code/modules/assembly/igniter.dm @@ -19,6 +19,10 @@ var/obj/structure/reagent_dispensers/fueltank/tank = src.loc.loc if (tank) tank.explode() + if (istype(src.loc.loc, /obj/item/weapon/reagent_containers/glass/beaker/)) + var/obj/item/weapon/reagent_containers/glass/beaker/beakerbomb = src.loc.loc + if(beakerbomb) + beakerbomb.heat_beaker() var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread s.set_up(3, 1, src) diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index e6a1bc6f322..0a8a9f6a0c0 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -1,5 +1,3 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - /obj/item/device/assembly/infra name = "infrared emitter" desc = "Emits a visible or invisible beam and is triggered when the beam is interrupted." @@ -10,173 +8,133 @@ bomb_name = "tripwire mine" - secured = 0 - var/on = 0 var/visible = 0 var/obj/effect/beam/i_beam/first = null + var/obj/effect/beam/i_beam/last = null - proc - trigger_beam() - - describe() - return "The infrared trigger is [on?"on":"off"]." - - activate() - if(!..()) return 0//Cooldown check - on = !on - update_icon() - return 1 - - - toggle_secure() - secured = !secured - if(secured) - processing_objects.Add(src) - else - on = 0 - if(first) del(first) - processing_objects.Remove(src) - update_icon() - return secured - +/obj/item/device/assembly/infra/describe() + return "The infrared trigger is [on?"on":"off"]." +/obj/item/device/assembly/infra/activate() + if(!..()) return 0//Cooldown check + on = !on update_icon() - overlays.Cut() - attached_overlays = list() - if(on) - overlays += "infrared_on" - attached_overlays += "infrared_on" + return 1 - if(holder) - holder.update_icon() - return +/obj/item/device/assembly/infra/toggle_secure() + secured = !secured + if(secured) + processing_objects.Add(src) + else + on = 0 + if(first) qdel(first) + processing_objects.Remove(src) + update_icon() + return secured +/obj/item/device/assembly/infra/update_icon() + overlays.Cut() + attached_overlays = list() + if(on) + overlays += "infrared_on" + attached_overlays += "infrared_on" - process()//Old code - if(!on) - if(first) - del(first) - return - if(first || !secured) return - var/turf/T = null - if(istype(loc,/turf)) - T = loc - else if (holder) - if (istype(holder.loc,/turf)) - T = holder.loc - else if (holder.master && istype(holder.master.loc,/turf)) //for onetankbombs and other tertiary builds with assemblies - T = holder.loc.loc - else if(istype(loc,/obj/item/weapon/grenade) && istype(loc.loc,/turf)) - T = loc.loc - if(T) - var/obj/effect/beam/i_beam/I = new /obj/effect/beam/i_beam(T) - I.master = src - I.density = 1 - I.dir = dir - step(I, I.dir) - if(I) - I.density = 0 - first = I - I.vis_spread(visible) - spawn(0) - if(I) - //world << "infra: setting limit" - I.limit = 8 - //world << "infra: processing beam \ref[I]" - I.process() - return - return + if(holder) + holder.update_icon() + return - - attack_hand() - del(first) - ..() - return - - - Move() - var/t = dir - ..() - dir = t - del(first) - return - - - holder_movement() - if(!holder) return 0 - del(first) - return 1 - - - trigger_beam() - if((!secured)||(!on)||(cooldown > 0)) return 0 - pulse(0) - visible_message("\icon[src] *beep* *beep*") - cooldown = 2 - spawn(10) - process_cooldown() - return - - - interact(mob/user as mob)//TODO: change this this to the wire control panel - if(!secured) return - user.set_machine(src) - var/dat = text("Infrared Laser\nStatus: []
\nVisibility: []
\n
", (on ? text("On", src) : text("Off", src)), (src.visible ? text("Visible", src) : text("Invisible", src))) - if(holder) - dat += "
Beam direction: [dir2text(dir)] Counter-clockwise | Clockwise" - dat += "

Refresh" - dat += "

Close" - user << browse(dat, "window=infra") - onclose(user, "infra") - return - - - Topic(href, href_list) - ..() - if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) - usr << browse(null, "window=infra") - onclose(usr, "infra") +/obj/item/device/assembly/infra/process() + if(!on) + if(first) + qdel(first) return + if(!secured) + return + if(first && last) + last.process() + return + var/turf/T = get_turf(src) + if(T) + var/obj/effect/beam/i_beam/I = new /obj/effect/beam/i_beam(T) + I.master = src + I.density = 1 + I.dir = dir + first = I + step(I, I.dir) + if(first) + I.density = 0 + I.vis_spread(visible) + I.limit = 8 + I.process() - if(href_list["rotate"]) - switch(href_list["rotate"]) - if("-1") - dir = turn(dir,90) - update_icon() - del(first) - if("1") - dir = turn(dir,-90) - update_icon() - del(first) +/obj/item/device/assembly/infra/attack_hand() + qdel(first) + ..() + return - if(href_list["state"]) - on = !(on) - update_icon() +/obj/item/device/assembly/infra/Move() + var/t = dir + ..() + dir = t + qdel(first) + return - if(href_list["visible"]) - visible = !(visible) - spawn(0) - if(first) - first.vis_spread(visible) +/obj/item/device/assembly/infra/holder_movement() + if(!holder) return 0 +// dir = holder.dir + qdel(first) + return 1 - if(href_list["close"]) - usr << browse(null, "window=infra") - return +/obj/item/device/assembly/infra/proc/trigger_beam() + if((!secured)||(!on)||(cooldown > 0)) + return 0 + pulse(0) + audible_message("\icon[src] *beep* *beep*", null, 3) + cooldown = 2 + spawn(10) + process_cooldown() + return - if(usr) - attack_self(usr) +/obj/item/device/assembly/infra/interact(mob/user as mob)//TODO: change this this to the wire control panel + if(!secured) return + user.set_machine(src) + var/dat = text("Infrared Laser\nStatus: []
\nVisibility: []
\n
", (on ? text("On", src) : text("Off", src)), (src.visible ? text("Visible", src) : text("Invisible", src))) + dat += "

Refresh" + dat += "

Close" + user << browse(dat, "window=infra") + onclose(user, "infra") + return +/obj/item/device/assembly/infra/Topic(href, href_list) + ..() + if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) + usr << browse(null, "window=infra") + onclose(usr, "infra") + return + if(href_list["state"]) + on = !(on) + update_icon() + if(href_list["visible"]) + visible = !(visible) + if(first) + first.vis_spread(visible) + if(href_list["close"]) + usr << browse(null, "window=infra") + return + if(usr) + attack_self(usr) + +/obj/item/device/assembly/infra/verb/rotate()//This could likely be better + set name = "Rotate Infrared Laser" + set category = "Object" + set src in usr + + if(usr.stat || !usr.canmove || usr.restrained()) return - - verb/rotate()//This could likely be better - set name = "Rotate Infrared Laser" - set category = "Object" - set src in usr - - dir = turn(dir, 90) - return + dir = turn(dir, 90) + return @@ -187,41 +145,30 @@ icon = 'icons/obj/projectiles.dmi' icon_state = "ibeam" var/obj/effect/beam/i_beam/next = null + var/obj/effect/beam/i_beam/previous = null var/obj/item/device/assembly/infra/master = null var/limit = null var/visible = 0.0 var/left = null anchored = 1.0 - flags = 0 /obj/effect/beam/i_beam/proc/hit() - //world << "beam \ref[src]: hit" if(master) - //world << "beam hit \ref[src]: calling master \ref[master].hit" master.trigger_beam() - del(src) + qdel(src) return /obj/effect/beam/i_beam/proc/vis_spread(v) - //world << "i_beam \ref[src] : vis_spread" visible = v - spawn(0) - if(next) - //world << "i_beam \ref[src] : is next [next.type] \ref[next], calling spread" - next.vis_spread(v) - return - return + if(next) + next.vis_spread(v) + /obj/effect/beam/i_beam/process() - //world << "i_beam \ref[src] : process" - if((loc.density || !(master))) - // world << "beam hit loc [loc] or no master [master], deleting" - del(src) + qdel(src) return - //world << "proccess: [src.left] left" - if(left > 0) left-- if(left < 1) @@ -232,58 +179,40 @@ else invisibility = 0 - - //world << "now [src.left] left" - var/obj/effect/beam/i_beam/I = new /obj/effect/beam/i_beam(loc) - I.master = master - I.density = 1 - I.dir = dir - //world << "created new beam \ref[I] at [I.x] [I.y] [I.z]" - step(I, I.dir) - - if(I) - //world << "step worked, now at [I.x] [I.y] [I.z]" - if(!(next)) - //world << "no next" + if(!next && (limit > 0)) + var/obj/effect/beam/i_beam/I = new /obj/effect/beam/i_beam(loc) + I.master = master + I.density = 1 + I.dir = dir + I.previous = src + next = I + step(I, I.dir) + if(next) I.density = 0 - //world << "spreading" I.vis_spread(visible) - next = I - spawn(0) - //world << "limit = [limit] " - if((I && limit > 0)) - I.limit = limit - 1 - //world << "calling next process" - I.process() - return - else - //world << "is a next: \ref[next], deleting beam \ref[I]" - del(I) - else - //world << "step failed, deleting \ref[next]" - del(next) - spawn(10) - process() - return - return + I.limit = limit - 1 + master.last = I + I.process() /obj/effect/beam/i_beam/Bump() - del(src) + qdel(src) return /obj/effect/beam/i_beam/Bumped() hit() - return /obj/effect/beam/i_beam/Crossed(atom/movable/AM as mob|obj) if(istype(AM, /obj/effect/beam)) return - spawn(0) - hit() - return - return + hit() /obj/effect/beam/i_beam/Destroy() - del(next) - ..() - return + if(master.first == src) + master.first = null + if(next) + qdel(next) + next = null + if(previous) + previous.next = null + master.last = previous + ..() \ No newline at end of file diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm index df5eb1a35cb..d207130aeee 100644 --- a/code/modules/assembly/mousetrap.dm +++ b/code/modules/assembly/mousetrap.dm @@ -53,6 +53,7 @@ affecting = H.get_organ(type) H.Stun(3) if(affecting) + affecting.take_damage(1, 0) H.updatehealth() else if(ismouse(target)) var/mob/living/simple_animal/mouse/M = target diff --git a/code/modules/clothing/gloves/boxing.dm b/code/modules/clothing/gloves/boxing.dm index f9638c18bce..ee3e0849d80 100644 --- a/code/modules/clothing/gloves/boxing.dm +++ b/code/modules/clothing/gloves/boxing.dm @@ -3,6 +3,7 @@ desc = "Because you really needed another excuse to punch your crewmates." icon_state = "boxing" item_state = "boxing" + species_restricted = null species_fit = list("Vox") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/gloves.dmi' diff --git a/code/modules/clothing/gloves/rings.dm b/code/modules/clothing/gloves/rings.dm new file mode 100644 index 00000000000..90b012d0580 --- /dev/null +++ b/code/modules/clothing/gloves/rings.dm @@ -0,0 +1,97 @@ +/obj/item/clothing/gloves/ring + name = "iron ring" + desc = "A band that goes around your finger. It's considered gauche to wear more than one." + gender = "neuter" // not plural anymore + transfer_prints = TRUE + icon_state = "ironring" + item_state = "" + icon = 'icons/obj/clothing/rings.dmi' + var/material = "iron" + var/stud = 0 + species_restricted = null + + New() + ..() + update_icon() + + update_icon() + if(stud) + icon_state = "d_[initial(icon_state)]" + else + icon_state = initial(icon_state) + examine() + ..() + usr << "This one is made of [material]." + if(stud) + usr << "It is adorned with a single gem." + +/obj/item/clothing/gloves/ring/attackby(obj/item/I as obj, mob/user as mob, params) + if(istype(I, /obj/item/stack/sheet/mineral/diamond)) + var/obj/item/stack/sheet/mineral/diamond/D = I + if(stud) + usr << "The [src] already has a gem." + else + if(D.amount >= 1) + D.use(1) + stud = 1 + update_icon() + usr << "You socket the diamond into the [src]." + +// s'pensive +/obj/item/clothing/gloves/ring/silver + name = "silver ring" + icon_state = "silverring" + material = "silver" + +/obj/item/clothing/gloves/ring/silver/blessed // todo + name = "blessed silver ring" + +/obj/item/clothing/gloves/ring/gold + name = "gold ring" + icon_state = "goldring" + material = "gold" + +/obj/item/clothing/gloves/ring/gold/blessed + name = "wedding band" + +// cheap +/obj/item/clothing/gloves/ring/plastic + name = "white plastic ring" + icon_state = "whitering" + material = "plastic" + +/obj/item/clothing/gloves/ring/plastic/blue + name = "blue plastic ring" + icon_state = "bluering" + +/obj/item/clothing/gloves/ring/plastic/red + name = "red plastic ring" + icon_state = "redring" + +/obj/item/clothing/gloves/ring/plastic/random + New() + var/c = pick("white","blue","red") + name = "[c] plastic ring" + icon_state = "[c]ring" + +// weird +/obj/item/clothing/gloves/ring/glass + name = "glass ring" + icon_state = "whitering" + material = "glass" + +/obj/item/clothing/gloves/ring/plasma + name = "plasma ring" + icon_state = "plasmaring" + material = "plasma" + +/obj/item/clothing/gloves/ring/uranium + name = "uranium ring" + icon_state = "uraniumring" + material = "uranium" + +// cultish +/obj/item/clothing/gloves/ring/shadow + name = "shadow ring" + icon_state = "shadowring" + material = "shadows" diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index 6bbd20f0d29..d3d93dccf06 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -7,3 +7,4 @@ else biomass_infestation() spacevines_spawned = 1 +v \ No newline at end of file diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 9df91110429..a741c792642 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -20,8 +20,6 @@ opacity = 1 var/health = 50 - autoignition_temperature = AUTOIGNITION_WOOD - /obj/structure/bookcase/initialize() for(var/obj/item/I in loc) if(istype(I, /obj/item/weapon/book)) @@ -151,8 +149,6 @@ w_class = 3 //upped to three because books are, y'know, pretty big. (and you could hide them inside eachother recursively forever) attack_verb = list("bashed", "whacked", "educated") - autoignition_temperature = AUTOIGNITION_PAPER - var/dat // Actual page content var/due_date = 0 // Game time in 1/10th seconds var/author // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned diff --git a/code/modules/mining/coins.dm b/code/modules/mining/coins.dm index cc1e966ff46..16c4f90fde1 100644 --- a/code/modules/mining/coins.dm +++ b/code/modules/mining/coins.dm @@ -101,6 +101,19 @@ overlays = list() string_attached = null user << "You detach the string from the coin." + else if(istype(W,/obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(WT.welding && WT.remove_fuel(0, user)) + var/typelist = list("iron" = /obj/item/clothing/gloves/ring, + "silver" = /obj/item/clothing/gloves/ring/silver, + "gold" = /obj/item/clothing/gloves/ring/gold, + "plasma" = /obj/item/clothing/gloves/ring/plasma, + "uranium" = /obj/item/clothing/gloves/ring/uranium) + var/typekey = typelist[cmineral] + if(ispath(typekey)) + user << "\blue You make [src] into a ring." + new typekey(get_turf(loc)) + qdel(src) else ..() /obj/item/weapon/coin/attack_self(mob/user as mob) diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 533c47a253d..8ab42b7ae1c 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -9,7 +9,7 @@ opacity = 1 density = 1 blocks_air = 1 - temperature = TCMB + temperature = T0C var/mineral/mineral var/mined_ore = 0 var/last_act = 0 @@ -392,7 +392,7 @@ icon_state = "asteroid" oxygen = 0.01 nitrogen = 0.01 - temperature = TCMB + temperature = T0C icon_plating = "asteroid" var/dug = 0 //0 = has not yet been dug, 1 = has already been dug has_resources = 1 diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index fa5725faf19..80761679cba 100644 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -505,7 +505,7 @@ if(L == default_language) dat += "[L.name] (:[L.key]) - default - reset
[L.desc]

" else - dat += "[L.name] (:[L.key]) - set default
[L.desc]

" + dat += "[L.name] (:[L.key]) - set default
[L.desc]

" src << browse(dat, "window=checklanguage") diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 2502561b537..6e5dcdc3dea 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -152,6 +152,7 @@ bodytemperature += BODYTEMP_HEATING_MAX //If you're on fire, you heat up! return + /mob/living/carbon/alien/IsAdvancedToolUser() return has_fine_manipulation diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm index fbb2e477081..eda8df77ee7 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/life.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm @@ -20,7 +20,7 @@ //First, resolve location and get a breath - if(air_master.current_cycle%4==2) + if(mob_master.current_cycle%4==2) //Only try to take a breath every 4 seconds, unless suffocating spawn(0) breathe() 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 6990eaa9223..0c218c81204 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm @@ -65,6 +65,7 @@ update_fire() + /mob/living/carbon/alien/humanoid/update_hud() //TODO if (client) diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm index 3b08794a76c..01e36955196 100644 --- a/code/modules/mob/living/carbon/alien/larva/life.dm +++ b/code/modules/mob/living/carbon/alien/larva/life.dm @@ -17,7 +17,7 @@ amount_grown++ //First, resolve location and get a breath - if(air_master.current_cycle%4==2) + if(mob_master.current_cycle%4==2) //Only try to take a breath every 4 seconds, unless suffocating spawn(0) breathe() else //Still give containing object the chance to interact diff --git a/code/modules/mob/living/carbon/alien/life.dm b/code/modules/mob/living/carbon/alien/life.dm index 4a249312ba2..58f43b525b3 100644 --- a/code/modules/mob/living/carbon/alien/life.dm +++ b/code/modules/mob/living/carbon/alien/life.dm @@ -116,7 +116,7 @@ stomach_contents.Remove(M) qdel(M) continue - if(air_master.current_cycle%3==1) + if(mob_master.current_cycle%3==1) if(!(M.status_flags & GODMODE)) M.adjustBruteLoss(5) nutrition += 10 diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm index b7bb4ee6dd2..37381273369 100644 --- a/code/modules/mob/living/carbon/alien/special/facehugger.dm +++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm @@ -65,7 +65,7 @@ var/const/MAX_ACTIVE_TIME = 400 Die() return -/obj/item/clothing/mask/facehugger/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/item/clothing/mask/facehugger/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(exposed_temperature > 300) Die() return diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index c99cf3e2b31..925636dbba5 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -439,7 +439,12 @@ mob/living item.throw_at(target, item.throw_range, item.throw_speed, src) - +/* +/mob/living/carbon/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) + ..() + src.IgniteMob() + bodytemperature = max(bodytemperature, BODYTEMP_HEAT_DAMAGE_LIMIT+10) +*/ /mob/living/carbon/can_use_hands() if(handcuffed) return 0 diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 5c5f877ef74..078af523c0f 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -13,6 +13,11 @@ playsound(src.loc, 'sound/effects/gib.ogg', 100, 1, 10) + for(var/obj/item/organ/I in internal_organs) + if(istype(loc,/turf)) + I.removed(src) + I.throw_at(get_edge_target_turf(src,pick(alldirs)),rand(1,3),5) + for(var/obj/item/organ/external/E in src.organs) if(istype(E, /obj/item/organ/external/chest)) continue diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index f317ea49036..fac498d9219 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -226,7 +226,6 @@ usr << "[t_He] has a pulse!" msg += "" - if(fire_stacks > 0) msg += "[t_He] [t_is] covered in something flammable.\n" if(fire_stacks < 0) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 11342b903ca..eb4907e1341 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -247,7 +247,7 @@ while(limbs_affected != 0) processing_dismember = pick(organs) - if(processing_dismember.name != "chest" && processing_dismember.name != "head" && processing_dismember.name != "groin") + if(processing_dismember.limb_name != "chest" && processing_dismember.limb_name != "head" && processing_dismember.limb_name != "groin") processing_dismember.droplimb(1,pick(0,1,2),0,1) limbs_affected -= 1 @@ -271,7 +271,7 @@ while(limbs_affected != 0) processing_dismember = pick(organs) - if(processing_dismember.name != "chest" && processing_dismember.name != "head" && processing_dismember.name != "groin") + if(processing_dismember.limb_name != "chest" && processing_dismember.limb_name != "head" && processing_dismember.limb_name != "groin") processing_dismember.droplimb(1,pick(0,2),0,1) limbs_affected -= 1 @@ -281,7 +281,7 @@ while(limbs_affected != 0) processing_dismember = pick(organs) - if(processing_dismember.name != "chest" && processing_dismember.name != "head" && processing_dismember.name != "groin") + if(processing_dismember.limb_name != "chest" && processing_dismember.limb_name != "head" && processing_dismember.limb_name != "groin") processing_dismember.droplimb(1,pick(0,2),0,1) limbs_affected -= 1 @@ -303,7 +303,7 @@ while(limbs_affected != 0) processing_dismember = pick(organs) - if(processing_dismember.name != "chest" && processing_dismember.name != "head" && processing_dismember.name != "groin") + if(processing_dismember.limb_name != "chest" && processing_dismember.limb_name != "head" && processing_dismember.limb_name != "groin") processing_dismember.droplimb(1,1,0,1) limbs_affected -= 1 @@ -316,7 +316,7 @@ var/update = 0 var/weapon_message = "Explosive Blast" for(var/obj/item/organ/external/temp in organs) - switch(temp.name) + switch(temp.limb_name) if("head") update |= temp.take_damage(b_loss * 0.2, f_loss * 0.2, used_weapon = weapon_message) if("chest") diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 1391855aa10..f8aa4a64ac9 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -82,5 +82,5 @@ var/frozen = 0 //used for preventing attacks on admin-frozen people - fire_dmi = 'icons/mob/OnFire.dmi' - fire_sprite = "Standing" + var/fire_dmi = 'icons/mob/OnFire.dmi' + var/fire_sprite = "Standing" \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 07a962fb821..5b7f9b708b1 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -74,7 +74,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc //No need to update all of these procs if the guy is dead. if(stat != DEAD && !in_stasis) - if(air_master.current_cycle%4==2 || failed_last_breath) //First, resolve location and get a breath + if(mob_master.current_cycle%4==2 || failed_last_breath) //First, resolve location and get a breath breathe() //Only try to take a breath every 4 ticks, unless suffocating else //Still give containing object the chance to interact @@ -371,7 +371,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc breath = loc.remove_air(breath_moles) if(!is_lung_ruptured()) - if(!breath || breath.total_moles < BREATH_MOLES / 5 || breath.total_moles > BREATH_MOLES * 5) + if(!breath || breath.total_moles() < BREATH_MOLES / 5 || breath.total_moles() > BREATH_MOLES * 5) if(prob(5)) rupture_lung() @@ -382,8 +382,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc handle_breath(breath) - if(species.name=="Plasmaman") - + if(species.name=="Plasmaman") //this is stupid as fuck // Check if we're wearing our biosuit and mask. if (!istype(wear_suit,/obj/item/clothing/suit/space/eva/plasmaman) || !istype(head,/obj/item/clothing/head/helmet/space/eva/plasmaman)) //testing("Plasmaman [src] leakin'. coverflags=[cover_flags]") @@ -548,6 +547,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc return //END FIRE CODE + /* proc/adjust_body_temperature(current, loc_temp, boost) var/temperature = current @@ -728,12 +728,6 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc alien = species.reagent_tag reagents.metabolize(src,alien) - var/total_plasmaloss = 0 - for(var/obj/item/I in src) - if(I.contaminated) - total_plasmaloss += vsc.plc.CONTAMINATION_LOSS - if(!(status_flags & GODMODE)) adjustToxLoss(total_plasmaloss) - if(status_flags & GODMODE) return 0 //godmode if(species.flags & REQUIRE_LIGHT) @@ -1418,7 +1412,7 @@ var/global/list/brutefireloss_overlays = list("1" = image("icon" = 'icons/mob/sc stomach_contents.Remove(M) del(M) continue - if(air_master.current_cycle%3==1) + if(mob_master.current_cycle%3==1) if(!(M.status_flags & GODMODE)) M.adjustBruteLoss(5) nutrition += 10 diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 887371b4f48..3621f44c8e6 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -324,10 +324,10 @@ proc/get_damage_icon_part(damage_state, body_part) //Underwear if(underwear && species.flags & HAS_UNDERWEAR) - stand_icon.Blend(new /icon('icons/mob/human.dmi', underwear), ICON_OVERLAY) + stand_icon.Blend(new /icon('icons/mob/human.dmi', "underwear[underwear]_[g]_s"), ICON_OVERLAY) if(undershirt && species.flags & HAS_UNDERWEAR) - stand_icon.Blend(new /icon('icons/mob/human.dmi', undershirt), ICON_OVERLAY) + stand_icon.Blend(new /icon('icons/mob/human.dmi', "undershirt[undershirt]_s"), ICON_OVERLAY) if(update_icons) update_icons() @@ -460,16 +460,13 @@ proc/get_damage_icon_part(damage_state, body_part) if(update_icons) update_icons() /mob/living/carbon/human/update_fire() - remove_overlay(FIRE_LAYER) if(on_fire) overlays_standing[FIRE_LAYER] = image("icon"=fire_dmi, "icon_state"=fire_sprite, "layer"=-FIRE_LAYER) else overlays_standing[FIRE_LAYER] = null - apply_overlay(FIRE_LAYER) - /* --------------------------------------- */ //For legacy support. /mob/living/carbon/human/regenerate_icons() diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 51162a425ff..65a5f5b14e6 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -25,7 +25,7 @@ if (stat != DEAD) if(!istype(src,/mob/living/carbon/monkey/diona)) //still breathing //First, resolve location and get a breath - if(air_master.current_cycle%4==2) + if(mob_master.current_cycle%4==2) //Only try to take a breath every 4 seconds, unless suffocating breathe() else //Still give containing object the chance to interact @@ -266,7 +266,7 @@ if(status_flags & GODMODE) return - if(!breath || (breath.total_moles == 0)) + if(!breath || (breath.total_moles() == 0)) adjustOxyLoss(7) oxygen_alert = max(oxygen_alert, 1) @@ -660,4 +660,4 @@ return adjustFireLoss(6) return - //END FIRE CODE + //END FIRE CODE \ No newline at end of file diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm index 6801dc30432..cc25d319842 100644 --- a/code/modules/mob/living/carbon/species.dm +++ b/code/modules/mob/living/carbon/species.dm @@ -221,6 +221,7 @@ if(H.reagents) H.reagents.add_reagent("plasma", Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE)) H.toxins_alert = max(H.toxins_alert, 1) + else if(O2_pp > vox_oxygen_max && name == "Vox") //Oxygen is toxic to vox. var/ratio = (breath.oxygen/vox_oxygen_max) * 1000 H.adjustToxLoss(Clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE)) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index a19ee6e5207..12b35279466 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -460,6 +460,9 @@ for(var/mob/living/carbon/slime/M in view(1,src)) M.UpdateFeed(src) +/*////////////////////// + START RESIST PROCS +*/////////////////////// /mob/living/verb/resist() set name = "Resist" @@ -473,259 +476,327 @@ //Getting out of someone's inventory. if(istype(src.loc,/obj/item/weapon/holder)) - var/obj/item/weapon/holder/H = src.loc //Get our item holder. - var/mob/M = H.loc //Get our mob holder (if any). - - if(istype(M)) - M.unEquip(H) - M << "[H] wriggles out of your grip!" - src << "You wriggle out of [M]'s grip!" - else if(istype(H.loc,/obj/item)) - src << "You struggle free of [H.loc]." - H.loc = get_turf(H) - - if(istype(M)) - for(var/atom/A in M.contents) - if(istype(A,/mob/living/simple_animal/borer) || istype(A,/obj/item/weapon/holder)) - return - - M.status_flags &= ~PASSEMOTES - return + resist_holder() //Resisting control by an alien mind. if(istype(src.loc,/mob/living/simple_animal/borer)) - var/mob/living/simple_animal/borer/B = src.loc - var/mob/living/captive_brain/H = src - - H << "\red You begin doggedly resisting the parasite's control (this will take approximately sixty seconds)." - B.host << "\red You feel the captive mind of [src] begin to resist your control." - - spawn(rand(350,450)+B.host.brainloss) - - if(!B || !B.controlling) - return - - B.host.adjustBrainLoss(rand(5,10)) - H << "\red With an immense exertion of will, you regain control of your body!" - B.host << "\red You feel control of the host brain ripped from your grasp, and retract your probosci before the wild neural impulses can damage you." - - B.detatch() - - verbs -= /mob/living/carbon/proc/release_control - verbs -= /mob/living/carbon/proc/punish_host - verbs -= /mob/living/carbon/proc/spawn_larvae - - return + resist_borer() //resisting grabs (as if it helps anyone...) - if ((!( L.stat ) && !( L.restrained() ))) - var/resisting = 0 - for(var/obj/O in L.requests) - L.requests.Remove(O) - del(O) - resisting++ - for(var/obj/item/weapon/grab/G in usr.grabbed_by) - resisting++ - if (G.state == 1) - del(G) - else - if (G.state == 2) - if (prob(25)) - for(var/mob/O in viewers(L, null)) - O.show_message(text("\red [] has broken free of []'s grip!", L, G.assailant), 1) - del(G) - else - if (G.state == 3) - if (prob(5)) - for(var/mob/O in viewers(usr, null)) - O.show_message(text("\red [] has broken free of []'s headlock!", L, G.assailant), 1) - del(G) - if(resisting) - for(var/mob/O in viewers(usr, null)) - O.show_message(text("\red [] resists!", L), 1) - + if ((!(L.stat) && !(L.restrained()))) + resist_grab(L) //this passes L because the proc requires a typecasted mob/living instead of just 'src' //unbuckling yourself if(L.buckled && (L.last_special <= world.time) ) - if(iscarbon(L)) - var/mob/living/carbon/C = L - if( C.handcuffed ) - C.changeNext_move(CLICK_CD_BREAKOUT) - C.last_special = world.time + CLICK_CD_BREAKOUT - C << "\red You attempt to unbuckle yourself. (This will take around 2 minutes and you need to stand still)" - for(var/mob/O in viewers(L)) - O.show_message("\red [usr] attempts to unbuckle themself!", 1) - spawn(0) - if(do_after(usr, 1200)) - if(!C.buckled) - return - for(var/mob/O in viewers(C)) - O.show_message("\red [usr] manages to unbuckle themself!", 1) - C << "\blue You successfully unbuckle yourself." - C.buckled.manual_unbuckle(C) - else - L.buckled.manual_unbuckle(L) + resist_buckle(L) //this passes L because the proc requires a typecasted mob/living instead of just 'src' //Breaking out of a locker? - else if( src.loc && (istype(src.loc, /obj/structure/closet)) ) - var/breakout_time = 2 //2 minutes by default - - var/obj/structure/closet/C = L.loc - if(C.opened) - return //Door's open... wait, why are you in it's contents then? - if(istype(L.loc, /obj/structure/closet/secure_closet)) - var/obj/structure/closet/secure_closet/SC = L.loc - if(!SC.locked && !SC.welded) - return //It's a secure closet, but isn't locked. Easily escapable from, no need to 'resist' - else - if(!C.welded) - return //closed but not welded... - // else Meh, lets just keep it at 2 minutes for now - // breakout_time++ //Harder to get out of welded lockers than locked lockers - - //okay, so the closet is either welded or locked... resist!!! - L.changeNext_move(CLICK_CD_BREAKOUT) - L.last_special = world.time + CLICK_CD_BREAKOUT - L << "\red You lean on the back of \the [C] and start pushing the door open. (this will take about [breakout_time] minutes)" - for(var/mob/O in viewers(usr.loc)) - O.show_message("\red The [L.loc] begins to shake violently!", 1) - - - spawn(0) - if(do_after(usr,(breakout_time*60*10))) //minutes * 60seconds * 10deciseconds - if(!C || !L || L.stat != CONSCIOUS || L.loc != C || C.opened) //closet/user destroyed OR user dead/unconcious OR user no longer in closet OR closet opened - return - - //Perform the same set of checks as above for weld and lock status to determine if there is even still a point in 'resisting'... - if(istype(L.loc, /obj/structure/closet/secure_closet)) - var/obj/structure/closet/secure_closet/SC = L.loc - if(!SC.locked && !SC.welded) - return - else - if(!C.welded) - return - - //Well then break it! - if(istype(usr.loc, /obj/structure/closet/secure_closet)) - var/obj/structure/closet/secure_closet/SC = L.loc - SC.desc = "It appears to be broken." - SC.icon_state = SC.icon_off - flick(SC.icon_broken, SC) - sleep(10) - flick(SC.icon_broken, SC) - sleep(10) - SC.broken = 1 - SC.locked = 0 - SC.update_icon() - usr << "\red You successfully break out!" - for(var/mob/O in viewers(L.loc)) - O.show_message("\red \the [usr] successfully broke out of \the [SC]!", 1) - if(istype(SC.loc, /obj/structure/bigDelivery)) //Do this to prevent contents from being opened into nullspace (read: bluespace) - var/obj/structure/bigDelivery/BD = SC.loc - BD.attack_hand(usr) - SC.open() - else - C.welded = 0 - C.update_icon() - usr << "\red You successfully break out!" - for(var/mob/O in viewers(L.loc)) - O.show_message("\red \the [usr] successfully broke out of \the [C]!", 1) - if(istype(C.loc, /obj/structure/bigDelivery)) //nullspace ect.. read the comment above - var/obj/structure/bigDelivery/BD = C.loc - BD.attack_hand(usr) - C.open() + else if(src.loc && (istype(src.loc, /obj/structure/closet))) + resist_closet() //breaking out of handcuffs else if(iscarbon(L)) var/mob/living/carbon/CM = L - if(CM.on_fire && CM.canmove) - CM.fire_stacks -= 5 - CM.weakened = max(CM.weakened, 3)//We dont check for CANWEAKEN, I don't care how immune to weakening you are, if you're rolling on the ground, you're busy. - CM.update_canmove() - CM.spin(32,2) - CM.visible_message("[CM] rolls on the floor, trying to put themselves out!", \ - "You stop, drop, and roll!") - sleep(30) - if(fire_stacks <= 0) - CM.visible_message("[CM] has successfully extinguished themselves!", \ - "You extinguish yourself.") - ExtinguishMob() - return - if(CM.handcuffed && CM.canmove && (CM.last_special <= world.time)) - CM.changeNext_move(CLICK_CD_BREAKOUT) - CM.last_special = world.time + CLICK_CD_BREAKOUT - if(isalienadult(CM) || (HULK in usr.mutations))//Don't want to do a lot of logic gating here. - usr << "\red You attempt to break your handcuffs. (This will take around 5 seconds and you need to stand still)" - for(var/mob/O in viewers(CM)) - O.show_message(text("\red [] is trying to break the handcuffs!", CM), 1) - spawn(0) - if(do_after(CM, 50)) - if(!CM.handcuffed || CM.buckled) - return - for(var/mob/O in viewers(CM)) - O.show_message(text("\red [] manages to break the handcuffs!", CM), 1) - CM << "\red You successfully break your handcuffs." - CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - del(CM.handcuffed) - CM.handcuffed = null - CM.update_inv_handcuffed() - else - var/obj/item/weapon/restraints/handcuffs/HC = CM.handcuffed - var/breakouttime = 1200 //A default in case you are somehow handcuffed with something that isn't an obj/item/weapon/restraints/handcuffs type - var/displaytime = 2 //Minutes to display in the "this will take X minutes." - if(istype(HC)) //If you are handcuffed with actual handcuffs... Well what do I know, maybe someone will want to handcuff you with toilet paper in the future... - breakouttime = HC.breakouttime - displaytime = breakouttime / 600 //Minutes - CM << "\red You attempt to remove \the [HC]. (This will take around [displaytime] minutes and you need to stand still)" - for(var/mob/O in viewers(CM)) - O.show_message( "\red [usr] attempts to remove \the [HC]!", 1) - spawn(0) - if(do_after(CM, breakouttime)) - if(!CM.handcuffed || CM.buckled) - return // time leniency for lag which also might make this whole thing pointless but the server - for(var/mob/O in viewers(CM))// lags so hard that 40s isn't lenient enough - Quarxink - O.show_message("\red [CM] manages to remove the handcuffs!", 1) - CM << "\blue You successfully remove \the [CM.handcuffed]." - CM.unEquip(CM.handcuffed) - else if(CM.legcuffed && CM.canmove && (CM.last_special <= world.time)) - CM.changeNext_move(CLICK_CD_BREAKOUT) - CM.last_special = world.time + CLICK_CD_BREAKOUT - if(isalienadult(CM) || (HULK in usr.mutations))//Don't want to do a lot of logic gating here. - usr << "\red You attempt to break your legcuffs. (This will take around 5 seconds and you need to stand still)" - for(var/mob/O in viewers(CM)) - O.show_message(text("\red [] is trying to break the legcuffs!", CM), 1) - spawn(0) - if(do_after(CM, 50)) - if(!CM.legcuffed || CM.buckled) - return - for(var/mob/O in viewers(CM)) - O.show_message(text("\red [] manages to break the legcuffs!", CM), 1) - CM << "\red You successfully break your legcuffs." - CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - del(CM.legcuffed) - CM.legcuffed = null - CM.update_inv_legcuffed() + if(CM.on_fire && CM.canmove) + resist_stop_drop_roll(CM) //this passes CM because the proc requires a typecasted mob/living/carbon instead of just 'src' + + if(CM.handcuffed && CM.canmove && (CM.last_special <= world.time))//this passes CM because the proc requires a typecasted mob/living/carbon instead of just 'src' + resist_handcuffs(CM) + + else if(CM.legcuffed && CM.canmove && (CM.last_special <= world.time)) //this passes CM because the proc requires a typecasted mob/living/carbon instead of just 'src' + resist_legcuffs(CM) + +/*//////////////////// + RESIST SUBPROCS +*///////////////////// + +/* resist_holder allows small mobs that can be picked up to get out of their holder, so they aren't stuck forever. +*///// +/mob/living/proc/resist_holder() + var/obj/item/weapon/holder/H = src.loc //Get our item holder. + var/mob/M = H.loc //Get our mob holder (if any). + + if(istype(M)) + M.unEquip(H) + M << "[H] wriggles out of your grip!" + src << "You wriggle out of [M]'s grip!" + else if(istype(H.loc,/obj/item)) + src << "You struggle free of [H.loc]." + H.loc = get_turf(H) + + if(istype(M)) + for(var/atom/A in M.contents) + if(istype(A,/mob/living/simple_animal/borer) || istype(A,/obj/item/weapon/holder)) + return + + M.status_flags &= ~PASSEMOTES + return + +/* resist_borer allows a mob to regain control of their body after a borer has assumed control. +*///// +/mob/living/proc/resist_borer() + var/mob/living/simple_animal/borer/B = src.loc + var/mob/living/captive_brain/H = src + + H << "\red You begin doggedly resisting the parasite's control (this will take approximately sixty seconds)." + B.host << "\red You feel the captive mind of [src] begin to resist your control." + + spawn(rand(350,450)+B.host.brainloss) + + if(!B || !B.controlling) + return + + B.host.adjustBrainLoss(rand(5,10)) + H << "\red With an immense exertion of will, you regain control of your body!" + B.host << "\red You feel control of the host brain ripped from your grasp, and retract your probosci before the wild neural impulses can damage you." + + B.detatch() + + verbs -= /mob/living/carbon/proc/release_control + verbs -= /mob/living/carbon/proc/punish_host + verbs -= /mob/living/carbon/proc/spawn_larvae + + return + +/* resist_grab allows a mob to resist a grab from another mob when disarming is not an option/neckgrabbed. +*///// +/mob/living/proc/resist_grab(var/mob/living/L) + var/resisting = 0 + + for(var/obj/O in L.requests) + L.requests.Remove(O) + del(O) + resisting++ + + for(var/obj/item/weapon/grab/G in usr.grabbed_by) + resisting++ + if (G.state == 1) + del(G) + + else + if(G.state == 2) + if(prob(25)) + for(var/mob/O in viewers(L, null)) + O.show_message(text("\red [] has broken free of []'s grip!", L, G.assailant), 1) + del(G) + else - var/obj/item/weapon/restraints/legcuffs/HC = CM.legcuffed - var/breakouttime = 1200 //A default in case you are somehow legcuffed with something that isn't an obj/item/weapon/legcuffs type - var/displaytime = 2 //Minutes to display in the "this will take X minutes." - if(istype(HC)) //If you are legcuffed with actual legcuffs... Well what do I know, maybe someone will want to legcuff you with toilet paper in the future... - breakouttime = HC.breakouttime - displaytime = breakouttime / 600 //Minutes - CM << "\red You attempt to remove \the [HC]. (This will take around [displaytime] minutes and you need to stand still)" - for(var/mob/O in viewers(CM)) - O.show_message( "\red [usr] attempts to remove \the [HC]!", 1) - spawn(0) - if(do_after(CM, breakouttime)) - if(!CM.legcuffed || CM.buckled) - return // time leniency for lag which also might make this whole thing pointless but the server - for(var/mob/O in viewers(CM))// lags so hard that 40s isn't lenient enough - Quarxink - O.show_message("\red [CM] manages to remove the legcuffs!", 1) - CM << "\blue You successfully remove \the [CM.legcuffed]." - CM.unEquip(CM.legcuffed) - CM.legcuffed = null - CM.update_inv_legcuffed() + if(G.state == 3) + if(prob(5)) + for(var/mob/O in viewers(usr, null)) + O.show_message(text("\red [] has broken free of []'s headlock!", L, G.assailant), 1) + del(G) + + if(resisting) + for(var/mob/O in viewers(usr, null)) + O.show_message(text("\red [] resists!", L), 1) + +/* resist_buckle allows a mob that is bucklecuffed to break free of the chair/bed/whatever +*///// +/mob/living/proc/resist_buckle(var/mob/living/L) + if(iscarbon(L)) + var/mob/living/carbon/C = L + + if(C.handcuffed) + C.changeNext_move(CLICK_CD_BREAKOUT) + C.last_special = world.time + CLICK_CD_BREAKOUT + + C << "\red You attempt to unbuckle yourself. (This will take around 2 minutes and you need to stay still)" + for(var/mob/O in viewers(L)) + O.show_message("\red [usr] attempts to unbuckle themself!", 1) + + spawn(0) + if(do_after(usr, 1200)) + if(!C.buckled) + return + for(var/mob/O in viewers(C)) + O.show_message("\red [usr] manages to unbuckle themself!", 1) + C << "\blue You successfully unbuckle yourself." + C.buckled.manual_unbuckle(C) + + else + L.buckled.manual_unbuckle(L) + +/* resist_closet() allows a mob to break out of a welded/locked closet +*///// +/mob/living/proc/resist_closet() + var/breakout_time = 2 //2 minutes by default + var/mob/living/L = src + var/obj/structure/closet/C = L.loc + if(C.opened) + return //Door's open... wait, why are you in it's contents then? + if(istype(L.loc, /obj/structure/closet/secure_closet)) + var/obj/structure/closet/secure_closet/SC = L.loc + if(!SC.locked && !SC.welded) + return //It's a secure closet, but isn't locked. Easily escapable from, no need to 'resist' + else + if(!C.welded) + return //closed but not welded... + // else Meh, lets just keep it at 2 minutes for now + // breakout_time++ //Harder to get out of welded lockers than locked lockers + + //okay, so the closet is either welded or locked... resist!!! + L.changeNext_move(CLICK_CD_BREAKOUT) + L.last_special = world.time + CLICK_CD_BREAKOUT + L << "\red You lean on the back of \the [C] and start pushing the door open. (this will take about [breakout_time] minutes)" + for(var/mob/O in viewers(usr.loc)) + O.show_message("\red The [L.loc] begins to shake violently!", 1) + + + spawn(0) + if(do_after(usr,(breakout_time*60*10))) //minutes * 60seconds * 10deciseconds + if(!C || !L || L.stat != CONSCIOUS || L.loc != C || C.opened) //closet/user destroyed OR user dead/unconcious OR user no longer in closet OR closet opened + return + + //Perform the same set of checks as above for weld and lock status to determine if there is even still a point in 'resisting'... + if(istype(L.loc, /obj/structure/closet/secure_closet)) + var/obj/structure/closet/secure_closet/SC = L.loc + if(!SC.locked && !SC.welded) + return + else + if(!C.welded) + return + + //Well then break it! + if(istype(usr.loc, /obj/structure/closet/secure_closet)) + var/obj/structure/closet/secure_closet/SC = L.loc + SC.desc = "It appears to be broken." + SC.icon_state = SC.icon_off + flick(SC.icon_broken, SC) + sleep(10) + flick(SC.icon_broken, SC) + sleep(10) + SC.broken = 1 + SC.locked = 0 + SC.update_icon() + usr << "\red You successfully break out!" + for(var/mob/O in viewers(L.loc)) + O.show_message("\red \the [usr] successfully broke out of \the [SC]!", 1) + if(istype(SC.loc, /obj/structure/bigDelivery)) //Do this to prevent contents from being opened into nullspace (read: bluespace) + var/obj/structure/bigDelivery/BD = SC.loc + BD.attack_hand(usr) + SC.open() + else + C.welded = 0 + C.update_icon() + usr << "\red You successfully break out!" + for(var/mob/O in viewers(L.loc)) + O.show_message("\red \the [usr] successfully broke out of \the [C]!", 1) + if(istype(C.loc, /obj/structure/bigDelivery)) //nullspace ect.. read the comment above + var/obj/structure/bigDelivery/BD = C.loc + BD.attack_hand(usr) + C.open() + +/* resist_stop_drop_roll allows a mob to stop, drop, and roll in order to put out a fire burning on them. +*///// +/mob/living/proc/resist_stop_drop_roll(var/mob/living/carbon/CM) + CM.fire_stacks -= 5 + CM.weakened = max(CM.weakened, 3)//We dont check for CANWEAKEN, I don't care how immune to weakening you are, if you're rolling on the ground, you're busy. + CM.update_canmove() + CM.spin(32,2) + CM.visible_message("[CM] rolls on the floor, trying to put themselves out!", \ + "You stop, drop, and roll!") + sleep(30) + if(fire_stacks <= 0) + CM.visible_message("[CM] has successfully extinguished themselves!", \ + "You extinguish yourself.") + ExtinguishMob() + return + +/* resist_handcuffs allows a mob to break/remove their handcuffs after a delay +*///// +/mob/living/proc/resist_handcuffs(var/mob/living/carbon/CM) + CM.changeNext_move(CLICK_CD_BREAKOUT) + CM.last_special = world.time + CLICK_CD_BREAKOUT + var/obj/item/weapon/restraints/handcuffs/HC = CM.handcuffed + + var/breakouttime = 1200 //A default in case you are somehow handcuffed with something that isn't an obj/item/weapon/restraints/handcuffs type + var/displaytime = 2 //Minutes to display in the "this will take X minutes." + + var/hulklien = 0 //variable used to define if someone is a hulk or alien + + if(istype(HC)) //If you are handcuffed with actual handcuffs... Well what do I know, maybe someone will want to handcuff you with toilet paper in the future... + breakouttime = HC.breakouttime + displaytime = breakouttime / 600 //Minutes + + if(isalienadult(CM) || (HULK in usr.mutations)) + hulklien = 1 + breakouttime = 50 + displaytime = 5 + + CM << "\red You attempt to remove \the [HC]. (This will take around [displaytime] [hulklien ? "seconds" : "minute[displaytime==1 ? "" : "s"]"] and you need to stand still)" + for(var/mob/O in viewers(CM)) + O.show_message( "\red [usr] attempts to [hulklien ? "break" : "remove"] \the [HC]!", 1) + spawn(0) + if(do_after(CM, breakouttime)) + if(!CM.handcuffed || CM.buckled) + return // time leniency for lag which also might make this whole thing pointless but the server + + for(var/mob/O in viewers(CM))// lags so hard that 40s isn't lenient enough - Quarxink + O.show_message("\red [CM] manages to [hulklien ? "break" : "remove"] the handcuffs!", 1) + + CM << "\blue You successfully [hulklien ? "break" : "remove"] \the [CM.handcuffed]." + + if(hulklien) + CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) + del(CM.handcuffed) + CM.handcuffed = null + CM.update_inv_handcuffed() + return + + CM.unEquip(CM.handcuffed) + +/* resist_legcuffs allows a mob to break/remove their legcuffs after a delay +*///// +/mob/living/proc/resist_legcuffs(var/mob/living/carbon/CM) + var/obj/item/weapon/restraints/legcuffs/HC = CM.legcuffed + + var/breakouttime = 1200 //A default in case you are somehow legcuffed with something that isn't an obj/item/weapon/legcuffs type + var/displaytime = 2 //Minutes to display in the "this will take X minutes." + + var/hulklien = 0 //variable used to define if someone is a hulk or alien + + if(istype(HC)) //If you are legcuffed with actual legcuffs... Well what do I know, maybe someone will want to legcuff you with toilet paper in the future... + breakouttime = HC.breakouttime + displaytime = breakouttime / 600 //Minutes + + if(isalienadult(CM) || (HULK in usr.mutations)) + hulklien = 1 + breakouttime = 50 + displaytime = 5 + + CM << "\red You attempt to remove \the [HC]. (This will take around [displaytime] [hulklien ? "seconds" : "minute[displaytime==1 ? "" : "s"]"] and you need to stand still)" + + for(var/mob/O in viewers(CM)) + O.show_message( "\red [usr] attempts to [hulklien ? "break" : "remove"] \the [HC]!", 1) + + spawn(0) + if(do_after(CM, breakouttime)) + if(!CM.legcuffed || CM.buckled) + return // time leniency for lag which also might make this whole thing pointless but the server + for(var/mob/O in viewers(CM))// lags so hard that 40s isn't lenient enough - Quarxink + O.show_message("\red [CM] manages to [hulklien ? "break" : "remove"] the legcuffs!", 1) + + CM << "\blue You successfully [hulklien ? "break" : "remove"] \the [CM.legcuffed]." + + if(!hulklien) + CM.unEquip(CM.legcuffed) + + if(hulklien) + CM.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) + qdel(CM.legcuffed) + + CM.legcuffed = null + CM.update_inv_legcuffed() + +/*////////////////////// + END RESIST PROCS +*/////////////////////// + + + + /mob/living/carbon/proc/spin(spintime, speed) spawn() diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index a6b4fdc207c..84496e1481b 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -199,29 +199,9 @@ return -//This is called when the mob is thrown into a dense turf -/mob/living/proc/turf_collision(var/turf/T, var/speed) - src.take_organ_damage(speed*5) - -/mob/living/proc/near_wall(var/direction,var/distance=1) - var/turf/T = get_step(get_turf(src),direction) - var/turf/last_turf = src.loc - var/i = 1 - - while(i>0 && i<=distance) - if(T.density) //Turf is a wall! - return last_turf - i++ - last_turf = T - T = get_step(T,direction) - - return 0 - -// End BS12 momentum-transfer code. - //Mobs on Fire /mob/living/proc/IgniteMob() - if(fire_stacks > 0) + if(fire_stacks > 0 && !on_fire) on_fire = 1 src.AddLuminosity(3) update_fire() @@ -237,7 +217,7 @@ return /mob/living/proc/adjust_fire_stacks(add_fire_stacks) //Adjusting the amount of fire_stacks we have on person - fire_stacks = Clamp(fire_stacks + add_fire_stacks, min = -20, max = 20) + fire_stacks = Clamp(fire_stacks + add_fire_stacks, min = -20, max = 20) /mob/living/proc/handle_fire() if(fire_stacks < 0) @@ -258,6 +238,26 @@ //Mobs on Fire end +//This is called when the mob is thrown into a dense turf +/mob/living/proc/turf_collision(var/turf/T, var/speed) + src.take_organ_damage(speed*5) + +/mob/living/proc/near_wall(var/direction,var/distance=1) + var/turf/T = get_step(get_turf(src),direction) + var/turf/last_turf = src.loc + var/i = 1 + + while(i>0 && i<=distance) + if(T.density) //Turf is a wall! + return last_turf + i++ + last_turf = T + T = get_step(T,direction) + + return 0 + +// End BS12 momentum-transfer code. + /mob/living/proc/grabbedby(mob/living/carbon/user,var/supress_message = 0) if(user == src || anchored) return 0 diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 7c235b0349a..1a683b9e183 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -36,9 +36,11 @@ var/cameraFollow = null var/tod = null // Time of death - var/update_slimes = 1 - on_fire = 0 //The "Are we on fire?" var + + var/on_fire = 0 //The "Are we on fire?" var var/fire_stacks = 0 //Tracks how many stacks of fire we have on, max is usually 20 + + var/update_slimes = 1 var/specialsauce = 0 //Has this person consumed enough special sauce? IF so they're a ticking time bomb of death. var/implanting = 0 //Used for the mind-slave implant var/silent = null //Can't talk. Value goes down every life proc. diff --git a/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm b/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm index 9458a768633..e7baed57748 100644 --- a/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm +++ b/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm @@ -49,8 +49,7 @@ // DOORS // Simply updates the visibility of the area when it opens/closes/destroyed. -/obj/machinery/door/update_nearby_tiles(need_rebuild) - . = ..(need_rebuild) +/obj/machinery/door/proc/update_freelok_sight() // Glass door glass = 1 // don't check then? if(!glass && cameranet) diff --git a/code/modules/mob/living/silicon/pai/software_modules.dm b/code/modules/mob/living/silicon/pai/software_modules.dm index 80dbd9811b4..41fc6bfcb6d 100644 --- a/code/modules/mob/living/silicon/pai/software_modules.dm +++ b/code/modules/mob/living/silicon/pai/software_modules.dm @@ -419,7 +419,7 @@ data["temperature"] = round(env.temperature) data["temperatureC"] = round(env.temperature-T0C) - var/t_moles = env.total_moles + var/t_moles = env.total_moles() var/gases[0] if(t_moles) var/n2[0] diff --git a/code/modules/mob/living/silicon/robot/examine.dm b/code/modules/mob/living/silicon/robot/examine.dm index 1bde793d3f6..94ca8afded2 100644 --- a/code/modules/mob/living/silicon/robot/examine.dm +++ b/code/modules/mob/living/silicon/robot/examine.dm @@ -50,4 +50,4 @@ msg += "\nIt is [pose]" usr << msg - return + return \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index 3810dba4e34..976708e4e1d 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -366,4 +366,4 @@ if(!on_fire) //Silicons don't gain stacks from hotspots, but hotspots can ignite them IgniteMob() -//Robots on fire +//Robots on fire \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/robot_damage.dm b/code/modules/mob/living/silicon/robot/robot_damage.dm index 81df60fa1e5..f01b7abbd7c 100644 --- a/code/modules/mob/living/silicon/robot/robot_damage.dm +++ b/code/modules/mob/living/silicon/robot/robot_damage.dm @@ -32,11 +32,11 @@ else heal_overall_damage(0, -amount) -/mob/living/silicon/robot/proc/get_damaged_components(var/brute, var/burn) +/mob/living/silicon/robot/proc/get_damaged_components(var/brute, var/burn, var/get_all) var/list/datum/robot_component/parts = list() for(var/V in components) var/datum/robot_component/C = components[V] - if(C.installed == 1) if((brute && C.brute_damage) || (burn && C.electronics_damage)) + if(C.installed == 1 || get_all) if((brute && C.brute_damage) || (burn && C.electronics_damage)) parts += C return parts diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index 831f62c17fb..9c22893e198 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -56,7 +56,7 @@ if(11 to 15) healths.icon_state = "health4" if(6 to 10) healths.icon_state = "health5" if(1 to 5) healths.icon_state = "health6" - else healths.icon_state = "health7" + if(0) healths.icon_state = "health7" regenerate_icons() /mob/living/simple_animal/corgi/Die() diff --git a/code/modules/mob/living/simple_animal/pony.dm b/code/modules/mob/living/simple_animal/pony.dm index edd3480cc23..85d8031f8a6 100644 --- a/code/modules/mob/living/simple_animal/pony.dm +++ b/code/modules/mob/living/simple_animal/pony.dm @@ -7,8 +7,8 @@ health = 50 speak_emote = list("whinnys") emote_hear = list("excitedly says") - response_help = "nuzzles" - response_disarm = "flails it's hooves at" + response_help = "pets" + response_disarm = "pushes" response_harm = "kicks" melee_damage_lower = 5 melee_damage_upper = 15 @@ -25,37 +25,20 @@ status_flags = CANPUSH universal_speak = 1 - Life() - ..() - if(stat == 2) - new /obj/item/weapon/reagent_containers/food/snacks/ectoplasm (src.loc) - for(var/mob/M in viewers(src, null)) - if((M.client && !( M.blinded ))) - M.show_message("\red [src] lets out a contented sigh as their form unwinds. ") - ghostize() - del src - return - - - attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri - if(istype(O, /obj/item/device/soulstone)) - O.transfer_soul("SHADE", src, user) - else - if(O.force) - var/damage = O.force - if (O.damtype == STAMINA) - damage = 0 - health -= damage - for(var/mob/M in viewers(src, null)) - if ((M.client && !( M.blinded ))) - M.show_message("\red \b [src] has been attacked with the [O] by [user]. ") - else - usr << "\red This weapon is ineffective, it does no damage." - for(var/mob/M in viewers(src, null)) - if ((M.client && !( M.blinded ))) - M.show_message("\red [user] gently taps [src] with the [O]. ") +/mob/living/simple_animal/pony/Life() + ..() + if(stat == 2) + new /obj/item/weapon/reagent_containers/food/snacks/ectoplasm(src.loc) + src.visible_message("\The [src] lets out a contented sigh as their form unwinds.") + src.ghostize() + qdel(src) return +/mob/living/simple_animal/pony/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri + if(istype(O, /obj/item/device/soulstone)) + O.transfer_soul("SHADE", src, user) + else + ..() /mob/living/simple_animal/pony/twilight name = "Twilight Sparkle" @@ -145,5 +128,4 @@ mob/living/simple_animal/pony/mac name = "Mac" real_name = "Mac" icon_state = "mac" - icon_living = "mac" - + icon_living = "mac" \ No newline at end of file diff --git a/code/modules/mob/spirit/viewpoint.dm b/code/modules/mob/spirit/viewpoint.dm index 0cd54451361..15c4937b43d 100644 --- a/code/modules/mob/spirit/viewpoint.dm +++ b/code/modules/mob/spirit/viewpoint.dm @@ -113,7 +113,7 @@ var/obj/cult_viewpoint/list/cult_viewpoints = list() /obj/cult_viewpoint/proc/get_cult_name() if (cult_name) return cult_name - return "An Unknown Servent" + return "An Unknown Servant" /obj/cult_viewpoint/proc/set_cult_name(var/newName) diff --git a/code/modules/organs/blood.dm b/code/modules/organs/blood.dm index 843ccbf63ff..141e3d9ee5d 100644 --- a/code/modules/organs/blood.dm +++ b/code/modules/organs/blood.dm @@ -61,6 +61,19 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 if(blood_volume < 560 && blood_volume) var/datum/reagent/blood/B = locate() in vessel.reagent_list //Grab some blood if(B) // Make sure there's some blood at all + + if(src.mind) //Handles vampires "eating" blood that isn't their own. + if(src.mind in ticker.mode.vampires) + for(var/datum/reagent/blood/BL in vessel.reagent_list) + if(src.nutrition >= 450) + break //We don't want blood tranfusions making vampires fat. + if(BL.data["donor"] != src) + src.nutrition += (15 * REAGENTS_METABOLISM) + BL.volume -= REAGENTS_METABOLISM + if(BL.volume <= 0) + del(BL) + break //Only process one blood per tick, to maintain the same metabolism as nutriment for non-vampires. + if(B.data["donor"] != src) //If it's not theirs, then we look for theirs for(var/datum/reagent/blood/D in vessel.reagent_list) if(D.data["donor"] == src) diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index 74dfff272a4..6b0a26b2520 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -22,6 +22,13 @@ var/list/organ_cache = list() // links chemical IDs to number of ticks for which they'll stay in the blood germ_level = 0 +/obj/item/organ/attack_self(mob/user as mob) + + // Convert it to an edible form, yum yum. + if(!robotic && user.a_intent == "harm") + bitten(user) + return + /obj/item/organ/proc/update_health() return @@ -256,3 +263,21 @@ var/list/organ_cache = list() target.update_eyes() ..() +/obj/item/organ/proc/bitten(mob/user) + + if(robotic) + return + + user << "\blue You take a bite out of \the [src]." + + user.unEquip(src) + var/obj/item/weapon/reagent_containers/food/snacks/organ/O = new(get_turf(src)) + O.name = name + O.icon_state = dead_icon ? dead_icon : icon_state + + if(fingerprints) O.fingerprints = fingerprints.Copy() + if(fingerprintshidden) O.fingerprintshidden = fingerprintshidden.Copy() + if(fingerprintslast) O.fingerprintslast = fingerprintslast + + user.put_in_active_hand(O) + del(src) \ No newline at end of file diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index 161ad5065dd..752b7c31dc5 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -6,8 +6,6 @@ w_class = 2 pressure_resistance = 2 - autoignition_temperature = 522 // Kelvin - /obj/item/weapon/folder/blue desc = "A blue folder." icon_state = "folder_blue" diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index f928cb8310c..a30412156ee 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -10,7 +10,7 @@ pressure_resistance = 10 var/amount = 30 //How much paper is in the bin. var/list/papers = new/list() //List of papers put in the bin for reference. - +/* autoignition_temperature = 519.15 // Kelvin /obj/item/weapon/paper_bin/ignite(var/temperature) @@ -24,7 +24,7 @@ papers=0 amount=0 update_icon() - +*///LINDA shit figure out later /obj/item/weapon/paper_bin/MouseDrop(atom/over_object) var/mob/M = usr if(M.restrained() || M.stat || !Adjacent(M)) diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index a10372b8be8..c7c4205bc1c 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -310,7 +310,11 @@ pc.Blend(tiny_img,ICON_OVERLAY, 12, 19) var/datum/picture/P = new() - P.fields["name"] = "photo" + if(istype(src,/obj/item/device/camera/digital)) + P.fields["name"] = input(user,"Name photo:","photo") + P.name = P.fields["name"]//So the name is displayed on the print/delete list. + else + P.fields["name"] = "photo" P.fields["author"] = user P.fields["icon"] = ic P.fields["tiny"] = pc @@ -351,6 +355,82 @@ return p +/***************** +* digital camera * +******************/ +/obj/item/device/camera/digital + name = "digital camera" + desc = "A digital camera. A small screen shows there is space for 10 photos left." + var/list/datum/picture/saved_pictures = list() + pictures_left = 30 + var/max_storage = 10 + +/obj/item/device/camera/digital/afterattack(atom/target as mob|obj|turf|area, mob/user as mob, flag) + if(!on || !pictures_left || ismob(target.loc)) return + captureimage(target, user, flag) + + playsound(loc, pick('sound/items/polaroid1.ogg', 'sound/items/polaroid2.ogg'), 75, 1, -3) + + desc = "A digital camera. A small screen shows that there are currently [saved_pictures.len] pictures stored." + icon_state = icon_off + on = 0 + spawn(64) + icon_state = icon_on + on = 1 + +/obj/item/device/camera/digital/captureimage(atom/target, mob/user, flag) + if(saved_pictures.len >= max_storage) + user << "Maximum photo storage capacity reached." + return + user << "Picture saved." + var/x_c = target.x - (size-1)/2 + var/y_c = target.y + (size-1)/2 + var/z_c = target.z + var/list/turfs = list() + var/mobs = "" + for(var/i = 1; i <= size; i++) + for(var/j = 1; j <= size; j++) + var/turf/T = locate(x_c, y_c, z_c) + if(can_capture_turf(T, user)) + turfs.Add(T) + mobs += get_mobs(T) + x_c++ + y_c-- + x_c = x_c - size + + var/datum/picture/P = createpicture(target, user, turfs, mobs, flag) + saved_pictures += P + +/obj/item/device/camera/digital/verb/print_picture() + set name = "Print picture" + set category = "Object" + set src in usr + + if(saved_pictures.len == 0) + usr << "No images saved." + return + if(pictures_left == 0) + usr << "There is no film left to print." + return + + var/datum/picture/P = null + P = input("Select image to print:",P) as null|anything in saved_pictures + if(P) + printpicture(usr,P) + pictures_left -- + +/obj/item/device/camera/digital/verb/delete_picture() + set name = "Delete picture" + set category = "Object" + set src in usr + + if(saved_pictures.len == 0) + usr << "No images saved" + return + var/datum/picture/P = null + P = input("Select image to delete:",P) as null|anything in saved_pictures + if(P) + saved_pictures -= P /************** *video camera * diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index 2421b49568a..eaa8bbd1246 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -75,7 +75,7 @@ /obj/item/weapon/stamp/centcom name = "Nanotrasen Representative's rubber stamp" icon_state = "stamp-cent" - _color = "centcom" + _color = "internalaffairs" /obj/item/weapon/stamp/attack_paw(mob/user as mob) return attack_hand(user) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 9d7166614f2..26fb14f92e8 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -579,7 +579,7 @@ // called when on fire -/obj/machinery/light/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) +/obj/machinery/light/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) if(prob(max(0, exposed_temperature - 673))) //0% at <400C, 100% at >500C broken() diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index b59c01d9a23..9b16ca3130f 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -32,7 +32,7 @@ var/global/list/rad_collectors = list() P.air_contents.toxins = 0 eject() else - P.air_contents.adjust(tx = -0.001*drainratio) + P.air_contents.toxins -= 0.001*drainratio return diff --git a/code/modules/projectiles/guns/projectile/pneumatic.dm b/code/modules/projectiles/guns/projectile/pneumatic.dm index 50f5d33d1e8..305c9fb6f95 100644 --- a/code/modules/projectiles/guns/projectile/pneumatic.dm +++ b/code/modules/projectiles/guns/projectile/pneumatic.dm @@ -128,7 +128,7 @@ if(!tank || !..()) return //Only do this on a successful shot. - var/lost_gas_amount = tank.air_contents.total_moles*(pressure_setting/100) + var/lost_gas_amount = tank.air_contents.total_moles()*(pressure_setting/100) var/datum/gas_mixture/removed = tank.air_contents.remove(lost_gas_amount) user.loc.assume_air(removed) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index ccd0aae93d5..8424fb54b69 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -45,6 +45,7 @@ var/weaken = 0 var/paralyze = 0 var/irradiate = 0 + var/slur = 0 var/stutter = 0 var/eyeblur = 0 var/drowsy = 0 @@ -79,7 +80,7 @@ if(!isliving(target)) return 0 if(isanimal(target)) return 0 var/mob/living/L = target - return L.apply_effects(stun, weaken, paralyze, irradiate, stutter, eyeblur, drowsy, agony, blocked, stamina, jitter) + return L.apply_effects(stun, weaken, paralyze, irradiate, slur, stutter, eyeblur, drowsy, agony, blocked, stamina, jitter) proc/check_fire(var/mob/living/target as mob, var/mob/living/user as mob) //Checks if you can hit them or not. if(!istype(target) || !istype(user)) diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index e532af0e6c0..11fb7facc5f 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -104,7 +104,7 @@ /obj/item/projectile/bullet/incendiary/shell/Move() ..() var/turf/location = get_turf(src) - new/obj/fire(location) + new/obj/effect/hotspot(location) location.hotspot_expose(700, 50, 1) /obj/item/projectile/bullet/incendiary/shell/dragonsbreath diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index b2e80728a35..5c05909becd 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -334,7 +334,8 @@ datum var/list/seen = viewers(4, get_turf(my_atom)) for(var/mob/M in seen) - M << "\blue \icon[my_atom] [C.mix_message]" + if(!C.no_message) + M << "\blue \icon[my_atom] [C.mix_message]" /* if(istype(my_atom, /obj/item/slime_core)) var/obj/item/slime_core/ME = my_atom diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 5a98027367c..289c388b17b 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -278,7 +278,7 @@ energy = 100 max_energy = 100 desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one." - dispensable_reagents = list("ice","cream","beer","kahlua","whiskey","wine","vodka","gin","rum","tequilla","vermouth","cognac","ale","mead") + dispensable_reagents = list("ice","cream", "cider", "beer","kahlua","whiskey","wine","vodka","gin","rum","tequilla","vermouth","cognac","ale","mead") hack_message = "You disable the 'nanotrasen-are-cheap-bastards' lock, enabling hidden and very expensive boozes." unhack_message = "You re-enable the 'nanotrasen-are-cheap-bastards' lock, disabling hidden and very expensive boozes." hacked_reagents = list("goldschlager","patron", "absinthe", "ethanol", "nothing") @@ -293,11 +293,11 @@ energy = 5 max_energy = 5 amount = 5 - recharge_delay = 30 + recharge_delay = 10 dispensable_reagents = list() - var/list/special_reagents = list(list("hydrogen", "oxygen", "silicon", "phosphorus", "sulfur", "carbon", "nitrogen"), - list("lithium", "sugar", "water", "copper", "mercury", "sodium"), - list("ethanol", "chlorine", "potassium", "aluminum","plasma", "radium", "fluorine", "iron")) + var/list/special_reagents = list(list("hydrogen", "oxygen", "silicon", "phosphorus", "sulfur", "carbon", "nitrogen", "tungsten", "water"), + list("lithium", "sugar", "copper", "mercury", "sodium","iodine","bromine"), + list("ethanol", "chlorine", "potassium", "aluminum","plasma", "radium", "fluorine", "iron", "silver")) /obj/machinery/chem_dispenser/constructable/New() ..() @@ -323,7 +323,7 @@ time += C.rating for(var/obj/item/weapon/stock_parts/cell/P in component_parts) time += round(P.maxcharge, 10000) / 10000 - recharge_delay /= time/2 //delay between recharges, double the usual time on lowest 50% less than usual on highest + recharge_delay = 10 / (time/2) //delay between recharges, double the usual time on lowest 33% less than usual on highest for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) for(i=1, i<=M.rating, i++) dispensable_reagents = sortList(dispensable_reagents | special_reagents[i]) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 0ac2c811d88..6201723c6ec 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -223,7 +223,6 @@ datum reaction_turf(var/turf/simulated/T, var/volume) if (!istype(T)) return - var/CT = cooling_temperature src = null if(volume >= 3) if(T.wet >= 1) return @@ -245,10 +244,10 @@ datum for(var/mob/living/carbon/slime/M in T) M.apply_water() - var/hotspot = (locate(/obj/fire) in T) + var/hotspot = (locate(/obj/effect/hotspot) in T) if(hotspot && !istype(T, /turf/space)) var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() ) - lowertemp.temperature = max( min(lowertemp.temperature-(CT*1000),lowertemp.temperature / CT) ,0) + lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0) lowertemp.react() T.assume_air(lowertemp) qdel(hotspot) @@ -257,13 +256,13 @@ datum reaction_obj(var/obj/O, var/volume) src = null var/turf/T = get_turf(O) - var/hotspot = (locate(/obj/fire) in T) + var/hotspot = (locate(/obj/effect/hotspot) in T) if(hotspot && !istype(T, /turf/space)) var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() ) lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0) lowertemp.react() T.assume_air(lowertemp) - del(hotspot) + qdel(hotspot) if(istype(O,/obj/item/weapon/reagent_containers/food/snacks/monkeycube)) var/obj/item/weapon/reagent_containers/food/snacks/monkeycube/cube = O if(!cube.wrapped) @@ -1135,6 +1134,7 @@ datum M.adjustToxLoss(3*REM) ..() return + reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with plasma is stronger than fuel! if(!istype(M, /mob/living)) return @@ -1486,9 +1486,9 @@ datum on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom - if(prob(50)) M.heal_organ_damage(1,0) if(!(M.mind in ticker.mode.vampires)) M.nutrition += nutriment_factor // For hunger and fatness + if(prob(50)) M.heal_organ_damage(1,0) ..() return @@ -1767,13 +1767,13 @@ datum if(T.wet_overlay) T.overlays -= T.wet_overlay T.wet_overlay = null - var/hotspot = (locate(/obj/fire) in T) + var/hotspot = (locate(/obj/effect/hotspot) in T) if(hotspot) var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() ) lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0) lowertemp.react() T.assume_air(lowertemp) - del(hotspot) + qdel(hotspot) enzyme name = "Denatured Enzyme" diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 7910dfe3c8b..00f9a662b91 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -17,6 +17,7 @@ datum var/required_temp = 0 var/mix_message = "The solution begins to bubble." var/mix_sound = 'sound/effects/bubbles.ogg' + var/no_message = 0 proc @@ -379,6 +380,7 @@ datum mix_message = "The mixture gives off a sharp acidic tang." ///////Changeling Blood Test///////////// +/* changeling_test name = "Changeling blood test" id = "changelingblood" @@ -403,6 +405,7 @@ datum M.show_message( "The blood seems to break apart in the fuel.", 1) holder.del_reagent("blood") return +*/ /////////////////////////////////////////////NEW SLIME CORE REACTIONS///////////////////////////////////////////// @@ -641,19 +644,13 @@ datum required_container = /obj/item/slime_extract/orange required_other = 1 on_reaction(var/datum/reagents/holder) - for(var/mob/O in viewers(get_turf_loc(holder.my_atom), null)) + feedback_add_details("slime_cores_used","[replacetext(name," ","_")]") + for(var/mob/O in viewers(get_turf(holder.my_atom), null)) O.show_message(text("\red The slime extract begins to vibrate violently !"), 1) sleep(50) - var/turf/location = get_turf(holder.my_atom.loc) - for(var/turf/simulated/floor/target_tile in range(0,location)) - - var/datum/gas_mixture/napalm = new - - napalm.toxins = 25 - napalm.temperature = 1400 - - target_tile.assume_air(napalm) - spawn (0) target_tile.hotspot_expose(700, 400) + var/turf/simulated/T = get_turf(holder.my_atom) + if(istype(T)) + T.atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 50) //Yellow slimeoverload diff --git a/code/modules/reagents/newchem/drugs.dm b/code/modules/reagents/newchem/drugs.dm index b7012cb7b24..e8009abbe60 100644 --- a/code/modules/reagents/newchem/drugs.dm +++ b/code/modules/reagents/newchem/drugs.dm @@ -90,7 +90,7 @@ datum/reagent/crank/addiction_act_stage4(var/mob/living/M as mob) /datum/chemical_reaction/crank/on_reaction(var/datum/reagents/holder, var/created_volume) var/turf/T = get_turf(holder.my_atom) for(var/turf/turf in range(1,T)) - new /obj/fire(turf) + new /obj/effect/hotspot(turf) explosion(T,0,0,2) return diff --git a/code/modules/reagents/newchem/food.dm b/code/modules/reagents/newchem/food.dm index cbc9123e686..42b259c0ea7 100644 --- a/code/modules/reagents/newchem/food.dm +++ b/code/modules/reagents/newchem/food.dm @@ -240,9 +240,9 @@ datum/reagent/cheese/reaction_turf(var/turf/T, var/volume) return /datum/chemical_reaction/cheese - name = "weird_cheese" - id = "weird_cheese" - result = "weird_cheese" + name = "cheese" + id = "cheese" + result = "cheese" required_reagents = list("vomit" = 1, "milk" = 1) result_amount = 1 mix_message = "The mixture curdles up." diff --git a/code/modules/reagents/newchem/other.dm b/code/modules/reagents/newchem/other.dm index 05e6f4fa64c..6012f1a4bbb 100644 --- a/code/modules/reagents/newchem/other.dm +++ b/code/modules/reagents/newchem/other.dm @@ -102,6 +102,7 @@ datum/reagent/acetone result_amount = 0.5 required_temp = 480 mix_sound = null + no_message = 1 datum/reagent/colorful_reagent name = "Colorful Reagent" @@ -119,7 +120,7 @@ datum/reagent/colorful_reagent mix_message = "The substance flashes multiple colors and emits the smell of a pocket protector." datum/reagent/colorful_reagent/reaction_mob(var/mob/living/simple_animal/M, var/method=TOUCH, var/volume) - if(M) + if(M && istype(M)) M.color = pick(random_color_list) ..() return diff --git a/code/modules/reagents/newchem/pyro.dm b/code/modules/reagents/newchem/pyro.dm index 680fd098655..910b34b9a6a 100644 --- a/code/modules/reagents/newchem/pyro.dm +++ b/code/modules/reagents/newchem/pyro.dm @@ -45,7 +45,7 @@ /datum/chemical_reaction/clf3/on_reaction(var/datum/reagents/holder, var/created_volume) var/turf/T = get_turf(holder.my_atom) for(var/turf/turf in range(1,T)) - new /obj/fire(turf) + new /obj/effect/hotspot(turf) return /datum/reagent/clf3/reaction_turf(var/turf/simulated/T, var/volume) @@ -58,7 +58,7 @@ if(prob(volume/10)) F.make_plating() if(istype(F, /turf/simulated/floor/)) - new /obj/fire(F) + new /obj/effect/hotspot(F) if(istype(T, /turf/simulated/wall/)) var/turf/simulated/wall/W = T if(prob(volume/10)) @@ -175,7 +175,7 @@ required_reagents = list("blackpowder" = 1) result_amount = 1 required_temp = 474 - mix_message = "sparks start flying about." + no_message = 1 mix_sound = null datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit @@ -295,7 +295,14 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit spawn(0) if(S) S.set_up(holder, 10, 0, location) - S.start(created_volume >= 10 ? 3 : 2) + if(created_volume < 5) + S.start(1) + if(created_volume >=5 && created_volume < 10) + S.start(2) + if(created_volume >= 10 && created_volume < 15) + S.start(3) + if(created_volume >=15) + S.start(4) if(holder && holder.my_atom) holder.clear_reagents() return @@ -408,7 +415,7 @@ datum/reagent/blackpowder/reaction_turf(var/turf/T, var/volume) //oh shit return var/turf/simulated/T = get_turf(holder.my_atom) for(var/turf/simulated/turf in range(created_volume/10,T)) - new /obj/fire(turf) + new /obj/effect/hotspot(turf) return /datum/reagent/phlogiston/on_mob_life(var/mob/living/M as mob) @@ -551,7 +558,7 @@ datum/reagent/firefighting_foam/reaction_turf(var/turf/simulated/T, var/volume) src = null if(!istype(T, /turf/space)) new /obj/effect/decal/cleanable/flour/foam(T) //foam mess; clears up quickly. - var/hotspot = (locate(/obj/fire) in T) + var/hotspot = (locate(/obj/effect/hotspot) in T) if(hotspot && !istype(T, /turf/space)) var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() ) lowertemp.temperature = max( min(lowertemp.temperature-(CT*1000),lowertemp.temperature / CT) ,0) @@ -563,7 +570,7 @@ datum/reagent/firefighting_foam/reaction_turf(var/turf/simulated/T, var/volume) datum/reagent/firefighting_foam/reaction_obj(var/obj/O, var/volume) src = null var/turf/T = get_turf(O) - var/hotspot = (locate(/obj/fire) in T) + var/hotspot = (locate(/obj/effect/hotspot) in T) if(hotspot && !istype(T, /turf/space)) var/datum/gas_mixture/lowertemp = T.remove_air( T:air:total_moles() ) lowertemp.temperature = max( min(lowertemp.temperature-2000,lowertemp.temperature / 2) ,0) diff --git a/code/modules/reagents/newchem/toxins.dm b/code/modules/reagents/newchem/toxins.dm index c170c199cc1..b2779e42e4c 100644 --- a/code/modules/reagents/newchem/toxins.dm +++ b/code/modules/reagents/newchem/toxins.dm @@ -143,6 +143,7 @@ datum/reagent/neurotoxin2/on_mob_life(var/mob/living/M as mob) result_amount = 1 required_temp = 674 mix_sound = null + no_message = 1 datum/reagent/cyanide name = "Cyanide" diff --git a/code/modules/reagents/reagent_containers/food/cans.dm b/code/modules/reagents/reagent_containers/food/cans.dm index 898d3c18e8a..cc265f9b1fe 100644 --- a/code/modules/reagents/reagent_containers/food/cans.dm +++ b/code/modules/reagents/reagent_containers/food/cans.dm @@ -317,97 +317,4 @@ icon_state = "sodawater" New() ..() - reagents.add_reagent("sodawater", 50) - -//Donk Co. Cola// - -/obj/item/weapon/reagent_containers/food/drinks/cans/pubber - name = "Dr. Pubber" - desc = "The beverage of an original crowd. Tastes like an industrial tranquilizer." - icon_state = "dr_gibb" - New() - ..() - reagents.add_reagent("haloperidol", 4) - reagents.add_reagent("morphine", 4) - reagents.add_reagent("vhfcs", 10) - reagents.add_reagent("cola", 12) - -/obj/item/weapon/reagent_containers/food/drinks/cans/robust - name = "Robust-Eeze" - desc = "A carbonated robustness tonic. It has quite a kick." - icon_state = "cola" - New() - ..() - reagents.add_reagent("methamphetamine", 3) - reagents.add_reagent("vhfcs", 10) - reagents.add_reagent("cola", 17) - -/obj/item/weapon/reagent_containers/food/drinks/cans/grifeo - name = "Grife-O" - desc = "The carbonated beverage of a space generation. Contains actual space dust!" - icon_state = "griefo" - New() - ..() - reagents.add_reagent("radium", 3) - reagents.add_reagent("ephedrine", 6) - reagents.add_reagent("vhfcs", 10) - reagents.add_reagent("cola", 11) - -/obj/item/weapon/reagent_containers/food/drinks/cans/orangeaid - name = "Orange-Aid" - desc = "A vitamin tonic that promotes good eyesight and health." - icon_state = "starkist" - New() - ..() - reagents.add_reagent("orangejuice", 20) - reagents.add_reagent("oculine", 20) - -/obj/item/weapon/reagent_containers/food/drinks/cans/limeaid - name = "Lime-Aid" - desc = "Antihol mixed with lime juice. A well-known cure for hangovers." - icon_state = "space-up" - New() - ..() - reagents.add_reagent("limejuice", 20) - reagents.add_reagent("antihol", 20) - -/obj/item/weapon/reagent_containers/food/drinks/cans/runoff - name = "Spooky Dan's Runoffa Cola" - desc = "A spoooky cola for Halloween! Rumors that Runoff Cola contains actual industrial runoff are unsubstantiated." - icon_state = "purple_can" - New() - ..() - reagents.add_reagent("chlorine", 5) - reagents.add_reagent("phosphorus", 5) - reagents.add_reagent("mercury", 5) - reagents.add_reagent("vhfcs", 10) - reagents.add_reagent("cola", 15) - -/obj/item/weapon/reagent_containers/food/drinks/cans/horror - name = "Spooky Dan's Horrortastic Cola" - desc = "A terrifying Halloween soda. It's especially frightening if you're diabetic." - icon_state = "glowingbeer" - New() - ..() - reagents.add_reagent("ectoplasm", 10) - reagents.add_reagent("sulfur", 5) - reagents.add_reagent("vhfcs", 5) - reagents.add_reagent("cola", 20) - -/obj/item/weapon/reagent_containers/food/drinks/cans/grones - name = "Grones Soda" - desc = "Bursting with 10 different flavors!" - icon_state = "grones" - New() - ..() - reagents.add_reagent("cola", 20) - reagents.add_reagent(pick("atropine","serotrotium","lithium","mercury","charcoal","diphenhydramine","spaceacillin","hairgrownium","ephedrine","capsaicin"), 10) - -/obj/item/weapon/reagent_containers/food/drinks/cans/decirprevo - name = "Decirprevo Bottled Water" - desc = "Bottled from our cool natural springs on Europa." - icon_state = "waterbottle" - New() - ..() - reagents.add_reagent("water", 45) - reagents.add_reagent("iodine", 5) \ No newline at end of file + reagents.add_reagent("sodawater", 50) \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index 9d52b6e701e..b2e6c9d7970 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -365,211 +365,3 @@ desc = "A cup with the british flag emblazoned on it." icon_state = "britcup" volume = 30 - -////Stinkeye/// Holy buns don't ever drink this -Fox - -/obj/item/weapon/reagent_containers/food/drinks/stinkeye - name = "Stinkeye's Special Reserve" - desc = "An old bottle labelled 'The Good Stuff'. This probably has enough kick to knock an elephant on its ass." - icon_state = "whiskeybottle" - volume = 250 - New() - ..() - reagents.add_reagent("beer", 30) - reagents.add_reagent("wine", 30) - reagents.add_reagent("cider", 30) - reagents.add_reagent("vodka", 30) - reagents.add_reagent("ethanol", 30) - reagents.add_reagent("eyenewt", 30) - -////Discount Dan's Soup////// May God have mercy on your souls---and stomachs. -Fox - - -/obj/item/weapon/reagent_containers/food/drinks/dansoup - name = "Discount Dan's Quik-Noodles" - desc = "A self-heating cup of noodles. There's enough sodium in these to put the Dead Sea to shame." - icon_state = "dansoup" - volume = 65 - var/selfheat = 0 - -/obj/item/weapon/reagent_containers/food/drinks/dansoup/attack_self(mob/user as mob) //self-heating action! - if(selfheat) - return - else - selfheat = 1 - user << "You twist the bottom of the cup. The cup emits a soft clack as the heater triggers." - reagents.add_reagent("pyrosium", 2) - reagents.add_reagent("oxygen", 2) - -/obj/item/weapon/reagent_containers/food/drinks/dansoup/random - New() - ..() - var/list/list = typesof(/obj/item/weapon/reagent_containers/food/drinks/dansoup) - list(/obj/item/weapon/reagent_containers/food/drinks/dansoup,/obj/item/weapon/reagent_containers/food/drinks/dansoup/random) - var/T = pick(list) - new T(loc) - spawn(0) - del src - -/obj/item/weapon/reagent_containers/food/drinks/dansoup/bbq - name = "Devil Dan's Quik-Noodles - Brimstone BBQ Flavor" - New() - ..() - reagents.add_reagent("chicken_soup", 10) - reagents.add_reagent("soybeanoil", 1) - reagents.add_reagent("msg", 9) - reagents.add_reagent("sodiumchloride", 10) - reagents.add_reagent("nicotine", 8) - reagents.add_reagent("sulfur", 5) - reagents.add_reagent("beff", 5) -// reagents.add_reagent("ghostchili", 5) uncomment once ghost chili juice is added - -/obj/item/weapon/reagent_containers/food/drinks/dansoup/macaroni - name = "Discount Dan's Quik-Noodles - Macaroni and Imitation Processed Cheese Product Flavor" - New() - ..() - reagents.add_reagent("chicken_soup", 10) - reagents.add_reagent("soybeanoil", 9) - reagents.add_reagent("msg", 9) - reagents.add_reagent("sodiumchloride", 10) - reagents.add_reagent("nicotine", 8) - reagents.add_reagent("fake_cheese", 2) - -/obj/item/weapon/reagent_containers/food/drinks/dansoup/beef - name = "Comrade Dan's Quik-Noodles - Beef Perestroikanoff Flavor" - New() - ..() - reagents.add_reagent("chicken_soup", 10) - reagents.add_reagent("soybeanoil", 1) - reagents.add_reagent("msg", 9) - reagents.add_reagent("sodiumchloride", 10) - reagents.add_reagent("nicotine", 8) - reagents.add_reagent("milk", 3) - reagents.add_reagent("enzyme", 3) - reagents.add_reagent("beff", 4) - -/obj/item/weapon/reagent_containers/food/drinks/dansoup/teriyaki - name = "Discount Deng's Quik-Noodles - Teriyaki TVP Flavor" - New() - ..() - reagents.add_reagent("chicken_soup", 10) - reagents.add_reagent("hydrogenated_soybeanoil", 1) - reagents.add_reagent("msg", 14) - reagents.add_reagent("sodiumchloride", 10) - reagents.add_reagent("nicotine", 8) - reagents.add_reagent("synthflesh", 5) - -/obj/item/weapon/reagent_containers/food/drinks/dansoup/gamer - name = "Dan's Quik-Noodles - Gamer Grubs Flavor" - New() - ..() - reagents.add_reagent("chicken_soup", 10) - reagents.add_reagent("soybeanoil", 1) - reagents.add_reagent("msg", 9) - reagents.add_reagent("sodiumchloride", 10) - reagents.add_reagent("nicotine", 8) - reagents.add_reagent("????", 10) - reagents.add_reagent("potassium", 5) - -/obj/item/weapon/reagent_containers/food/drinks/dansoup/mushroom - name = "Frycook Dan's Quik-Noodles - Mushroom-Swiss Burger-Bake Flavor" - New() - ..() - reagents.add_reagent("chicken_soup", 10) - reagents.add_reagent("soybeanoil", 1) - reagents.add_reagent("msg", 9) - reagents.add_reagent("sodiumchloride", 10) - reagents.add_reagent("nicotine", 8) - reagents.add_reagent("beff", 2) - reagents.add_reagent("weird_cheese", 2) - reagents.add_reagent("psilocybin", 6) - -/obj/item/weapon/reagent_containers/food/drinks/dansoup/ketchup - name = "Frycook Dan's Quik-Noodles - Curly Fry Ketchup Hoedown Flavor" - New() - ..() - reagents.add_reagent("chicken_soup", 10) - reagents.add_reagent("hydrogenated_soybeanoil", 1) - reagents.add_reagent("msg", 9) - reagents.add_reagent("sodiumchloride", 10) - reagents.add_reagent("nicotine", 8) - reagents.add_reagent("tomatojuice", 4) - reagents.add_reagent("mugwort", 3) - reagents.add_reagent("capsaicin", 3) - -/obj/item/weapon/reagent_containers/food/drinks/dansoup/sundae - name = "Dessert Dan's Quik-Noodles - Sweet Sundae Noodle Flavor" - New() - ..() - reagents.add_reagent("chicken_soup", 10) - reagents.add_reagent("soybeanoil", 1) - reagents.add_reagent("msg", 9) - reagents.add_reagent("sodiumchloride", 10) - reagents.add_reagent("nicotine", 8) - reagents.add_reagent("vhfcs", 10) - reagents.add_reagent("chocolate", 2) - reagents.add_reagent("cream", 2) - reagents.add_reagent("chocolate_milk", 6) - -/obj/item/weapon/reagent_containers/food/drinks/dansoup/tuna - name = "Descuento Danito's Quik-Noodles - Tuna Melt Taco Fiesta Flavor" - New() - ..() - reagents.add_reagent("chicken_soup", 10) - reagents.add_reagent("soybeanoil", 1) - reagents.add_reagent("msg", 9) - reagents.add_reagent("sodiumchloride", 10) - reagents.add_reagent("nicotine", 8) - reagents.add_reagent("fake_cheese", 3) - reagents.add_reagent("mercury", 3) - reagents.add_reagent("capsaicin", 4) - -/obj/item/weapon/reagent_containers/food/drinks/dansoup/lomein - name = "Discount Deng's Quik-Noodles - Sweet and Sour Lo Mein Flavor" - New() - ..() - reagents.add_reagent("chicken_soup", 10) - reagents.add_reagent("soybeanoil", 1) - reagents.add_reagent("msg", 9) - reagents.add_reagent("sodiumchloride", 10) - reagents.add_reagent("nicotine", 8) - reagents.add_reagent("sacid", 3) - reagents.add_reagent("vhfcs", 7) - -/obj/item/weapon/reagent_containers/food/drinks/dansoup/crab - name = "Pirate Dan's Quik-Noodles - Spicy Imitation Crab Meat Paste Flavor" - New() - ..() - reagents.add_reagent("chicken_soup", 10) - reagents.add_reagent("soybeanoil", 1) - reagents.add_reagent("msg", 9) - reagents.add_reagent("sodiumchloride", 10) - reagents.add_reagent("nicotine", 8) - reagents.add_reagent("synthflesh", 3) - reagents.add_reagent("saltpetre", 3) - reagents.add_reagent("capsaicin", 14) - -/obj/item/weapon/reagent_containers/food/drinks/dansoup/sausage - name = "Morning Dan's Quik-Noodles - Mechanically Reclaimed Sausage Biscuit Flavor" - New() - ..() - reagents.add_reagent("chicken_soup", 10) - reagents.add_reagent("hydrogenated_soybeanoil", 4) - reagents.add_reagent("msg", 9) - reagents.add_reagent("sodiumchloride", 10) - reagents.add_reagent("nicotine", 8) - reagents.add_reagent("ammonia", 3) - reagents.add_reagent("gravy", 4) - reagents.add_reagent("coffee", 3) - -/obj/item/weapon/reagent_containers/food/drinks/dansoup/italian - name = "Sconto Danilo's Quik-Noodles - Italian Strozzapreti Lunare Flavor" - New() - ..() - reagents.add_reagent("chicken_soup", 10) - reagents.add_reagent("soybeanoil", 1) - reagents.add_reagent("msg", 9) - reagents.add_reagent("sodiumchloride", 10) - reagents.add_reagent("nicotine", 8) - reagents.add_reagent("tomatojuice", 4) - reagents.add_reagent("wine", 2) - reagents.add_reagent("water", 2) \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 3c33b2836cf..8cc0229c548 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -625,6 +625,19 @@ ..() reagents.add_reagent("nutriment", 1) +/obj/item/weapon/reagent_containers/food/snacks/organ + + name = "organ" + desc = "It's good for you." + icon = 'icons/obj/surgery.dmi' + icon_state = "appendix" + filling_color = "#E00D34" + + New() + ..() + reagents.add_reagent("nutriment", 4) + src.bitesize = 3 + /obj/item/weapon/reagent_containers/food/snacks/appendix //yes, this is the same as meat. I might do something different in future name = "appendix" @@ -3368,119 +3381,4 @@ icon_state = "ectoplasm" New() ..() - reagents.add_reagent("ectoplasm", 10) - -////Discount Dan's Burritos////// May God have mercy on your souls---and stomachs. -Fox - -/obj/item/weapon/reagent_containers/food/snacks/danburrito - name = "Discount Dan's Burrito" - desc = "Quite possibly the worst burrito in all of space." - icon_state = "danburrito" - bitesize = 10 - var/selfheat = 0 - -/obj/item/weapon/reagent_containers/food/snacks/danburrito/attack_self(mob/user as mob) //self-heating action! - if(selfheat) - return - else - selfheat = 1 - user << "You crack the burrito like a glow stick, activating the heater mechanism." - reagents.add_reagent("pyrosium", 2) - reagents.add_reagent("oxygen", 2) - -/obj/item/weapon/reagent_containers/food/snacks/danburrito/random - New() - ..() - var/list/list = typesof(/obj/item/weapon/reagent_containers/food/snacks/danburrito) - list(/obj/item/weapon/reagent_containers/food/snacks/danburrito,/obj/item/weapon/reagent_containers/food/snacks/danburrito/random) - var/T = pick(list) - new T(loc) - spawn(0) - del src - -/obj/item/weapon/reagent_containers/food/snacks/danburrito/pizza - name = "Sconto Danilo's Burritos - 50% Real Mozzarella Pepperoni Pizza Party Flavor" - desc = "A self-heating pizza burrito." - New() - ..() - reagents.add_reagent("soybeanoil", 3) - reagents.add_reagent("msg", 9) - reagents.add_reagent("fake_cheese", 3) - reagents.add_reagent("cheese", 3) - reagents.add_reagent("pepperoni", 3) - -/obj/item/weapon/reagent_containers/food/snacks/danburrito/pancake - name = "Descuento Danito's Burritos - Pancake Sausage Brunch Flavor" - desc = "A self-heating breakfast burrito with a buttermilk pancake in lieu of a tortilla. A little frightening." - New() - ..() - reagents.add_reagent("hydrogenated_soybeanoil", 3) - reagents.add_reagent("msg", 9) - reagents.add_reagent("porktonium", 4) - reagents.add_reagent("vhfcs", 2) - reagents.add_reagent("coffee", 4) - -/obj/item/weapon/reagent_containers/food/snacks/danburrito/beans - name = "Descuento Danito's Burritos - Spicy Beans and Wieners Ole! Flavor" - desc = "A self-heating convenience reinterpretation of Mexican cuisine. The exact mechanism used to heat it is probably best left to speculation." - New() - ..() - reagents.add_reagent("soybeanoil", 3) - reagents.add_reagent("msg", 9) - reagents.add_reagent("lithium", 4) - reagents.add_reagent("capsaicin", 6) - reagents.add_reagent("beans", 10) - -/obj/item/weapon/reagent_containers/food/snacks/danburrito/homestyle - name = "Descuento Danito's Burritos - Homestyle Comfort Flavor" - desc = "A self-heating burrito just like Mom used to make, if your mother was a souless, automated burrito production line." - New() - ..() - reagents.add_reagent("soybeanoil", 3) - reagents.add_reagent("msg", 9) - reagents.add_reagent("mashedpotatoes", 5) - reagents.add_reagent("gravy", 3) - reagents.add_reagent("diethylamine", 2) - -/obj/item/weapon/reagent_containers/food/snacks/danburrito/texas - name = "Spooky Dan's BOO-ritos - Texas Toast Chainsaw Massacre Flavor" - desc = "A self-heating burrito. Isn't that concept scary enough on its own?" - New() - ..() - reagents.add_reagent("soybeanoil", 3) - reagents.add_reagent("msg", 9) - reagents.add_reagent("fake_cheese", 3) - reagents.add_reagent("space_drugs", 3) -// reagents.add_reagent("cblood", 4) uncomment once actual changeling blood is added - -/obj/item/weapon/reagent_containers/food/snacks/danburrito/beff - name = "Descuento Danito's Burritos - Beff and Bean Flavor" - desc = "A self-heating convenience reinterpretation of Mexican cuisine. The exact mechanism used to heat it is probably best left to speculation." - New() - ..() - reagents.add_reagent("hydrogenated_soybeanoil", 3) - reagents.add_reagent("msg", 9) - reagents.add_reagent("uranium", 2) - reagents.add_reagent("beff", 4) - reagents.add_reagent("fake_cheese", 4) - reagents.add_reagent("beans", 10) - -/obj/item/weapon/reagent_containers/food/snacks/danburrito/nightmare - name = "Spooky Dan's BOO-ritos - Nightmare on Elm Meat Flavor" - desc = "A self-heating burrito that purports to contain elm-smoked meat. Of some sort. Probably from an animal." - New() - ..() - reagents.add_reagent("soybeanoil", 3) - reagents.add_reagent("msg", 9) - reagents.add_reagent("beff", 3) - reagents.add_reagent("synthflesh", 2) - reagents.add_reagent("tonguedog", 9) - -/obj/item/weapon/reagent_containers/food/snacks/danburrito/strawberry - name = "Descuento Danito's Burritos - Strawberrito Churro Flavor" - desc = "There is no way anyone could possibly justify this." - New() - ..() - reagents.add_reagent("soybeanoil", 3) - reagents.add_reagent("msg", 9) - reagents.add_reagent("vhfcs", 8) - reagents.add_reagent("oil", 2) \ No newline at end of file + reagents.add_reagent("ectoplasm", 10) \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/glass_containers.dm b/code/modules/reagents/reagent_containers/glass_containers.dm index e88c22556f5..a469be34254 100644 --- a/code/modules/reagents/reagent_containers/glass_containers.dm +++ b/code/modules/reagents/reagent_containers/glass_containers.dm @@ -1,4 +1,4 @@ -//////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// /// (Mixing)Glass. //////////////////////////////////////////////////////////////////////////////// /obj/item/weapon/reagent_containers/glass @@ -190,6 +190,7 @@ item_state = "beaker" m_amt = 0 g_amt = 500 + var/obj/item/device/assembly_holder/assembly = null on_reagent_change() update_icon() @@ -228,6 +229,55 @@ if (!is_open_container()) var/image/lid = image(icon, src, "lid_[initial(icon_state)]") overlays += lid + if(assembly) + overlays += "assembly" + +/obj/item/weapon/reagent_containers/glass/beaker/verb/remove_assembly() + set name = "Remove Assembly" + set category = "Object" + set src in usr + if(usr.stat || !usr.canmove || usr.restrained()) + return + if (assembly) + usr << "You detach [assembly] from \the [src]" + usr.put_in_hands(assembly) + assembly = null + update_icon() + else + usr << "There is no assembly to remove." + +/obj/item/weapon/reagent_containers/glass/beaker/proc/heat_beaker() + if(reagents) + reagents.chem_temp += 30 + reagents.handle_reactions() + +/obj/item/weapon/reagent_containers/glass/beaker/attackby(obj/item/weapon/W as obj, mob/user as mob, params) + if (istype(W,/obj/item/device/assembly_holder)) + if (assembly) + usr << "The [src] already has an assembly." + return ..() + assembly = W + user.drop_item() + W.loc = src + overlays += "assembly" + else + ..() + +/obj/item/weapon/reagent_containers/glass/beaker/HasProximity(atom/movable/AM) + if(assembly) + assembly.HasProximity(AM) + +/obj/item/weapon/reagent_containers/glass/beaker/Crossed(atom/movable/AM) + if(assembly) + assembly.Crossed(AM) + +/obj/item/weapon/reagent_containers/glass/beaker/on_found(mob/finder as mob) //for mousetraps + if(assembly) + assembly.on_found(finder) + +/obj/item/weapon/reagent_containers/glass/beaker/hear_talk(mob/living/M, msg) + if(assembly) + assembly.hear_talk(M, msg) /obj/item/weapon/reagent_containers/glass/beaker/large name = "large beaker" diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 27472b7d732..d1506aa8dbc 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -405,6 +405,7 @@ //Actually transfer the gas var/datum/gas_mixture/removed = env.remove(transfer_moles) air_contents.merge(removed) + air_update_turf() // if full enough, switch to ready mode diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 2c5c73f5374..b3efb13975a 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -178,6 +178,14 @@ build_path = /obj/item/device/assembly/prox_sensor category = list("initial", "Miscellaneous") +/datum/design/mousetrap + name = "Mousetrap" + id = "mousetrap" + build_type = AUTOLATHE + materials = list("$metal" = 800, "$glass" = 200) + build_path = /obj/item/device/assembly/mousetrap + category = list("initial", "Miscellaneous") + /datum/design/timer name = "Timer" id = "timer" diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm index 4b0dc6425e9..403e5745ca8 100644 --- a/code/modules/research/designs/misc_designs.dm +++ b/code/modules/research/designs/misc_designs.dm @@ -39,4 +39,14 @@ build_type = PROTOLATHE | AUTOLATHE materials = list("$metal" = 30, "$glass" = 10) build_path = /obj/item/weapon/disk/tech_disk + category = list("Miscellaneous") + +/datum/design/digital_camera + name = "Digital Camera" + desc = "Produce an enhanced version of the standard issue camera." + id = "digitalcamera" + req_tech = list("programming" = 2, "materials" = 2) + build_type = PROTOLATHE + materials = list("$metal" = 500, "$glass" = 300) + build_path = /obj/item/device/camera/digital category = list("Miscellaneous") \ No newline at end of file diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm index e3daebc6b36..e999c34df17 100644 --- a/code/modules/research/server.dm +++ b/code/modules/research/server.dm @@ -117,21 +117,22 @@ removed.temperature = min((removed.temperature*heat_capacity + heating_power)/heat_capacity, 1000) env.merge(removed) + air_update_turf() /obj/machinery/r_n_d/server/attackby(var/obj/item/O as obj, var/mob/user as mob, params) if (disabled) return - + if (shocked) shock(user,50) - - if(istype(O, /obj/item/weapon/screwdriver)) + + if(istype(O, /obj/item/weapon/screwdriver)) default_deconstruction_screwdriver(user, "server_o", "server") return 1 - + if(exchange_parts(user, O)) return 1 - + if (panel_open) if(istype(O, /obj/item/weapon/crowbar)) griefProtection() @@ -141,7 +142,7 @@ /obj/machinery/r_n_d/server/attack_hand(mob/user as mob) if (disabled) return - + if (shocked) shock(user,50) return diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasco2.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasco2.dm index c9cafa4e718..df7fa75c848 100644 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasco2.dm +++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasco2.dm @@ -22,5 +22,5 @@ /datum/artifact_effect/gasco2/DoEffectAura() if(holder) var/datum/gas_mixture/env = holder.loc.return_air() - if(env && env.total_moles < max_pressure) + if(env && env.total_moles() < max_pressure) env.carbon_dioxide += pick(0, 0, 0.1, rand()) diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasnitro.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasnitro.dm index 527c2592aa9..55e667e5264 100644 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasnitro.dm +++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasnitro.dm @@ -19,5 +19,5 @@ /datum/artifact_effect/gasnitro/DoEffectAura() if(holder) var/datum/gas_mixture/env = holder.loc.return_air() - if(env && env.total_moles < max_pressure) + if(env && env.total_moles() < max_pressure) env.nitrogen += pick(0, 0, 0.1, rand()) diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasoxy.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasoxy.dm index d0daa6951fb..e4c30bd0cbd 100644 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasoxy.dm +++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasoxy.dm @@ -19,5 +19,5 @@ /datum/artifact_effect/gasoxy/DoEffectAura() if(holder) var/datum/gas_mixture/env = holder.loc.return_air() - if(env && env.total_moles < max_pressure) + if(env && env.total_moles() < max_pressure) env.oxygen += pick(0, 0, 0.1, rand()) diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasplasma.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasplasma.dm index c375e746e28..68719264f02 100644 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasplasma.dm +++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gasplasma.dm @@ -19,5 +19,5 @@ /datum/artifact_effect/gasplasma/DoEffectAura() if(holder) var/datum/gas_mixture/env = holder.loc.return_air() - if(env && env.total_moles < max_pressure) + if(env && env.total_moles() < max_pressure) env.toxins += pick(0, 0, 0.1, rand()) diff --git a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gassleeping.dm b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gassleeping.dm index 5ce5256736c..76cd29069f0 100644 --- a/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gassleeping.dm +++ b/code/modules/research/xenoarchaeology/artifact/effects/unknown_effect_gassleeping.dm @@ -23,7 +23,7 @@ /datum/artifact_effect/gassleeping/DoEffectAura() if(holder) var/datum/gas_mixture/env = holder.loc.return_air() - if(env && env.total_moles < max_pressure) + if(env && env.total_moles() < max_pressure) var/datum/gas/sleeping_agent/trace_gas = new env.trace_gases += trace_gas trace_gas.moles = pick(0, 0, 0.1, rand()) diff --git a/code/modules/supermatter/supermatter.dm b/code/modules/supermatter/supermatter.dm index 27f4fc41602..cea70a189a6 100644 --- a/code/modules/supermatter/supermatter.dm +++ b/code/modules/supermatter/supermatter.dm @@ -155,84 +155,67 @@ if(grav_pulling) supermatter_pull() - //Ok, get the air from the turf - var/datum/gas_mixture/removed = null - var/datum/gas_mixture/env = null + //Ok, get the air from the turf + var/datum/gas_mixture/env = L.return_air() - //ensure that damage doesn't increase too quickly due to super high temperatures resulting from no coolant, for example. We dont want the SM exploding before anyone can react. - //We want the cap to scale linearly with power (and explosion_point). Let's aim for a cap of 5 at power = 900 (based on testing, equals roughly 5% per SM alert announcement). - var/damage_inc_limit = (power/900)*(explosion_point/1000)*DAMAGE_RATE_LIMIT + //Remove gas from surrounding area + var/datum/gas_mixture/removed = env.remove(gasefficency * env.total_moles()) - if(!istype(L, /turf/space)) - env = L.return_air() - removed = env.remove(gasefficency * env.total_moles) //Remove gas from surrounding area + if(!removed || !removed.total_moles()) + damage += max((power-1600)/10, 0) + power = min(power, 1600) + return 1 - if(!env || !removed || !removed.total_moles) - damage += max(((power-(1600*POWER_FACTOR)))/10, 0) //exciting the supermatter in a vacuum means the internal energy is mostly locked inside. - else if (grav_pulling) //If supermatter is detonating, remove all air from the zone - env.remove(env.total_moles) + damage_archived = damage + damage = max( damage + ( (removed.temperature - 800) / 150 ) , 0 ) + //Ok, 100% oxygen atmosphere = best reaction + //Maxes out at 100% oxygen pressure + oxygen = max(min((removed.oxygen - (removed.nitrogen * NITROGEN_RETARDATION_FACTOR)) / MOLES_CELLSTANDARD, 1), 0) + + var/temp_factor = 50 + + if(oxygen > 0.8) + // with a perfect gas mix, make the power less based on heat + icon_state = "[base_icon_state]_glow" else - damage_archived = damage + // in normal mode, base the produced energy around the heat + temp_factor = 30 + icon_state = base_icon_state - damage = max( damage + min( ( (removed.temperature - 800) / 150 ), damage_inc_limit ) , 0 ) - //Ok, 100% oxygen atmosphere = best reaction - //Maxes out at 100% oxygen pressure - oxygen = max(min((removed.oxygen - (removed.nitrogen * NITROGEN_RETARDATION_FACTOR)) / MOLES_CELLSTANDARD, 1), 0) + power = max( (removed.temperature * temp_factor / T0C) * oxygen + power, 0) //Total laser power plus an overload - var/temp_factor = 100 + //We've generated power, now let's transfer it to the collectors for storing/usage + transfer_energy() - if(oxygen > 0.8) - // with a perfect gas mix, make the power less based on heat - icon_state = "[base_icon_state]_glow" - else - // in normal mode, base the produced energy around the heat - temp_factor = 60 - icon_state = base_icon_state + var/device_energy = power * REACTION_POWER_MODIFIER - power = max( (removed.temperature * temp_factor / T0C) * oxygen + power, 0) //Total laser power plus an overload + //To figure out how much temperature to add each tick, consider that at one atmosphere's worth + //of pure oxygen, with all four lasers firing at standard energy and no N2 present, at room temperature + //that the device energy is around 2140. At that stage, we don't want too much heat to be put out + //Since the core is effectively "cold" - //We've generated power, now let's transfer it to the collectors for storing/usage - transfer_energy() + //Also keep in mind we are only adding this temperature to (efficiency)% of the one tile the rock + //is on. An increase of 4*C @ 25% efficiency here results in an increase of 1*C / (#tilesincore) overall. + removed.temperature += (device_energy / THERMAL_RELEASE_MODIFIER) - var/device_energy = power * REACTION_POWER_MODIFIER + removed.temperature = max(0, min(removed.temperature, 2500)) - //To figure out how much temperature to add each tick, consider that at one atmosphere's worth - //of pure oxygen, with all four lasers firing at standard energy and no N2 present, at room temperature - //that the device energy is around 2140. At that stage, we don't want too much heat to be put out - //Since the core is effectively "cold" + //Calculate how much gas to release + removed.toxins += max(device_energy / PLASMA_RELEASE_MODIFIER, 0) - //Also keep in mind we are only adding this temperature to (efficiency)% of the one tile the rock - //is on. An increase of 4*C @ 25% efficiency here results in an increase of 1*C / (#tilesincore) overall. + removed.oxygen += max((device_energy + removed.temperature - T0C) / OXYGEN_RELEASE_MODIFIER, 0) - var/thermal_power = THERMAL_RELEASE_MODIFIER - - //This shouldn't be necessary. If the number of moles is low, then heat_capacity should be tiny. - //if(removed.total_moles < 35) thermal_power += 750 //If you don't add coolant, you are going to have a bad time. - - removed.temperature += ((device_energy * thermal_power) / removed.heat_capacity()) - - removed.temperature = max(0, min(removed.temperature, 10000)) - - //Calculate how much gas to release - removed.toxins += max(device_energy / PLASMA_RELEASE_MODIFIER, 0) - - removed.oxygen += max((device_energy + removed.temperature - T0C) / OXYGEN_RELEASE_MODIFIER, 0) - - removed.update_values() - - env.merge(removed) + env.merge(removed) for(var/mob/living/carbon/human/l in view(src, min(7, round(power ** 0.25)))) // If they can see it without mesons on. Bad on them. if(!istype(l.glasses, /obj/item/clothing/glasses/meson)) - l.hallucination = max(0, min(200, l.hallucination + power * config_hallucination_power * sqrt( 1 / max(1,get_dist(l, src)) ) ) ) + l.hallucination = max(0, min(200, l.hallucination + power * config_hallucination_power * sqrt( 1 / max(1, get_dist(l, src)) ) ) ) - //adjusted range so that a power of 600 (pretty high) results in 8 tiles, roughly the distance from the core to the engine monitoring room. - //at power of 1210 this becomes 9 tiles --> increases very very slowly. - for(var/mob/living/l in range(src, round((power / 0.146484375) ** 0.25))) - var/rads = (power / 10) * sqrt( 1 / get_dist(l, src) ) - l.apply_effect(rads, IRRADIATE) + for(var/mob/living/l in range(src, round((power / 100) ** 0.25))) + var/rads = (power / 10) * sqrt( 1 / max(get_dist(l, src),1) ) + l.apply_effect(irradiate=rads) - power -= (power/500)**3 //energy losses due to radiation + power -= (power/500)**3 return 1 @@ -354,11 +337,4 @@ if(defer_powernet_rebuild != 2) defer_powernet_rebuild = 0 - return - - -/obj/machinery/power/supermatter/GotoAirflowDest(n) //Supermatter not pushed around by airflow - return - -/obj/machinery/power/supermatter/RepelAirflowDest(n) - return + return \ No newline at end of file diff --git a/code/setup.dm b/code/setup.dm index 9816936ce2f..393de3e9723 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -10,6 +10,8 @@ #define CELL_VOLUME 2500 //liters in a cell #define MOLES_CELLSTANDARD (ONE_ATMOSPHERE*CELL_VOLUME/(T20C*R_IDEAL_GAS_EQUATION)) //moles in a 2.5 m^3 cell at 101.325 Pa and 20 degC +#define M_CELL_WITH_RATIO (MOLES_CELLSTANDARD * 0.005) + #define O2STANDARD 0.21 #define N2STANDARD 0.79 @@ -145,8 +147,6 @@ #define T20C 293.15 // 20degC #define TCMB 2.7 // -270.3degC -var/turf/space/Space_Tile = locate(/turf/space) // A space tile to reference when atmos wants to remove excess heat. - #define TANK_LEAK_PRESSURE (30.*ONE_ATMOSPHERE) // Tank starts leaking #define TANK_RUPTURE_PRESSURE (40.*ONE_ATMOSPHERE) // Tank spills all contents into atmosphere diff --git a/icons/effects/fire.dmi b/icons/effects/fire.dmi index da0f4c6271a..2b9071d25ef 100644 Binary files a/icons/effects/fire.dmi and b/icons/effects/fire.dmi differ diff --git a/icons/obj/barsigns.dmi b/icons/obj/barsigns.dmi index cacaf71b156..cd7408a46d5 100644 Binary files a/icons/obj/barsigns.dmi and b/icons/obj/barsigns.dmi differ diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi index db617d819bf..b67e0602781 100644 Binary files a/icons/obj/chemical.dmi and b/icons/obj/chemical.dmi differ diff --git a/icons/obj/clothing/rings.dmi b/icons/obj/clothing/rings.dmi new file mode 100644 index 00000000000..d378c34e04e Binary files /dev/null and b/icons/obj/clothing/rings.dmi differ diff --git a/icons/obj/doors/Doorfireglass.dmi b/icons/obj/doors/Doorfireglass.dmi new file mode 100644 index 00000000000..f00e6c2857e Binary files /dev/null and b/icons/obj/doors/Doorfireglass.dmi differ diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index 28d5636923e..1e9e95508ef 100644 Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ diff --git a/icons/obj/food.dmi b/icons/obj/food.dmi index d60299f846d..df9b971041a 100644 Binary files a/icons/obj/food.dmi and b/icons/obj/food.dmi differ diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index f526ddeee70..4636f769664 100644 Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ diff --git a/maps/cyberiad.dmm b/maps/cyberiad.dmm index f43d9fe0fce..59e7f23f135 100644 --- a/maps/cyberiad.dmm +++ b/maps/cyberiad.dmm @@ -376,14 +376,14 @@ "ahl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/security/armoury) "ahm" = (/turf/simulated/floor,/area/security/armoury) "ahn" = (/obj/machinery/light{dir = 4},/obj/structure/rack,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/storage/box/teargas,/obj/effect/decal/warning_stripes/red/hollow,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/armoury) -"aho" = (/obj/machinery/door/firedoor/multi_tile,/obj/machinery/door/airlock/multi_tile/glass{req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/security/securehallway) -"ahp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/security/securehallway) +"aho" = (/obj/machinery/door/airlock/multi_tile/glass{req_access_txt = "1"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/security/securehallway) +"ahp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/security/securehallway) "ahq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/security/securehallway) "ahr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/securehallway) "ahs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/security/securehallway) "aht" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/security/securehallway) -"ahu" = (/obj/machinery/door/firedoor/multi_tile,/obj/machinery/door/airlock/multi_tile/glass{req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/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 = "floorgrime"},/area/security/securehallway) -"ahv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/securehallway) +"ahu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/securehallway) +"ahv" = (/obj/machinery/door/airlock/multi_tile/glass{req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "floorgrime"},/area/security/securehallway) "ahw" = (/turf/simulated/floor,/area/shuttle/gamma/station) "ahx" = (/turf/space,/area/shuttle/syndicate_elite/station) "ahy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/security/interrogation) @@ -569,9 +569,9 @@ "akW" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/floor/plating,/area/shuttle/siberia/station) "akX" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/siberia/station) "akY" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "labor_dock_north_airlock"; name = "exterior access button"; pixel_x = 3; pixel_y = -25; req_access_txt = "2"},/turf/space,/area) -"akZ" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/glass_security{name = "Firing Range"; req_access_txt = "1"},/turf/simulated/floor,/area/security/range) +"akZ" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/glass_security{name = "Firing Range"; req_access_txt = "1"},/turf/simulated/floor,/area/security/range) "ala" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/security/range) -"alb" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass_security{name = "Firing Range"; req_access_txt = "1"},/turf/simulated/floor,/area/security/range) +"alb" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass_security{name = "Firing Range"; req_access_txt = "1"},/turf/simulated/floor,/area/security/range) "alc" = (/obj/structure/closet/secure_closet/brigdoc,/turf/simulated/floor{icon_state = "white"},/area/security/medbay) "ald" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/security/medbay) "ale" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/security/medbay) @@ -654,7 +654,7 @@ "amD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prisonershuttle) "amE" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prisonershuttle) "amF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/security/prisonershuttle) -"amG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) +"amG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) "amH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig) "amI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/security/brig) "amJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/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 = ""},/turf/simulated/floor,/area/security/brig) @@ -706,7 +706,7 @@ "anD" = (/turf/simulated/floor{icon_state = "red"},/area/security/prisonershuttle) "anE" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "red"},/area/security/prisonershuttle) "anF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{icon_state = "red"},/area/security/prisonershuttle) -"anG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "red"},/area/security/brig) +"anG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "red"},/area/security/brig) "anH" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor{icon_state = "red"},/area/security/brig) "anI" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/security/brig) "anJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/security/brig) @@ -740,7 +740,7 @@ "aol" = (/obj/machinery/mineral/labor_claim_console{machinedir = 1; pixel_x = 30; pixel_y = 0},/obj/machinery/mineral/input,/turf/simulated/shuttle/floor,/area/shuttle/siberia/station) "aom" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/security/interrogationobs) "aon" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/security/prisonershuttle) -"aoo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_security{name = "Prisoner Processing"; req_access_txt = "1"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prisonershuttle) +"aoo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Prisoner Processing"; req_access_txt = "1"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prisonershuttle) "aop" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable,/turf/simulated/floor/plating,/area/security/prisonershuttle) "aoq" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{id_tag = "BrigWest"; name = "Brig"; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/security/prison/cell_block/B) "aor" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{id_tag = "BrigWest"; name = "Brig"; req_access_txt = "63"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/security/prison/cell_block/B) @@ -1166,9 +1166,9 @@ "awv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "magistrate"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/magistrateoffice) "aww" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Magistrate's Office"; req_access_txt = "74"},/turf/simulated/floor,/area/magistrateoffice) "awx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Internal Affairs Office"; req_access_txt = "38"},/turf/simulated/floor,/area/lawoffice) -"awy" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/fore) -"awz" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/fore) -"awA" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore) +"awy" = (/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/fore) +"awz" = (/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/primary/fore) +"awA" = (/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore) "awB" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor,/area/maintenance/fsmaint) "awC" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Security Maintenance APC"; pixel_y = 24},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fsmaint) "awD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/wood,/area/crew_quarters/mrchangs) @@ -1239,10 +1239,10 @@ "axQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/security/prison/cell_block/A) "axR" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor/plating,/area/maintenance/fsmaint) "axS" = (/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 1; icon_state = "rightsecure"; name = "Secure Door"; req_access_txt = "63"},/turf/simulated/floor{dir = 2; icon_state = "redfull"; tag = "icon-redfull (NORTHWEST)"},/area/security/brig) -"axT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Mr. Chang's"},/turf/simulated/floor,/area/crew_quarters/mrchangs) +"axT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Mr. Chang's"},/turf/simulated/floor,/area/crew_quarters/mrchangs) "axU" = (/turf/simulated/wall,/area/security/brig) "axV" = (/obj/machinery/door/window/brigdoor{dir = 1; req_access_txt = "63"},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor{dir = 2; icon_state = "redfull"; tag = "icon-redfull (NORTHWEST)"},/area/security/brig) -"axW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Barber Shop"},/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/civilian/barber) +"axW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Barber Shop"},/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/civilian/barber) "axX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/security/detectives_office) "axY" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/crew_quarters/fitness) "axZ" = (/turf/simulated/floor/engine{name = "Holodeck Projector Floor"},/area/holodeck/alphadeck) @@ -1274,7 +1274,7 @@ "ayz" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) "ayA" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) "ayB" = (/obj/machinery/vending/artvend,/turf/simulated/floor,/area/crew_quarters/locker) -"ayC" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/vending/soda,/turf/simulated/floor,/area/crew_quarters/locker) +"ayC" = (/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/vending/cola,/turf/simulated/floor,/area/crew_quarters/locker) "ayD" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/structure/sign/chinese{pixel_y = 30},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) "ayE" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) "ayF" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/obj/structure/stool/bed/chair/sofa/right,/obj/machinery/camera{c_tag = "Boxing Ring"; network = list("SS13")},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) @@ -1296,7 +1296,7 @@ "ayV" = (/turf/simulated/wall,/area/maintenance/fpmaint2) "ayW" = (/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/fpmaint2) "ayX" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "arrivals_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/fpmaint2) -"ayY" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2) +"ayY" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "ayZ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "aza" = (/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/fpmaint2) "azb" = (/turf/simulated/wall,/area/maintenance/fpmaint) @@ -1385,8 +1385,8 @@ "aAG" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor,/area/crew_quarters/fitness) "aAH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/crew_quarters/fitness) "aAI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "red"; dir = 4},/area/crew_quarters/fitness) -"aAJ" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Holodeck Door"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor,/area/crew_quarters/fitness) -"aAK" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Holodeck Door"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor,/area/crew_quarters/fitness) +"aAJ" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Holodeck Door"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/turf/simulated/floor,/area/crew_quarters/fitness) +"aAK" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Holodeck Door"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor,/area/crew_quarters/fitness) "aAL" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/crew_quarters/fitness) "aAM" = (/obj/machinery/camera{c_tag = "Holodeck"; network = list("SS13")},/obj/machinery/alarm{pixel_y = 24},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/crew_quarters/fitness) "aAN" = (/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/crew_quarters/fitness) @@ -1417,7 +1417,7 @@ "aBm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/table,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/item/stack/medical/advanced/bruise_pack,/obj/item/clothing/gloves/boxing,/turf/simulated/floor,/area/crew_quarters/fitness) "aBn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/crew_quarters/fitness) "aBo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) -"aBp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Dormitories"; req_access_txt = "0"},/turf/simulated/floor,/area/crew_quarters/fitness) +"aBp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Dormitories"; req_access_txt = "0"},/turf/simulated/floor,/area/crew_quarters/fitness) "aBq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/crew_quarters/fitness) "aBr" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/crew_quarters/fitness) "aBs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/stool,/turf/simulated/floor{icon_state = "red"; dir = 4},/area/crew_quarters/fitness) @@ -1464,7 +1464,7 @@ "aCh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/wood,/area/crew_quarters/fitness) "aCi" = (/obj/machinery/door/window/eastleft{name = "Boxing Ring"},/turf/simulated/floor/wood,/area/crew_quarters/fitness) "aCj" = (/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) -"aCk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Dormitories"; req_access_txt = "0"},/turf/simulated/floor,/area/crew_quarters/fitness) +"aCk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Dormitories"; req_access_txt = "0"},/turf/simulated/floor,/area/crew_quarters/fitness) "aCl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/crew_quarters/fitness) "aCm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/crew_quarters/fitness) "aCn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/stool,/turf/simulated/floor{icon_state = "green"; dir = 4},/area/crew_quarters/fitness) @@ -1478,7 +1478,7 @@ "aCv" = (/obj/item/stack/tile/wood,/turf/simulated/floor/plating,/area/maintenance/abandonedbar) "aCw" = (/obj/structure/stool/bed/chair/wood/wings{tag = "icon-wooden_chair_wings (EAST)"; icon_state = "wooden_chair_wings"; dir = 4},/turf/simulated/floor/wood,/area/maintenance/abandonedbar) "aCx" = (/obj/structure/table/woodentable,/obj/item/trash/candle,/turf/simulated/floor/plating,/area/maintenance/abandonedbar) -"aCy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"aCy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "aCz" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry) "aCA" = (/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{frequency = 1380; id_tag = "escape_pod_1_berth"; pixel_x = -25; pixel_y = 30; tag_door = "escape_pod_1_berth_hatch"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry) "aCB" = (/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/light{dir = 1},/obj/machinery/camera/xray{c_tag = "Arrivals Escape Pods"},/turf/simulated/floor,/area/hallway/secondary/entry) @@ -1508,7 +1508,7 @@ "aCZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/fsmaint) "aDa" = (/obj/machinery/computer/cryopod{density = 0; pixel_x = -32; pixel_y = 0},/obj/machinery/camera{c_tag = "Cryodorms"; c_tag_order = 999; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep) "aDb" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep) -"aDc" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{id_tag = "Cryogenics"; name = "Cryodorms"},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep) +"aDc" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{id_tag = "Cryogenics"; name = "Cryodorms"},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/sleep) "aDd" = (/obj/structure/table/woodentable,/obj/item/device/paicard,/turf/simulated/floor,/area/crew_quarters/fitness) "aDe" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/wood,/area/crew_quarters/fitness) "aDf" = (/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced,/turf/simulated/floor/wood,/area/crew_quarters/fitness) @@ -1517,8 +1517,8 @@ "aDi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor,/area/crew_quarters/fitness) "aDj" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/crew_quarters/fitness) "aDk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor{icon_state = "green"; dir = 4},/area/crew_quarters/fitness) -"aDl" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Holodeck Door"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor,/area/crew_quarters/fitness) -"aDm" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Holodeck Door"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/crew_quarters/fitness) +"aDl" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Holodeck Door"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor,/area/crew_quarters/fitness) +"aDm" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass{name = "Holodeck Door"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/crew_quarters/fitness) "aDn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light/small,/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor,/area/crew_quarters/fitness) "aDo" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor,/area/crew_quarters/fitness) "aDp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/security/brig) @@ -1528,7 +1528,7 @@ "aDt" = (/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken"},/area/maintenance/abandonedbar) "aDu" = (/obj/item/trash/liquidfood,/turf/simulated/floor/wood,/area/maintenance/abandonedbar) "aDv" = (/obj/structure/sink/kitchen{pixel_y = 25},/obj/machinery/light_construct/small{dir = 4},/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken"},/area/maintenance/abandonedbar) -"aDw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"aDw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "aDx" = (/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry) "aDy" = (/turf/simulated/floor,/area/hallway/secondary/entry) "aDz" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry) @@ -1563,7 +1563,7 @@ "aEc" = (/obj/machinery/power/apc{dir = 1; name = "EVA APC"; pixel_x = 3; pixel_y = 23},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/ai_monitored/storage/eva) "aEd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/ai_monitored/storage/eva) "aEe" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/ai_monitored/storage/eva) -"aEf" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "Softsuits"; req_access_txt = "18"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) +"aEf" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Softsuits"; req_access_txt = "18"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aEg" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aEh" = (/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) "aEi" = (/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore) @@ -1600,7 +1600,7 @@ "aEN" = (/obj/structure/table/woodentable,/obj/item/trash/plate,/turf/simulated/floor/wood,/area/maintenance/abandonedbar) "aEO" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/bottle/patron,/obj/item/weapon/storage/fancy/cigarettes/cigpack_shadyjims,/turf/simulated/floor/plating,/area/maintenance/abandonedbar) "aEP" = (/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) -"aEQ" = (/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"aEQ" = (/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "aER" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry) "aES" = (/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/entry) "aET" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/hallway/secondary/entry) @@ -1670,10 +1670,10 @@ "aGf" = (/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry) "aGg" = (/obj/machinery/camera{c_tag = "Arrivals North"; dir = 1},/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry) "aGh" = (/obj/machinery/vending/coffee,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/hallway/secondary/entry) -"aGi" = (/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},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) -"aGj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) -"aGk" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry) -"aGl" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry) +"aGi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"aGj" = (/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},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"aGk" = (/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry) +"aGl" = (/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/hallway/secondary/entry) "aGm" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 6; level = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/maintenance/fpmaint2) "aGn" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "aGo" = (/obj/structure/stool{pixel_y = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plating,/area/maintenance/auxsolarport) @@ -1695,7 +1695,7 @@ "aGE" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/table/reinforced,/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) "aGF" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore) "aGG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) -"aGH" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{name = "Unisex Showers"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) +"aGH" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Unisex Showers"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aGI" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aGJ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/beach/water{icon_state = "seadeep"},/area/crew_quarters/fitness) "aGK" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/mob/living/simple_animal/crab/Coffee,/turf/simulated/floor/beach/water{icon_state = "seadeep"},/area/crew_quarters/fitness) @@ -1803,14 +1803,14 @@ "aII" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/door/window/southleft{name = "Gateway Chamber"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/gateway) "aIJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "dark"},/area/gateway) "aIK" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/gateway) -"aIL" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "External EVA Storage"; req_access_txt = "18"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) +"aIL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "External EVA Storage"; req_access_txt = "18"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aIM" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "aIN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aIO" = (/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) -"aIP" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "Xeno Hardsuits"; req_access_txt = "18"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) +"aIP" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Xeno Hardsuits"; req_access_txt = "18"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aIQ" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore) -"aIR" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "neutral"},/area/crew_quarters/fitness) -"aIS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) +"aIR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) +"aIS" = (/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "neutral"},/area/crew_quarters/fitness) "aIT" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aIU" = (/obj/machinery/door/airlock{name = "Unisex Showers"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aIV" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) @@ -1886,11 +1886,11 @@ "aKn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aKo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/table/reinforced,/obj/item/weapon/book/manual/evaguide,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) "aKp" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/weapon/tank/nitrogen,/obj/item/clothing/suit/space/eva/vox,/obj/item/clothing/mask/breath/vox,/obj/item/clothing/head/helmet/space/eva/vox,/turf/simulated/floor{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/ai_monitored/storage/eva) -"aKq" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) -"aKr" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore) +"aKq" = (/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) +"aKr" = (/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/fore) "aKs" = (/obj/machinery/camera{c_tag = "Dormitories South"; c_tag_order = 999; dir = 4; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "neutral"},/area/crew_quarters/fitness) "aKt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) -"aKu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{name = "Unisex Restrooms"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) +"aKu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Unisex Restrooms"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aKv" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aKw" = (/obj/machinery/power/apc{dir = 4; name = "Dormitory Bathrooms APC"; pixel_x = 26; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aKx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/turf/simulated/floor/plating,/area/security/prison/cell_block/C) @@ -2012,9 +2012,9 @@ "aMJ" = (/obj/structure/window/full/shuttle,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/arrival/station) "aMK" = (/obj/effect/landmark{name = "Observer-Start"},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "aML" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/hallway/secondary/entry) -"aMM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/security{name = "Security Checkpoint"; req_access = null; req_access_txt = "1"},/turf/simulated/floor,/area/security/checkpoint2) -"aMN" = (/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/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/security/checkpoint2) -"aMO" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/window/brigdoor{dir = 1; name = "Security Checkpoint"; req_access_txt = "63"},/turf/simulated/floor{icon_state = "delivery"},/area/security/checkpoint2) +"aMM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/security{name = "Security Checkpoint"; req_access = null; req_access_txt = "1"},/turf/simulated/floor,/area/security/checkpoint2) +"aMN" = (/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/machinery/door/window/brigdoor{dir = 1; name = "Security Checkpoint"; req_access_txt = "63"},/turf/simulated/floor{icon_state = "delivery"},/area/security/checkpoint2) +"aMO" = (/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/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/security/checkpoint2) "aMP" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "aMQ" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "aMR" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2) @@ -2032,15 +2032,15 @@ "aNd" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/gateway) "aNe" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/gateway) "aNf" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/closet/l3closet/scientist,/obj/effect/decal/warning_stripes/northwest,/turf/simulated/floor,/area/gateway) -"aNg" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "Entertainer Suits"; req_access_txt = "0"; req_one_access_txt = "18;46"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) +"aNg" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Entertainer Suits"; req_access_txt = "0"; req_one_access_txt = "18;46"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aNh" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) -"aNi" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/north) -"aNj" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/north) -"aNk" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/hallway/primary/central/north) +"aNi" = (/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/north) +"aNj" = (/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/north) +"aNk" = (/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/hallway/primary/central/north) "aNl" = (/turf/simulated/wall/r_wall,/area/security/prison/cell_block/A) "aNm" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/maintenance/fsmaint) -"aNn" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Dormitories"; req_access_txt = "0"},/turf/simulated/floor{dir = 8; icon_state = "neutral"},/area/crew_quarters/fitness) -"aNo" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Dormitories"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) +"aNn" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Dormitories"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) +"aNo" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Dormitories"; req_access_txt = "0"},/turf/simulated/floor{dir = 8; icon_state = "neutral"},/area/crew_quarters/fitness) "aNp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aNq" = (/obj/machinery/door/airlock{name = "Unit 1"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aNr" = (/obj/machinery/door/airlock{name = "Unit 2"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) @@ -2088,7 +2088,7 @@ "aOh" = (/obj/effect/decal/warning_stripes/east,/turf/simulated/floor,/area/escapepodbay) "aOi" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{icon_state = "swall_f10"; dir = 2},/area/shuttle/arrival/station) "aOj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/secondary/entry) -"aOk" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/secondary/entry) +"aOk" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/secondary/entry) "aOl" = (/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/hallway/secondary/entry) "aOm" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "bot"},/area/hallway/secondary/entry) "aOn" = (/turf/simulated/floor{icon_state = "bot"},/area/hallway/secondary/entry) @@ -2111,7 +2111,7 @@ "aOE" = (/turf/simulated/floor{icon_state = "delivery"},/area/storage/primary) "aOF" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Tool Storage"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "bot"},/area/storage/primary) "aOG" = (/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/turf/simulated/floor,/area/storage/primary) -"aOH" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/hallway/primary/port) +"aOH" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/obj/structure/cable{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/hallway/primary/port) "aOI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/hallway/primary/port) "aOJ" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/turf/simulated/floor,/area/gateway) "aOK" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/door_control{id = "stationawaygate"; name = "Gateway Shutters Access Control"; pixel_x = 0; pixel_y = -24; req_access_txt = "62"},/turf/simulated/floor,/area/gateway) @@ -2137,10 +2137,10 @@ "aPe" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/wall/r_wall,/area/maintenance/fsmaint) "aPf" = (/turf/simulated/floor{dir = 8; icon_state = "neutral"},/area/hallway/primary/central/ne) "aPg" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/primary/central/ne) -"aPh" = (/obj/machinery/vending/soda,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/toilet) +"aPh" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aPi" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) "aPj" = (/turf/simulated/wall,/area/crew_quarters/bar) -"aPk" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{name = "Bar Office"; req_access_txt = "25"},/turf/simulated/floor,/area/crew_quarters/bar) +"aPk" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Bar Office"; req_access_txt = "25"},/turf/simulated/floor,/area/crew_quarters/bar) "aPl" = (/turf/simulated/wall,/area/crew_quarters/mrchangs) "aPm" = (/obj/machinery/door/airlock/maintenance{name = "Bar Maintenance"; req_access_txt = "12"},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aPn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/sink/kitchen{pixel_y = 28},/turf/simulated/floor{icon_state = "showroomfloor"},/area/crew_quarters/kitchen) @@ -2176,33 +2176,33 @@ "aPR" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_l"; dir = 8},/turf/space,/area/shuttle/arrival/station) "aPS" = (/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) "aPT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/secondary/entry) -"aPU" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 2},/area/hallway/secondary/entry) +"aPU" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 2},/area/hallway/secondary/entry) "aPV" = (/turf/simulated/floor{icon_state = "neutral"},/area/hallway/secondary/entry) "aPW" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1},/turf/simulated/floor{icon_state = "neutral"},/area/hallway/secondary/entry) "aPX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 8; icon_state = "neutralcorner"},/area/hallway/secondary/entry) "aPY" = (/turf/simulated/wall,/area/hallway/primary/port) "aPZ" = (/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) -"aQa" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Primary Tool Storage"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/storage/primary) +"aQa" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Primary Tool Storage"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/storage/primary) "aQb" = (/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/primary) -"aQc" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Primary Tool Storage"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/storage/primary) +"aQc" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Primary Tool Storage"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/storage/primary) "aQd" = (/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/storage/primary) "aQe" = (/turf/simulated/wall/r_wall,/area/hallway/primary/port) -"aQf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/hallway/primary/port) -"aQg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/hallway/primary/port) -"aQh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/turf/simulated/floor/plating,/area/hallway/primary/port) -"aQi" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/hallway/primary/port) -"aQj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/turf/simulated/floor/plating,/area/hallway/primary/port) -"aQk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/hallway/primary/port) +"aQf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/hallway/primary/port) +"aQg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/hallway/primary/port) +"aQh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/turf/simulated/floor/plating,/area/hallway/primary/port) +"aQi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/turf/simulated/floor/plating,/area/hallway/primary/port) +"aQj" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/hallway/primary/port) +"aQk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/hallway/primary/port) "aQl" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/fpmaint) -"aQm" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/command{name = "Gateway Access"; req_access_txt = "62"},/turf/simulated/floor,/area/gateway) -"aQn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/poddoor/shutters{dir = 2; id = "stationawaygate"; name = "Gateway Access Shutters"},/turf/simulated/floor,/area/gateway) -"aQo" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/poddoor/shutters{dir = 2; id = "stationawaygate"; name = "Gateway Access Shutters"},/turf/simulated/floor,/area/gateway) +"aQm" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/command{name = "Gateway Access"; req_access_txt = "62"},/turf/simulated/floor,/area/gateway) +"aQn" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/poddoor/shutters{dir = 2; id = "stationawaygate"; name = "Gateway Access Shutters"},/turf/simulated/floor,/area/gateway) +"aQo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/poddoor/shutters{dir = 2; id = "stationawaygate"; name = "Gateway Access Shutters"},/turf/simulated/floor,/area/gateway) "aQp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/civilian/barber) "aQq" = (/turf/simulated/wall/r_wall,/area/hallway/primary/central/nw) "aQr" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/fpmaint) "aQs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "aQt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable,/obj/structure/sign/securearea,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) -"aQu" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "E.V.A."; req_access_txt = "0"; req_one_access_txt = "18"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) +"aQu" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "E.V.A."; req_access_txt = "0"; req_one_access_txt = "18"},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aQv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "aQw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/cable,/obj/structure/sign/securearea,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) "aQx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable,/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) @@ -2249,7 +2249,7 @@ "aRm" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/wood,/area/library) "aRn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera{c_tag = "Chapel Crematorium"; dir = 4; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "aRo" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) -"aRp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{name = "Crematorium"; req_access_txt = "27"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) +"aRp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Crematorium"; req_access_txt = "27"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "aRq" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "aRr" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "aRs" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/chapel/main) @@ -2268,9 +2268,9 @@ "aRF" = (/obj/structure/table/woodentable,/obj/machinery/light/small/lamp/green{pixel_x = 1; pixel_y = 5},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry) "aRG" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "dark"},/area/hallway/secondary/entry) "aRH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/hallway/secondary/entry) -"aRI" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/light{dir = 1},/obj/structure/sign/directions/evac{dir = 4; icon_state = "direction_evac"; pixel_y = 24; tag = "icon-direction_evac (EAST)"},/obj/structure/sign/directions/medical{dir = 4; icon_state = "direction_med"; pixel_y = 32; tag = "icon-direction_med (EAST)"},/turf/simulated/floor,/area/hallway/secondary/entry) +"aRI" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/light{dir = 1},/obj/structure/sign/directions/evac{dir = 4; icon_state = "direction_evac"; pixel_y = 24; tag = "icon-direction_evac (EAST)"},/obj/structure/sign/directions/medical{dir = 4; icon_state = "direction_med"; pixel_y = 32; tag = "icon-direction_med (EAST)"},/turf/simulated/floor,/area/hallway/secondary/entry) "aRJ" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/primary/port) -"aRK" = (/obj/machinery/newscaster{pixel_y = 32},/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/port) +"aRK" = (/obj/machinery/newscaster{pixel_y = 32},/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/port) "aRL" = (/turf/simulated/floor,/area/hallway/primary/port) "aRM" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 2; icon_state = "0-2"},/turf/simulated/floor,/area/hallway/primary/port) "aRN" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/hallway/primary/port) @@ -2278,7 +2278,7 @@ "aRP" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/turf/simulated/floor,/area/hallway/primary/port) "aRQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/port) "aRR" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/port) -"aRS" = (/obj/machinery/light{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/hallway/primary/port) +"aRS" = (/obj/machinery/light{dir = 1},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/turf/simulated/floor{icon_state = "warningcorner"; dir = 8},/area/hallway/primary/port) "aRT" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/port) "aRU" = (/obj/machinery/camera{c_tag = "Port Hallway 2"; dir = 2},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/port) "aRV" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/primary/port) @@ -2287,9 +2287,9 @@ "aRY" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/port) "aRZ" = (/obj/machinery/light{dir = 1},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/hallway/primary/port) "aSa" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/primary/port) -"aSb" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/hallway/primary/port) +"aSb" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/hallway/primary/port) "aSc" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/primary/central/nw) -"aSd" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/central/nw) +"aSd" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/central/nw) "aSe" = (/turf/simulated/floor,/area/hallway/primary/central/nw) "aSf" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = 30},/turf/simulated/floor,/area/hallway/primary/central/nw) "aSg" = (/obj/machinery/camera{c_tag = "Central Hallway North-West"; dir = 2; network = list("SS13")},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor,/area/hallway/primary/central/nw) @@ -2297,7 +2297,7 @@ "aSi" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Central Hall NW APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor,/area/hallway/primary/central/nw) "aSj" = (/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/primary/central/nw) "aSk" = (/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central/nw) -"aSl" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/hallway/primary/central/nw) +"aSl" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/hallway/primary/central/nw) "aSm" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "L1"},/area/hallway/primary/central/north) "aSn" = (/turf/simulated/floor{icon_state = "L3"},/area/hallway/primary/central/north) "aSo" = (/turf/simulated/floor{icon_state = "L5"},/area/hallway/primary/central/north) @@ -2307,18 +2307,18 @@ "aSs" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{desc = ""; icon_state = "L13"; name = "floor"},/area/hallway/primary/central/north) "aSt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "L15"},/area/hallway/primary/central/north) "aSu" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/hallway/primary/central/north) -"aSv" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/light{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/ne) +"aSv" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/light{dir = 1},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/ne) "aSw" = (/turf/simulated/floor{icon_state = "neutralcorner"; dir = 4},/area/hallway/primary/central/ne) "aSx" = (/turf/simulated/floor{icon_state = "neutralcorner"; dir = 1},/area/hallway/primary/central/ne) -"aSy" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/wall,/area/crew_quarters/toilet) +"aSy" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "dark"},/area/hallway/secondary/entry) "aSz" = (/obj/machinery/camera{c_tag = "Dormitories Toilets"; dir = 1; network = list("SS13")},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/toilet) -"aSA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/vending/soda,/turf/simulated/floor,/area/hallway/secondary/exit) +"aSA" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/flora/kirbyplants,/turf/simulated/floor/wood,/area/crew_quarters/captain) "aSB" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/hallway/primary/central/ne) "aSC" = (/obj/machinery/power/apc{dir = 1; name = "Central Hall NE APC"; pixel_y = 26},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor,/area/hallway/primary/central/ne) "aSD" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor,/area/hallway/primary/central/ne) "aSE" = (/turf/simulated/floor,/area/hallway/primary/central/ne) "aSF" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) -"aSG" = (/obj/machinery/vending/soda,/turf/simulated/floor{icon_state = "dark"},/area/hallway/secondary/entry) +"aSG" = (/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) "aSH" = (/obj/structure/disposalpipe/segment{dir = 4},/mob/living/carbon/monkey{tag = "icon-punpun1"; name = "Pun Pun"; icon_state = "punpun1"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aSI" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aSJ" = (/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) @@ -2357,21 +2357,21 @@ "aTq" = (/obj/machinery/camera{c_tag = "Chapel North"; dir = 2; network = list("SS13")},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "aTr" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "aTs" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) -"aTt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Escape Pod Bay"},/turf/simulated/floor,/area/escapepodbay) -"aTu" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"aTt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Escape Pod Bay"},/turf/simulated/floor,/area/escapepodbay) +"aTu" = (/obj/machinery/door/firedoor{dir = 2},/obj/machinery/door/airlock/external{name = "Arrival Airlock"},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "aTv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "aTw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "aTx" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/item/device/radio/intercom{dir = 0; name = "Station Intercom (General)"; pixel_x = -27},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry) "aTy" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/secondary/entry) -"aTz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"aTz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "aTA" = (/obj/structure/table/woodentable,/obj/item/toy/cards/deck,/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry) "aTB" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/snacks/chips,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/turf/simulated/floor/carpet,/area/hallway/secondary/entry) "aTC" = (/turf/simulated/floor/carpet,/area/hallway/secondary/entry) "aTD" = (/obj/structure/stool/bed/chair/comfy/beige{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry) "aTE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/table/reinforced,/obj/item/stack/packageWrap,/obj/item/weapon/pen/blue{pixel_x = 0; pixel_y = 4},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/structure/disposalpipe/segment{dir = 4},/obj/item/weapon/book/manual/barman_recipes,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aTF" = (/turf/simulated/floor{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."; dir = 4; icon_state = "plaque"; name = "Comemmorative Plaque"; nitrogen = 30; oxygen = 70; temperature = 80},/area/hallway/secondary/entry) -"aTG" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/hallway/secondary/entry) -"aTH" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=CHW"; location = "Lockers"},/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/port) +"aTG" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/hallway/secondary/entry) +"aTH" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=CHW"; location = "Lockers"},/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/port) "aTI" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/hallway/primary/port) "aTJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/hallway/primary/port) "aTK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/port) @@ -2380,7 +2380,7 @@ "aTN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/port) "aTO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/hallway/primary/port) "aTP" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/port) -"aTQ" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/port) +"aTQ" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/hallway/primary/port) "aTR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/primary/port) "aTS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/primary/port) "aTT" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/floor,/area/hallway/primary/port) @@ -2391,7 +2391,7 @@ "aTY" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/primary/port) "aTZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/nw) "aUa" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/hallway/primary/central/nw) -"aUb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/nw) +"aUb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/nw) "aUc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "L2"},/area/hallway/primary/central/north) "aUd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "L4"},/area/hallway/primary/central/north) "aUe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "L6"},/area/hallway/primary/central/north) @@ -2401,7 +2401,7 @@ "aUi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{desc = ""; icon_state = "L14"},/area/hallway/primary/central/north) "aUj" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor{icon_state = "L16"},/area/hallway/primary/central/north) "aUk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/north) -"aUl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/ne) +"aUl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/ne) "aUm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/ne) "aUn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/hallway/primary/central/ne) "aUo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/ne) @@ -2424,11 +2424,11 @@ "aUF" = (/mob/living/simple_animal/cow{name = "Betsy"},/turf/simulated/floor/grass,/area/hydroponics) "aUG" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/grass,/area/hydroponics) "aUH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/security/prison/cell_block/A) -"aUI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Hydroponics"; req_access_txt = "35"},/turf/simulated/floor,/area/hydroponics) +"aUI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Hydroponics"; req_access_txt = "35"},/turf/simulated/floor,/area/hydroponics) "aUJ" = (/obj/machinery/bookbinder{pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/wood,/area/library) "aUK" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/wood,/area/library) "aUL" = (/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/library) -"aUM" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Chapel Office"; req_access_txt = "22"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) +"aUM" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Chapel Office"; req_access_txt = "22"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) "aUN" = (/obj/machinery/door/morgue{dir = 2; name = "Confession Booth (Chaplain)"; req_access_txt = "22"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main) "aUO" = (/obj/machinery/light/small{dir = 1},/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) "aUP" = (/obj/machinery/camera{c_tag = "Departure Lounge North"; dir = 4; network = list("SS13")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/secondary/exit) @@ -2444,13 +2444,13 @@ "aUZ" = (/obj/item/device/radio/beacon,/obj/machinery/camera{c_tag = "Arrivals South"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry) "aVa" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry) "aVb" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/entry) -"aVc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) -"aVd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"aVc" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"aVd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "aVe" = (/obj/machinery/camera{c_tag = "Arrivals Center"; dir = 4; network = list("SS13")},/obj/structure/extinguisher_cabinet{pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry) "aVf" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/fancy/cigarettes{pixel_y = 2},/obj/item/weapon/lighter{pixel_x = 4; pixel_y = 2},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry) "aVg" = (/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/hallway/secondary/entry) "aVh" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "dark"},/area/hallway/secondary/entry) -"aVi" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/port) +"aVi" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/primary/port) "aVj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/port) "aVk" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/turf/simulated/floor,/area/hallway/primary/port) "aVl" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/hallway/primary/port) @@ -2460,28 +2460,28 @@ "aVp" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/port) "aVq" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/hallway/primary/port) "aVr" = (/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2 (EAST)"; icon_state = "pipe-j2"; dir = 4},/turf/simulated/floor,/area/hallway/primary/port) -"aVs" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/hallway/primary/port) +"aVs" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/hallway/primary/port) "aVt" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/primary/port) "aVu" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/port) "aVv" = (/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/camera{c_tag = "Port Hallway"; dir = 1},/turf/simulated/floor,/area/hallway/primary/port) "aVw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/primary/port) "aVx" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor,/area/hallway/primary/port) "aVy" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/hallway/primary/port) -"aVz" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/port) +"aVz" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/port) "aVA" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/nw) -"aVB" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/nw) +"aVB" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/nw) "aVC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/nw) "aVD" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=QM"; location = "CHW"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/nw) "aVE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/nw) "aVF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/nw) "aVG" = (/obj/machinery/light,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = -32},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/nw) -"aVH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/nw) +"aVH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/nw) "aVI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/north) "aVJ" = (/obj/machinery/light,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/north) "aVK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/north) "aVL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/north) "aVM" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = -32},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/north) -"aVN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/ne) +"aVN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/ne) "aVO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/ne) "aVP" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/ne) "aVQ" = (/obj/machinery/slot_machine,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) @@ -2531,14 +2531,14 @@ "aWI" = (/obj/structure/stool/bed/chair/comfy/beige{tag = "icon-comfychair (NORTH)"; icon_state = "comfychair_beige"; dir = 1},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry) "aWJ" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "dark"},/area/hallway/secondary/entry) "aWK" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/port) -"aWL" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/turf/simulated/floor,/area/crew_quarters/locker) -"aWM" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/crew_quarters/locker) +"aWL" = (/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/turf/simulated/floor,/area/crew_quarters/locker) +"aWM" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/crew_quarters/locker) "aWN" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/port) "aWO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock{name = "Port Emergency Storage"; req_access_txt = "0"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/storage/emergency2) "aWP" = (/obj/structure/table,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/hallway/primary/port) "aWQ" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/hallway/primary/port) "aWR" = (/obj/structure/table,/turf/simulated/floor,/area/hallway/primary/port) -"aWS" = (/obj/machinery/vending/cola,/turf/simulated/floor,/area/crew_quarters/locker) +"aWS" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/wood,/area/bridge/meeting_room) "aWT" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/closet/emcloset,/turf/simulated/floor,/area/hallway/primary/port) "aWU" = (/obj/structure/closet/emcloset,/turf/simulated/floor,/area/hallway/primary/port) "aWV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atm{pixel_x = 24},/turf/simulated/floor,/area/hallway/primary/port) @@ -2565,11 +2565,11 @@ "aXq" = (/turf/simulated/floor/wood,/area/crew_quarters/bar) "aXr" = (/obj/structure/noticeboard{pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/bar) "aXs" = (/obj/machinery/camera{c_tag = "Bar East"; network = list("SS13")},/obj/structure/flora/kirbyplants,/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/wood,/area/crew_quarters/bar) -"aXt" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "kitchenbar"; name = "Kitchen Shutters"; opacity = 0},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/kitchen) +"aXt" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "kitchenbar"; name = "Kitchen Shutters"; opacity = 0},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/kitchen) "aXu" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 25},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "aXv" = (/obj/structure/sink/kitchen{pixel_y = 28},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "aXw" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) -"aXx" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Hydroponics Pasture"; req_access_txt = "28"},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) +"aXx" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Hydroponics Pasture"; req_access_txt = "28"},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "aXy" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/hallway/primary/fore) "aXz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/hallway/primary/fore) "aXA" = (/obj/machinery/botany/editor,/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) @@ -2605,7 +2605,7 @@ "aYe" = (/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/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry) "aYf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry) "aYg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/primary/port) -"aYh" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 4},/area/hallway/secondary/entry) +"aYh" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "neutralcorner"; dir = 4},/area/hallway/secondary/entry) "aYi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/secondary/entry) "aYj" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/secondary/entry) "aYk" = (/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/hallway/secondary/entry) @@ -2635,7 +2635,7 @@ "aYI" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/structure/table,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor/plating,/area/storage/emergency2) "aYJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/storage/emergency2) "aYK" = (/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,/turf/simulated/floor/plating,/area/storage/tools) -"aYL" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Auxiliary Tool Storage"; req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/storage/tools) +"aYL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Auxiliary Tool Storage"; req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/storage/tools) "aYM" = (/turf/simulated/wall,/area/storage/tools) "aYN" = (/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/nw) "aYO" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/wall,/area/hallway/primary/fore) @@ -2687,7 +2687,7 @@ "aZI" = (/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/hallway/secondary/entry) "aZJ" = (/turf/simulated/floor{dir = 8; icon_state = "whitecorner"},/area/hallway/secondary/entry) "aZK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/secondary/entry) -"aZL" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/secondary/entry) +"aZL" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/hallway/secondary/entry) "aZM" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor,/area/hallway/secondary/entry) "aZN" = (/obj/machinery/firealarm{dir = 2; pixel_y = -24},/turf/simulated/floor,/area/hallway/secondary/entry) "aZO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/hallway/secondary/entry) @@ -2759,10 +2759,10 @@ "bbc" = (/obj/structure/grille,/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,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "bbd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "bbe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/exit) -"bbf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) -"bbg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) -"bbh" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/turf/simulated/floor,/area/hallway/secondary/entry) -"bbi" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/status_display{pixel_x = 32},/turf/simulated/floor,/area/hallway/secondary/entry) +"bbf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"bbg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"bbh" = (/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/turf/simulated/floor,/area/hallway/secondary/entry) +"bbi" = (/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/status_display{pixel_x = 32},/turf/simulated/floor,/area/hallway/secondary/entry) "bbj" = (/turf/simulated/wall,/area/security/vacantoffice) "bbk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/wall,/area/mimeoffice) "bbl" = (/turf/simulated/floor/plating,/area/maintenance/port) @@ -2841,7 +2841,7 @@ "bcG" = (/turf/simulated/floor/plating,/area/hallway/secondary/exit) "bcH" = (/obj/machinery/door/airlock/external{aiControlDisabled = 1; frequency = 1379; hackProof = 1; icon_state = "door_locked"; id_tag = "escape_dock_north_outer"; locked = 1; name = "Escape Airlock"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "bcI" = (/turf/space,/area/shuttle/transport1/station) -"bcJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"bcJ" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/window/eastleft{name = "Hydroponics Desk"; req_access_txt = "35"},/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "Kitchen Desk"; req_access_txt = "28"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/hydroponics) "bcK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera{c_tag = "Arrivals Auxiliary Docking North"; dir = 8; network = list("SS13")},/turf/simulated/floor,/area/hallway/secondary/entry) "bcL" = (/turf/simulated/floor/wood,/area/security/vacantoffice) "bcM" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor/wood,/area/security/vacantoffice) @@ -2864,9 +2864,9 @@ "bdd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/storage/tools) "bde" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/storage/tools) "bdf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/central/nw) -"bdg" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/hallway/primary/central/nw) -"bdh" = (/obj/machinery/lapvend,/turf/simulated/floor,/area/quartermaster/office) -"bdi" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/sign/securearea{pixel_x = 32; pixel_y = 0},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge) +"bdg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"bdh" = (/obj/machinery/vending/cart,/turf/simulated/floor,/area/quartermaster/office) +"bdi" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/hallway/primary/central/nw) "bdj" = (/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/bridge) "bdk" = (/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/bridge) "bdl" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/bridge) @@ -2878,8 +2878,8 @@ "bdr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor{dir = 1; icon_state = "browncorner"; tag = "icon-browncorner (EAST)"},/area/bridge) "bds" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/bridge) "bdt" = (/turf/simulated/floor{tag = "icon-browncorner (EAST)"; icon_state = "browncorner"; dir = 4},/area/bridge) -"bdu" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge) -"bdv" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/hallway/primary/central/ne) +"bdu" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/sign/securearea{pixel_x = 32; pixel_y = 0},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge) +"bdv" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge) "bdw" = (/obj/machinery/camera{c_tag = "Bridge East Entrance"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central/ne) "bdx" = (/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central/ne) "bdy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/wood,/area/crew_quarters/bar) @@ -2915,8 +2915,8 @@ "bec" = (/obj/item/flag/nt,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor,/area/hallway/secondary/exit) "bed" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "bee" = (/obj/structure/grille,/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{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/exit) -"bef" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{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},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) -"beg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"bef" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 32},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/hallway/primary/central/ne) +"beg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "beh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "bei" = (/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/security/vacantoffice) "bej" = (/obj/structure/table/woodentable,/obj/machinery/light/small/lamp,/turf/simulated/floor/wood,/area/security/vacantoffice) @@ -2950,9 +2950,9 @@ "beL" = (/obj/structure/closet/toolcloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/storage/tools) "beM" = (/obj/structure/closet/toolcloset,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor,/area/storage/tools) "beN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/storage/tools) -"beO" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/hallway/primary/central/nw) +"beO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{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},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "beP" = (/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/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,/area/bridge) -"beQ" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge) +"beQ" = (/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/hallway/primary/central/nw) "beR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/turf/simulated/floor,/area/bridge) "beS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/bridge) "beT" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/bridge) @@ -2970,9 +2970,9 @@ "bff" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/bridge) "bfg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/bridge) "bfh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/bridge) -"bfi" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge) +"bfi" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge) "bfj" = (/obj/machinery/door/airlock/glass_command{name = "Bridge"; req_access_txt = "19"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/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,/area/bridge) -"bfk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/hallway/primary/central/ne) +"bfk" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge) "bfl" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/ne) "bfm" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/ne) "bfn" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/central/ne) @@ -2996,10 +2996,10 @@ "bfF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/carpet,/area/library) "bfG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/carpet,/area/library) "bfH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/carpet,/area/library) -"bfI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Chapel"; req_access_txt = "0"},/turf/simulated/floor/carpet,/area/chapel/main) +"bfI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/hallway/primary/central/ne) "bfJ" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/carpet,/area/chapel/main) "bfK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/carpet,/area/chapel/main) -"bfL" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Chapel"; req_access_txt = "0"},/turf/simulated/floor/carpet,/area/chapel/main) +"bfL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Chapel"; req_access_txt = "0"},/turf/simulated/floor/carpet,/area/chapel/main) "bfM" = (/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit) "bfN" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor,/area/hallway/secondary/exit) "bfO" = (/obj/structure/bush,/turf/simulated/floor/grass,/area/hallway/secondary/exit) @@ -3035,29 +3035,29 @@ "bgs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central/nw) "bgt" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/hallway/primary/central/nw) "bgu" = (/obj/machinery/camera{c_tag = "Bridge West Entrance"; dir = 1; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/hallway/primary/central/nw) -"bgv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/hallway/primary/central/nw) +"bgv" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Chapel"; req_access_txt = "0"},/turf/simulated/floor/carpet,/area/chapel/main) "bgw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/crew_quarters/fitness) -"bgx" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge) +"bgx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/hallway/primary/central/nw) "bgy" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "bgz" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "bgA" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/bridge) -"bgB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/highsecurity{name = "AI Upload Access"; req_access_txt = "16"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) +"bgB" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge) "bgC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/crew_quarters/mrchangs) "bgD" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/wall,/area/crew_quarters/mrchangs) "bgE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/crew_quarters/mrchangs) "bgF" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/filingcabinet/filingcabinet,/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/bridge) "bgG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "bgH" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) -"bgI" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge) +"bgI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/highsecurity{name = "AI Upload Access"; req_access_txt = "16"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bgJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/civilian/barber) -"bgK" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/hallway/primary/central/ne) +"bgK" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "bridge blast"; name = "Bridge Blast Doors"; opacity = 0},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/bridge) "bgL" = (/obj/machinery/power/apc{dir = 2; name = "Central Hall APC"; pixel_y = -24},/obj/structure/cable,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/hallway/primary/central/ne) "bgM" = (/obj/machinery/light,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/hallway/primary/central/ne) "bgN" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/ne) "bgO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bgP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/crew_quarters/bar) "bgQ" = (/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/bar) -"bgR" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Kitchen"; req_access_txt = "28"},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) +"bgR" = (/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/hallway/primary/central/ne) "bgS" = (/obj/machinery/door_control{id = "kitchenbar"; name = "Kitchen Bar Shutters Control"; pixel_x = -6; pixel_y = -24; req_access_txt = "28"},/obj/machinery/door_control{id = "kitchenhall"; name = "Kitchen Hallway Shutters Control"; pixel_x = 6; pixel_y = -24; req_access_txt = "28"},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "bgT" = (/obj/machinery/power/apc{dir = 2; name = "Kitchen APC"; pixel_y = -24},/obj/structure/cable,/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "bgU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) @@ -3066,7 +3066,7 @@ "bgX" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/camera{c_tag = "Starboard Primary Hallway 5"; dir = 4; network = list("SS13")},/turf/simulated/floor,/area/hallway/primary/starboard/east) "bgY" = (/turf/simulated/floor,/area/hallway/primary/starboard/east) "bgZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor,/area/hallway/primary/starboard/east) -"bha" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Library"; req_access_txt = "0"},/turf/simulated/floor/carpet,/area/library) +"bha" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Kitchen"; req_access_txt = "28"},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "bhb" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/carpet,/area/library) "bhc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor/carpet,/area/library) "bhd" = (/obj/machinery/camera{c_tag = "Departure Lounge East"; dir = 8; network = list("SS13")},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/embedded_controller/radio/docking_port_multi{child_names_txt = "Airlock One;Airlock Two"; child_tags_txt = "escape_dock_north_airlock;escape_dock_south_airlock"; id_tag = "escape_dock"; pixel_x = 30},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor,/area/hallway/secondary/exit) @@ -3074,8 +3074,8 @@ "bhf" = (/turf/simulated/floor{desc = "\"This is a plaque in honour of those who died in the great space lube airlock incident.\" Scratched in beneath that is a crude image of a clown and a spaceman. The spaceman is slipping. The clown is laughing."; dir = 4; icon_state = "plaque"; name = "Memorial Plaque"; nitrogen = 30; oxygen = 70; temperature = 80},/area/hallway/secondary/exit) "bhg" = (/obj/structure/bush,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/grass,/area/hallway/secondary/exit) "bhh" = (/turf/space,/area/xenos_station/east) -"bhi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) -"bhj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"bhi" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Library"; req_access_txt = "0"},/turf/simulated/floor/carpet,/area/library) +"bhj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "bhk" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry) "bhl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor/wood,/area/security/vacantoffice) "bhm" = (/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor/wood,/area/security/vacantoffice) @@ -3087,7 +3087,7 @@ "bhs" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bht" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3"},/area/shuttle/syndicate_elite/mothership) "bhu" = (/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/crew_quarters/locker) -"bhv" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/closet/wardrobe/white,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/crew_quarters/locker) +"bhv" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/dresser,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/crew_quarters/locker) "bhw" = (/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) "bhx" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor{icon_state = "delivery"},/area/crew_quarters/locker) "bhy" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/crew_quarters/locker) @@ -3099,17 +3099,17 @@ "bhE" = (/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/turf/simulated/floor/plating,/area/quartermaster/office) "bhF" = (/obj/machinery/conveyor{dir = 4; id = "packageSort2"},/obj/structure/plasticflaps{opacity = 0},/turf/simulated/floor/plating,/area/quartermaster/office) "bhG" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal/deliveryChute{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office) -"bhH" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/nw) -"bhI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/nw) -"bhJ" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central/nw) -"bhK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/command{name = "Conference Room"; req_access = null; req_access_txt = "19"},/turf/simulated/floor/wood,/area/bridge/meeting_room) +"bhH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"bhI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/nw) +"bhJ" = (/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/nw) +"bhK" = (/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central/nw) "bhL" = (/obj/machinery/porta_turret,/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bhM" = (/obj/machinery/ai_status_display{pixel_y = 32},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bhN" = (/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bhO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload) "bhP" = (/obj/machinery/camera/motion{c_tag = "AI Upload Chamber"; network = list("SS13")},/obj/machinery/light_switch{pixel_y = 27},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) "bhQ" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/bluegrid,/area/turret_protected/ai_upload) -"bhR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/command{id_tag = "captainofficedoor"; name = "Captain's Office"; req_access = null; req_access_txt = "20"},/turf/simulated/floor/wood,/area/crew_quarters/captain) +"bhR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Conference Room"; req_access = null; req_access_txt = "19"},/turf/simulated/floor/wood,/area/bridge/meeting_room) "bhS" = (/obj/machinery/computer/arcade,/turf/simulated/floor/wood,/area/crew_quarters/bar) "bhT" = (/obj/machinery/media/jukebox/bar,/turf/simulated/floor/wood,/area/crew_quarters/bar) "bhU" = (/obj/machinery/light,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/wood,/area/crew_quarters/bar) @@ -3120,8 +3120,8 @@ "bhZ" = (/obj/machinery/atm{pixel_x = 32; pixel_y = 0},/obj/structure/flora/kirbyplants,/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/bar) "bia" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/machinery/vending/dinnerware,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/kitchen) "bib" = (/obj/machinery/icemachine,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) -"bic" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/fancy/donut_box,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "kitchenhall"; name = "Kitchen Shutters"; opacity = 0},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) -"bid" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "kitchenhall"; name = "Kitchen Shutters"; opacity = 0},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) +"bic" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{id_tag = "captainofficedoor"; name = "Captain's Office"; req_access = null; req_access_txt = "20"},/turf/simulated/floor/wood,/area/crew_quarters/captain) +"bid" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/fancy/donut_box,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "kitchenhall"; name = "Kitchen Shutters"; opacity = 0},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) "bie" = (/obj/structure/closet/crate/hydroponics,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/screwdriver,/obj/item/weapon/shovel/spade,/obj/item/weapon/wrench,/obj/item/weapon/wrench,/obj/item/weapon/reagent_containers/glass/bucket,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/storage/box/botanydisk,/obj/item/weapon/storage/box/beakers,/turf/simulated/floor{icon_state = "hydrofloor"},/area/hydroponics) "bif" = (/obj/structure/stool,/obj/effect/landmark/start{name = "Botanist"},/turf/simulated/floor{dir = 1; icon_state = "green"},/area/hydroponics) "big" = (/turf/simulated/floor{dir = 1; icon_state = "green"},/area/hydroponics) @@ -3191,18 +3191,18 @@ "bjs" = (/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/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/carpet,/area/crew_quarters/captain) "bjt" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Captain's Office APC"; pixel_y = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/wood,/area/crew_quarters/captain) "bju" = (/obj/machinery/light{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/hallway/primary/central/ne) -"bjv" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/ne) -"bjw" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/ne) +"bjv" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "kitchenhall"; name = "Kitchen Shutters"; opacity = 0},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) +"bjw" = (/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/ne) "bjx" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/wall,/area/civilian/barber) -"bjy" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Diner"},/turf/simulated/floor,/area/crew_quarters/bar) +"bjy" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/ne) "bjz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/wall,/area/civilian/barber) "bjA" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard/west) "bjB" = (/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard/west) "bjC" = (/obj/machinery/camera{c_tag = "Starboard Primary Hallway 2"; dir = 2; network = list("SS13")},/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard/west) "bjD" = (/obj/structure/flora/kirbyplants,/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard/west) "bjE" = (/turf/simulated/wall,/area/crew_quarters/fitness) -"bjF" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/window/westright{dir = 1; name = "Hydroponics Desk"; req_access_txt = "35"},/turf/simulated/floor,/area/hydroponics) -"bjG" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Hydroponics"; req_access_txt = "35"},/turf/simulated/floor,/area/hydroponics) +"bjF" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Diner"},/turf/simulated/floor,/area/crew_quarters/bar) +"bjG" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/window/westright{dir = 1; name = "Hydroponics Desk"; req_access_txt = "35"},/turf/simulated/floor,/area/hydroponics) "bjH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/primary/starboard/east) "bjI" = (/turf/simulated/wall/r_wall,/area/crew_quarters/fitness) "bjJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit) @@ -3253,9 +3253,9 @@ "bkC" = (/obj/structure/disposalpipe/segment,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/east) "bkD" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=Dorm"; location = "HOP2"},/turf/simulated/floor,/area/hallway/primary/central/east) "bkE" = (/turf/simulated/floor,/area/hallway/primary/central/east) -"bkF" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/east) +"bkF" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Hydroponics"; req_access_txt = "35"},/turf/simulated/floor,/area/hydroponics) "bkG" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/primary/starboard/west) -"bkH" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/starboard/west) +"bkH" = (/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/east) "bkI" = (/obj/machinery/alarm{pixel_y = 26},/turf/simulated/floor,/area/hallway/primary/starboard/west) "bkJ" = (/turf/simulated/floor,/area/hallway/primary/starboard/west) "bkK" = (/obj/machinery/camera{c_tag = "Starboard Primary Hallway 1"; dir = 2; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/starboard/west) @@ -3281,7 +3281,7 @@ "ble" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor,/area/hallway/primary/starboard/east) "blf" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/machinery/camera{c_tag = "Starboard Primary Hallway 7"; dir = 2; network = list("SS13")},/turf/simulated/floor,/area/hallway/primary/starboard/east) "blg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard/east) -"blh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/hallway/secondary/exit) +"blh" = (/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/starboard/west) "bli" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/hallway/secondary/exit) "blj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/secondary/exit) "blk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor,/area/hallway/secondary/exit) @@ -3292,7 +3292,7 @@ "blp" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1379; id_tag = "escape_dock_south_pump"},/obj/machinery/embedded_controller/radio/airlock/docking_port_multi{id_tag = "escape_dock_south_airlock"; master_tag = "escape_dock"; pixel_y = -30; req_one_access_txt = "13"; tag_airpump = "escape_dock_south_pump"; tag_chamber_sensor = "escape_dock_south_sensor"; tag_exterior_door = "escape_dock_south_outer"; tag_interior_door = "escape_dock_south_inner"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "escape_dock_south_sensor"; pixel_x = -8; pixel_y = -30},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "blq" = (/obj/machinery/door/airlock/external{aiControlDisabled = 1; frequency = 1379; hackProof = 1; icon_state = "door_locked"; id_tag = "escape_dock_south_outer"; locked = 1; name = "Escape Airlock"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/exit) "blr" = (/turf/space,/area/shuttle/specops/station) -"bls" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"bls" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor{dir = 4; icon_state = "whitecorner"},/area/hallway/secondary/exit) "blt" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/turf/simulated/floor{icon_state = "warningcorner"; dir = 1},/area/hallway/secondary/entry) "blu" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor,/area/hallway/secondary/entry) "blv" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) @@ -3336,14 +3336,14 @@ "bmh" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor,/area/hallway/primary/starboard/west) "bmi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard/west) "bmj" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard/west) -"bmk" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/starboard/west) +"bmk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "bml" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/primary/starboard/east) "bmm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/hallway/primary/starboard/east) "bmn" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=HOP2"; location = "Stbd"},/turf/simulated/floor,/area/hallway/primary/starboard/east) -"bmo" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/secondary/exit) +"bmo" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/starboard/west) "bmp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/hallway/secondary/exit) "bmq" = (/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},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor,/area/hallway/secondary/exit) -"bmr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"bmr" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/secondary/exit) "bms" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry) "bmt" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/secondary/entry) "bmu" = (/turf/simulated/wall,/area/maintenance/disposal) @@ -3397,14 +3397,14 @@ "bnq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/starboard/west) "bnr" = (/obj/machinery/camera{c_tag = "Starboard Primary Hallway 3"; dir = 1; network = list("SS13")},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/starboard/west) "bns" = (/obj/structure/disposalpipe/segment,/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,/area/hallway/primary/starboard/west) -"bnt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/starboard/west) +"bnt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "bnu" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/primary/starboard/east) "bnv" = (/obj/machinery/light,/turf/simulated/floor,/area/hallway/primary/starboard/east) "bnw" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/camera{c_tag = "Starboard Primary Hallway 6"; dir = 1; network = list("SS13")},/turf/simulated/floor,/area/hallway/primary/starboard/east) "bnx" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = -29; pixel_y = -29},/turf/simulated/floor,/area/hallway/primary/starboard/east) "bny" = (/obj/machinery/light,/turf/simulated/floor{dir = 2; icon_state = "purple"},/area/hallway/primary/starboard/east) "bnz" = (/turf/simulated/floor{dir = 2; icon_state = "purple"},/area/hallway/primary/starboard/east) -"bnA" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/secondary/exit) +"bnA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/starboard/west) "bnB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/secondary/exit) "bnC" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/secondary/exit) "bnD" = (/obj/machinery/newscaster{pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "escape"},/area/hallway/secondary/exit) @@ -3444,7 +3444,7 @@ "bol" = (/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) "bom" = (/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/west) "bon" = (/obj/machinery/power/apc{dir = 4; name = "Central Hall West APC"; pixel_x = 27; pixel_y = 2},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central/west) -"boo" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/weapon/reagent_containers/food/drinks/stinkeye,/obj/structure/flora/kirbyplants,/turf/simulated/floor/wood,/area/crew_quarters/captain) +"boo" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor{dir = 2; icon_state = "redcorner"},/area/hallway/secondary/exit) "bop" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/requests_console{announcementConsole = 1; department = "Bridge"; departmentType = 5; name = "Bridge RC"; pixel_y = -30},/turf/simulated/floor/wood,/area/bridge/meeting_room) "boq" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/wood,/area/bridge/meeting_room) "bor" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/wall,/area/crew_quarters/sleep) @@ -3455,11 +3455,11 @@ "bow" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/wood,/area/crew_quarters/captain) "box" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/crew_quarters/captain) "boy" = (/obj/structure/table/woodentable,/obj/item/weapon/pinpointer,/obj/item/weapon/disk/nuclear,/obj/item/weapon/storage/secure/safe{pixel_x = 35; pixel_y = 5},/turf/simulated/floor/wood,/area/crew_quarters/captain) -"boz" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/sw) -"boA" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/sw) +"boz" = (/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/sw) +"boA" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/central/sw) "boB" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eva_airlock"; name = "exterior access button"; pixel_x = 0; pixel_y = 25; req_access_txt = "13"},/turf/simulated/floor/plating/airless,/area) "boC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/hallway/primary/fore) -"boD" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/medical/reception) +"boD" = (/obj/machinery/door/firedoor,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/medical/reception) "boE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/medical{name = "Morgue"; req_access_txt = "0"; req_one_access_txt = "6,9"},/turf/simulated/floor,/area/medical/morgue) "boF" = (/obj/machinery/door/airlock{name = "Starboard Emergency Storage"; req_access_txt = "0"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/asmaint) "boG" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/flora/kirbyplants,/turf/simulated/floor,/area/hallway/primary/starboard/east) @@ -3493,13 +3493,13 @@ "bpi" = (/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office) "bpj" = (/obj/structure/stool/bed/chair{dir = 4},/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor,/area/quartermaster/office) "bpk" = (/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "arrival"; dir = 4},/area/quartermaster/office) -"bpl" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "Mailing Room"; req_access_txt = "50"},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/office) +"bpl" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/window{base_state = "right"; dir = 8; icon_state = "right"; name = "Mailing Room"; req_access_txt = "50"},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/office) "bpm" = (/obj/machinery/camera{c_tag = "Central Hallway West"; dir = 8; network = list("SS13")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central/west) "bpn" = (/obj/machinery/door/window/eastright{dir = 1; name = "Bridge Delivery"; req_access_txt = "19"},/turf/simulated/floor{icon_state = "delivery"},/area/bridge/meeting_room) "bpo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/bridge/meeting_room) "bpp" = (/obj/structure/reagent_dispensers/water_cooler,/turf/simulated/floor/wood,/area/bridge/meeting_room) "bpq" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = -32},/obj/machinery/slot_machine,/turf/simulated/floor/wood,/area/bridge/meeting_room) -"bpr" = (/obj/machinery/vending/soda,/turf/simulated/floor/wood,/area/crew_quarters/bar) +"bpr" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Mech Bay"; req_access_txt = "29"; req_one_access_txt = "0"},/turf/simulated/floor,/area/assembly/chargebay) "bps" = (/obj/machinery/light,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/wood,/area/bridge/meeting_room) "bpt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/wood,/area/bridge/meeting_room) "bpu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/space,/area) @@ -3541,16 +3541,16 @@ "bqe" = (/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/medical/morgue) "bqf" = (/obj/structure/morgue{tag = "icon-morgue1 (WEST)"; icon_state = "morgue1"; dir = 8},/turf/simulated/floor,/area/medical/morgue) "bqg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor/plating,/area/maintenance/asmaint) -"bqh" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Mech Bay"; req_access_txt = "29"; req_one_access_txt = "0"},/turf/simulated/floor,/area/assembly/chargebay) -"bqi" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{dir = 2; id = "mechbay"; name = "Mech Bay"},/turf/simulated/floor{icon_state = "delivery"},/area/assembly/chargebay) +"bqh" = (/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{dir = 2; id = "mechbay"; name = "Mech Bay"},/turf/simulated/floor{icon_state = "delivery"},/area/assembly/chargebay) +"bqi" = (/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/door/firedoor{dir = 1; name = "hazard door north"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "robotics"; name = "Robotics Lab Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/assembly/robotics) "bqj" = (/obj/machinery/computer/rdconsole/robotics,/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) "bqk" = (/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 Requests Console"; pixel_y = 30},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) "bql" = (/obj/machinery/r_n_d/circuit_imprinter,/obj/item/weapon/reagent_containers/glass/beaker/sulphuric,/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) "bqm" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating/airless,/area) -"bqn" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/window/eastright{base_state = "left"; dir = 2; icon_state = "left"; name = "Robotics Desk"; req_access_txt = "29"},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/weapon/folder/white,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "robotics"; name = "Robotics Lab Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/assembly/robotics) +"bqn" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/obj/machinery/door/window/eastright{base_state = "left"; dir = 2; icon_state = "left"; name = "Robotics Desk"; req_access_txt = "29"},/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/weapon/folder/white,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "robotics"; name = "Robotics Lab Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/assembly/robotics) "bqo" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 10; icon_state = "purple"},/area/hallway/primary/starboard/east) "bqp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/mimeoffice) -"bqq" = (/obj/structure/table/reinforced,/obj/machinery/door/window/eastright{base_state = "left"; dir = 2; icon_state = "left"; name = "Research and Development Desk"; req_access_txt = "47"},/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "rdlab"; name = "Research and Development Lab Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/lab) +"bqq" = (/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/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "rdlab"; name = "Research and Development Lab Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/lab) "bqr" = (/obj/machinery/autolathe,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bqs" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 0},/obj/item/weapon/storage/belt/utility,/obj/item/clothing/gloves/color/latex,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bqt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/obj/structure/closet/hydrant{pixel_x = -33},/turf/simulated/floor/plating,/area/maintenance/asmaint2) @@ -3582,7 +3582,7 @@ "bqT" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/west) "bqU" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central/west) "bqV" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=1"; dir = 1; freq = 1400; location = "Bridge"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor{icon_state = "bot"},/area/bridge/meeting_room) -"bqW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/command{name = "Conference Room"; req_access = null; req_access_txt = "19"},/turf/simulated/floor/wood,/area/bridge/meeting_room) +"bqW" = (/obj/structure/table/reinforced,/obj/machinery/door/window/eastright{base_state = "left"; dir = 2; icon_state = "left"; name = "Research and Development Desk"; req_access_txt = "47"},/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "rdlab"; name = "Research and Development Lab Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/lab) "bqX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/lattice,/turf/space,/area) "bqY" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/space,/area) "bqZ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravitygenerator) @@ -3604,7 +3604,7 @@ "brp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "brq" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "brr" = (/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) -"brs" = (/obj/machinery/door/window/eastright{dir = 8; name = "Chemistry Desk"; req_access_txt = "33"},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/structure/table/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) +"brs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Conference Room"; req_access = null; req_access_txt = "19"},/turf/simulated/floor/wood,/area/bridge/meeting_room) "brt" = (/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/reception) "bru" = (/turf/simulated/floor/airless{icon_state = "white"},/area/medical/reception) "brv" = (/obj/structure/stool,/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/reception) @@ -3640,8 +3640,8 @@ "brZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bsa" = (/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bsb" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"bsc" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) -"bsd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"bsc" = (/obj/machinery/door/window/eastright{dir = 8; name = "Chemistry Desk"; req_access_txt = "33"},/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/structure/table/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) +"bsd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "bse" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/hallway/secondary/entry) "bsf" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor,/area/hallway/secondary/entry) "bsg" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/maintenance/disposal) @@ -3699,7 +3699,7 @@ "btg" = (/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/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera{c_tag = "Research Director's Office"; dir = 1; network = list("Research","SS13")},/obj/item/clothing/glasses/welding/superior,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table/glass,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) "bth" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/airless{icon_state = "white"},/area/medical/reception) "bti" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/reception) -"btj" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/medical{name = "Examination Room"; req_access_txt = "5"; req_one_access_txt = "0"},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/exam_room) +"btj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "btk" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/exam_room) "btl" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/exam_room) "btm" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/stool/bed,/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 25; pixel_y = 0; req_access_txt = "0"},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/exam_room) @@ -3714,7 +3714,7 @@ "btv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/bluegrid,/area/assembly/chargebay) "btw" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/assembly/chargebay) "btx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/assembly/chargebay) -"bty" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access_txt = "29"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) +"bty" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/medical{name = "Examination Room"; req_access_txt = "5"; req_one_access_txt = "0"},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/exam_room) "btz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) "btA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) "btB" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) @@ -3729,7 +3729,7 @@ "btK" = (/obj/structure/table/woodentable,/obj/item/weapon/lipstick/random,/obj/structure/sign/poster{pixel_x = -32},/turf/simulated/floor/plating,/area/maintenance/abandonedbar) "btL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "btM" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"btN" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"btN" = (/obj/machinery/door/firedoor{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access_txt = "29"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) "btO" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "admin_shuttle_dock_pump"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry) "btP" = (/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "admin_shuttle_dock_airlock"; pixel_x = 0; pixel_y = 30; req_access_txt = "0"; req_one_access_txt = "13"; tag_airpump = "admin_shuttle_dock_pump"; tag_chamber_sensor = "admin_shuttle_dock_sensor"; tag_exterior_door = "admin_shuttle_dock_outer"; tag_interior_door = "admin_shuttle_dock_inner"},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/entry) "btQ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_dock_inner"; locked = 1; name = "Docking Port Airlock"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/entry) @@ -3751,14 +3751,14 @@ "bug" = (/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/quartermaster/office) "buh" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/office) "bui" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor,/area/quartermaster/office) -"buj" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass_mining{name = "Delivery Office"; req_access_txt = "50"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/quartermaster/office) +"buj" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "buk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/quartermaster/office) "bul" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 0; pixel_y = -32; req_access_txt = "0"},/turf/simulated/floor,/area/quartermaster/office) "bum" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1},/turf/simulated/floor,/area/quartermaster/office) "bun" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/quartermaster/office) "buo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{dir = 8; icon_state = "loadingarea"},/area/quartermaster/office) "bup" = (/obj/machinery/conveyor{dir = 4; id = "packageExternal"},/obj/structure/plasticflaps{opacity = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/office) -"buq" = (/obj/machinery/conveyor{dir = 4; id = "packageExternal"},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/office) +"buq" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass_mining{name = "Delivery Office"; req_access_txt = "50"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/quartermaster/office) "bur" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/west) "bus" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/primary/central/west) "but" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/west) @@ -3825,34 +3825,34 @@ "bvC" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry) "bvD" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "warning"},/area/hallway/secondary/entry) "bvE" = (/obj/machinery/disposal/deliveryChute{dir = 1; name = "disposal inlet"},/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/disposal) -"bvF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/maintenance/disposal) -"bvG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/maintenance/disposal) +"bvF" = (/obj/machinery/conveyor{dir = 4; id = "packageExternal"},/obj/machinery/door/firedoor{dir = 2},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/office) +"bvG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/maintenance/disposal) "bvH" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/hologram/holopad,/turf/simulated/floor/plating,/area/maintenance/disposal) "bvI" = (/turf/space,/area/supply/station) -"bvJ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) +"bvJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/maintenance/disposal) "bvK" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/machinery/status_display/supply_display{pixel_y = 32},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/quartermaster/storage) "bvL" = (/obj/structure/closet/emcloset,/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = 30},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/storage) "bvM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/quartermaster/storage) "bvN" = (/obj/machinery/light{dir = 1},/obj/machinery/firealarm{pixel_y = 27},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/quartermaster/storage) "bvO" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/quartermaster/storage) "bvP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/quartermaster/storage) -"bvQ" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_mining{name = "Cargo Bay"; req_access_txt = "31"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/quartermaster/storage) +"bvQ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "bvR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office) "bvS" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/quartermaster/office) "bvT" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/quartermaster/office) "bvU" = (/obj/machinery/status_display/supply_display,/turf/simulated/wall,/area/quartermaster/office) -"bvV" = (/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},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/office) -"bvW" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_mining{name = "Delivery Office"; req_access_txt = "50"},/turf/simulated/floor,/area/quartermaster/office) +"bvV" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_mining{name = "Cargo Bay"; req_access_txt = "31"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/quartermaster/storage) +"bvW" = (/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},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/office) "bvX" = (/turf/simulated/wall,/area/hallway/primary/central/sw) -"bvY" = (/obj/machinery/light{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/sw) -"bvZ" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor,/area/hallway/primary/central/sw) -"bwa" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/primary/central/sw) +"bvY" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{name = "Delivery Office"; req_access_txt = "50"},/turf/simulated/floor,/area/quartermaster/office) +"bvZ" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor,/area/hallway/primary/central/sw) +"bwa" = (/obj/machinery/light{dir = 8},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/sw) "bwb" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/emergency_oxygen,/turf/simulated/floor/plating,/area/maintenance/maintcentral) -"bwc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/command{name = "Head of Personnel"; req_access = null; req_access_txt = "57"},/turf/simulated/floor,/area/crew_quarters/heads) +"bwc" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/primary/central/sw) "bwd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/lattice,/turf/space,/area) "bwe" = (/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravitygenerator) "bwf" = (/obj/machinery/light{dir = 4},/obj/machinery/hologram/holopad,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravitygenerator) -"bwg" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/power/apc{cell_type = 5000; dir = 8; name = "Captain's Quarters APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/light_switch{pixel_y = 24},/obj/structure/closet/cabinet,/turf/simulated/floor/carpet,/area/crew_quarters/captain/bedroom) +"bwg" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/power/apc{cell_type = 5000; dir = 8; name = "Captain's Quarters APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/light_switch{pixel_y = 24},/obj/structure/dresser,/turf/simulated/floor/carpet,/area/crew_quarters/captain/bedroom) "bwh" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/carpet,/area/crew_quarters/captain/bedroom) "bwi" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/carpet,/area/crew_quarters/captain/bedroom) "bwj" = (/obj/machinery/door/airlock{name = "Private Restroom"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/captain/bedroom) @@ -3912,21 +3912,21 @@ "bxl" = (/turf/simulated/shuttle/wall{icon_state = "swall_s10"; dir = 2},/area/shuttle/research/station) "bxm" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "admin_shuttle_dock_airlock"; name = "exterior access button"; pixel_x = 30; pixel_y = -5; req_access_txt = "0"; req_one_access_txt = "13"},/turf/space,/area) "bxn" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "admin_shuttle_dock_outer"; locked = 1; name = "Docking Port Airlock"; req_access = null; req_access_txt = "13"},/turf/simulated/floor/plating,/area/hallway/secondary/entry) -"bxo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{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 = 0},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) -"bxp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) -"bxq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"bxo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "Head of Personnel"; req_access = null; req_access_txt = "57"},/turf/simulated/floor,/area/crew_quarters/heads) +"bxp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{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 = 0},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"bxq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "bxr" = (/obj/machinery/mass_driver{id = "trash"},/turf/simulated/floor/plating/airless,/area/maintenance/disposal) "bxs" = (/obj/structure/disposaloutlet{dir = 8},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating,/area/maintenance/disposal) -"bxt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/maintenance/disposal) -"bxu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/maintenance/disposal) -"bxv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) +"bxt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/hallway/secondary/entry) +"bxu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/maintenance/disposal) +"bxv" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/maintenance/disposal) "bxw" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/quartermaster/storage) "bxx" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/quartermaster/storage) "bxy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/storage) "bxz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/storage) "bxA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/storage) "bxB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/storage) -"bxC" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_mining{name = "Cargo Bay"; req_access_txt = "31"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/storage) +"bxC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "bxD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/office) "bxE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/office) "bxF" = (/obj/structure/disposalpipe/segment{name = "Sorting Office"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/quartermaster/office) @@ -3946,7 +3946,7 @@ "bxT" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/crew_quarters/heads) "bxU" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_x = -32; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/engine/gravitygenerator) "bxV" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/engine/gravitygenerator) -"bxW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "10"; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravitygenerator) +"bxW" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_mining{name = "Cargo Bay"; req_access_txt = "31"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/quartermaster/storage) "bxX" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/grille,/turf/simulated/floor/plating,/area/engine/gravitygenerator) "bxY" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/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/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/turf/simulated/floor/plating,/area/engine/gravitygenerator) "bxZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/space,/area) @@ -3998,9 +3998,9 @@ "byT" = (/obj/structure/table,/turf/simulated/shuttle/floor,/area/shuttle/research/station) "byU" = (/turf/space,/area/xenos_station/west) "byV" = (/turf/space,/area/shuttle/administration/station) -"byW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{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},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) -"byX" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) -"byY" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) +"byW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "10"; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravitygenerator) +"byX" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{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},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) +"byY" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "byZ" = (/obj/machinery/conveyor_switch/oneway{id = "QMLoad2"},/turf/simulated/floor,/area/quartermaster/storage) "bza" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/storage) "bzb" = (/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) @@ -4009,12 +4009,12 @@ "bze" = (/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"; tag = "icon-pipe-j2"},/turf/simulated/floor,/area/quartermaster/office) "bzf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/office) "bzg" = (/obj/effect/landmark/start{name = "Cargo Technician"},/obj/structure/stool/bed/chair/office/dark{dir = 4},/turf/simulated/floor,/area/quartermaster/office) -"bzh" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/window/westleft{name = "Cargo Desk"; req_access_txt = "50"},/obj/structure/noticeboard{pixel_y = 27},/turf/simulated/floor,/area/quartermaster/office) +"bzh" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "bzi" = (/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/office) "bzj" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor,/area/quartermaster/office) "bzk" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/office) "bzl" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/hallway/primary/central/sw) -"bzm" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "hopqueue"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor{dir = 8; icon_state = "loadingarea"; tag = "loading"},/area/hallway/primary/central/sw) +"bzm" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/window/westleft{name = "Cargo Desk"; req_access_txt = "50"},/obj/structure/noticeboard{pixel_y = 27},/turf/simulated/floor,/area/quartermaster/office) "bzn" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "delivery"},/area/hallway/primary/central/sw) "bzo" = (/obj/structure/table/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/flasher{id = "hopflash"; pixel_y = 28},/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "hop"; name = "Privacy Shutters"; opacity = 0},/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 4; icon_state = "rightsecure"; name = "Head of Personnel's Desk"; req_access_txt = "57"},/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "Head of Personnel's Desk"; req_access_txt = "0"},/turf/simulated/floor,/area/crew_quarters/heads) "bzp" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/crew_quarters/heads) @@ -4081,7 +4081,7 @@ "bAy" = (/obj/structure/shuttle/engine/propulsion/burst{dir = 4},/turf/space,/area/shuttle/research/station) "bAz" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/shuttle/research/station) "bAA" = (/obj/machinery/computer/shuttle_control/research{req_access = null; req_access_txt = "65"},/turf/simulated/shuttle/floor,/area/shuttle/research/station) -"bAB" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/quartermaster/storage) +"bAB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "hopqueue"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor{dir = 8; icon_state = "loadingarea"; tag = "loading"},/area/hallway/primary/central/sw) "bAC" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/turf/simulated/floor/plating,/area/quartermaster/storage) "bAD" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/quartermaster/storage) "bAE" = (/turf/simulated/floor{dir = 4; icon_state = "loadingarea"},/area/quartermaster/storage) @@ -4092,7 +4092,7 @@ "bAJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/office) "bAK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/quartermaster/office) "bAL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/quartermaster/office) -"bAM" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/quartermaster/office) +"bAM" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad2"},/obj/machinery/door/firedoor{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/quartermaster/storage) "bAN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/sw) "bAO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/hallway/primary/central/sw) "bAP" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/central/sw) @@ -4125,7 +4125,7 @@ "bBq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyerStar"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = -26; range = 6},/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/medbay2) "bBr" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) "bBs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) -"bBt" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) +"bBt" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/quartermaster/office) "bBu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/junction{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2) "bBv" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bBw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) @@ -4148,19 +4148,19 @@ "bBN" = (/obj/structure/table,/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"; tag = ""},/obj/item/device/mmi/posibrain,/obj/item/device/robotanalyzer,/turf/simulated/floor{dir = 8; icon_state = "whitecorner"},/area/assembly/robotics) "bBO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) "bBP" = (/obj/machinery/door_control{id = "robotics2"; name = "Robotics Lab Shutters Control"; pixel_x = 24; pixel_y = -24; req_access_txt = "29"},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) -"bBQ" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "robotics2"; name = "Robotics Lab Shutters"; opacity = 0},/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Robotics Desk"; req_access_txt = "29"},/turf/simulated/floor/plating,/area/assembly/robotics) -"bBR" = (/obj/machinery/light{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 2; icon_state = "whitecorner"},/area/medical/research{name = "Research Division"}) -"bBS" = (/obj/effect/landmark{name = "lightsout"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/research{name = "Research Division"}) -"bBT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "whitecorner"},/area/medical/research{name = "Research Division"}) -"bBU" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "rdlab2"; name = "Research and Development Lab Shutters"; opacity = 0},/obj/machinery/door/window/eastright{base_state = "left"; dir = 1; icon_state = "left"; name = "Research and Development Desk"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) +"bBQ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) +"bBR" = (/obj/machinery/light{dir = 8},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 2; icon_state = "whitecorner"},/area/medical/research{name = "Research Division"}) +"bBS" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "robotics2"; name = "Robotics Lab Shutters"; opacity = 0},/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Robotics Desk"; req_access_txt = "29"},/turf/simulated/floor/plating,/area/assembly/robotics) +"bBT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "whitecorner"},/area/medical/research{name = "Research Division"}) +"bBU" = (/obj/effect/landmark{name = "lightsout"},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/medical/research{name = "Research Division"}) "bBV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) -"bBW" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/glass_research{name = "Research and Development"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) +"bBW" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "rdlab2"; name = "Research and Development Lab Shutters"; opacity = 0},/obj/machinery/door/window/eastright{base_state = "left"; dir = 1; icon_state = "left"; name = "Research and Development Desk"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bBX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "bBY" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "bBZ" = (/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/auxsolarstarboard) "bCa" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard) "bCb" = (/obj/structure/table,/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "research_shuttle"; pixel_x = -8; pixel_y = -25; req_access_txt = "13;65"; tag_door = "research_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/research/station) -"bCc" = (/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/quartermaster/storage) +"bCc" = (/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/glass_research{name = "Research and Development"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bCd" = (/turf/simulated/floor/plating,/area/quartermaster/storage) "bCe" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/quartermaster/storage) "bCf" = (/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/storage) @@ -4169,7 +4169,7 @@ "bCi" = (/obj/structure/filingcabinet/filingcabinet,/turf/simulated/floor,/area/quartermaster/office) "bCj" = (/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) "bCk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/office) -"bCl" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/quartermaster/office) +"bCl" = (/obj/machinery/door/firedoor{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/quartermaster/storage) "bCm" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/central/sw) "bCn" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = -32},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "hop"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/crew_quarters/heads) "bCo" = (/obj/structure/closet/secure_closet/hop,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/crew_quarters/heads) @@ -4205,7 +4205,7 @@ "bCS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) "bCT" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bCU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2) -"bCV" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/medbay2) +"bCV" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/turf/simulated/floor,/area/quartermaster/office) "bCW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/medbay2) "bCX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/medbay2) "bCY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/medbay2) @@ -4236,12 +4236,12 @@ "bDx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bDy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "bDz" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/medical/research{name = "Research Division"}) -"bDA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) +"bDA" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/medbay2) "bDB" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/medical/research{name = "Research Division"}) -"bDC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"bDC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "bDD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "bDE" = (/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Research Shuttle Maintenance"; dir = 2; network = list("Research","SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) -"bDF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/glass_research{name = "Research Shuttle Dock"; req_access_txt = "65"},/turf/simulated/floor{dir = 4; icon_state = "whitepurplecorner"},/area/medical/research_shuttle_dock) +"bDF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bDG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/research_shuttle_dock) "bDH" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) "bDI" = (/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) @@ -4250,14 +4250,14 @@ "bDL" = (/turf/simulated/shuttle/wall{icon_state = "swall_s5"; dir = 2},/area/shuttle/research/station) "bDM" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_shuttle_hatch"; locked = 1; name = "External Hatch"; req_access_txt = "13"},/turf/simulated/shuttle/floor,/area/shuttle/research/station) "bDN" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/research/station) -"bDO" = (/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},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) -"bDP" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) +"bDO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/glass_research{name = "Research Shuttle Dock"; req_access_txt = "65"},/turf/simulated/floor{dir = 4; icon_state = "whitepurplecorner"},/area/medical/research_shuttle_dock) +"bDP" = (/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/door/firedoor{dir = 2},/turf/simulated/shuttle/plating,/area/medical/research{name = "Research Division"}) "bDQ" = (/obj/machinery/camera{c_tag = "Cargo Recieving Dock"; dir = 4},/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "cargo_bay"; name = "cargo bay hatch controller"; pixel_x = -30; pixel_y = 0; req_access_txt = "0"; req_one_access_txt = "13;31"; tag_door = "cargo_bay_door"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/quartermaster/storage) "bDR" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #2"},/obj/machinery/bot/mulebot{home_destination = "QM #2"; suffix = "#2"},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) "bDS" = (/obj/structure/table/woodentable,/obj/machinery/light/small/lamp{pixel_y = 10},/obj/structure/disposalpipe/segment,/obj/item/device/eftpos,/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "bDT" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor,/area/quartermaster/office) "bDU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/office) -"bDV" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_mining{name = "Cargo Office"; req_access_txt = "50"},/turf/simulated/floor,/area/quartermaster/office) +"bDV" = (/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},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "bDW" = (/obj/machinery/door_control{id = "alienshutters"; name = "Alien Blast Shutter Control"; pixel_x = -26; pixel_y = -2; req_access_txt = "0"},/turf/simulated/floor/plating/airless,/area/xenos_station/start) "bDX" = (/obj/structure/closet/secure_closet/hop2,/turf/simulated/floor,/area/crew_quarters/heads) "bDY" = (/turf/simulated/floor,/area/crew_quarters/heads) @@ -4267,7 +4267,7 @@ "bEc" = (/obj/machinery/message_server,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor/bluegrid,/area/server) "bEd" = (/obj/machinery/power/apc{dir = 1; name = "Messaging Server APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/turf/simulated/floor/bluegrid,/area/server) "bEe" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor{icon_state = "dark"},/area/server) -"bEf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/engineering{name = "Gravity Generator"; req_access_txt = "0"; req_one_access_txt = "10;30"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravitygenerator) +"bEf" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "bEg" = (/turf/simulated/wall/r_wall,/area/maintenance/abandonedbar) "bEh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/space,/area) "bEi" = (/obj/machinery/power/apc{dir = 8; name = "Teleporter APC"; pixel_x = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/teleporter) @@ -4276,7 +4276,7 @@ "bEl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/bluespace_beacon,/turf/simulated/floor,/area/teleporter) "bEm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/teleporter) "bEn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/teleporter) -"bEo" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/command{name = "Teleport Access"; req_access_txt = "17"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/teleporter) +"bEo" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_mining{name = "Cargo Office"; req_access_txt = "50"},/turf/simulated/floor,/area/quartermaster/office) "bEp" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/hallway/primary/central/sw) "bEq" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR: EMERGENCY ENTRANCE'."; name = "KEEP CLEAR: EMERGENCY ENTRANCE"; pixel_x = 32; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/sw) "bEr" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/backpack/medic,/obj/item/roller,/obj/item/roller,/obj/item/roller,/obj/item/weapon/storage/toolbox/emergency,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/medbay2) @@ -4292,7 +4292,7 @@ "bEB" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/glass_medical{id_tag = "GeneticsDoor"; name = "Genetics Cloning"; req_access_txt = "0"; req_one_access_txt = "5;9"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics_cloning) "bEC" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/maintenance{req_access_txt = "9"},/turf/simulated/floor{icon_state = "white"},/area/maintenance/asmaint) "bED" = (/obj/machinery/door/poddoor{id = "chapelgun"; name = "Chapel Launcher Door"},/turf/simulated/floor/plating,/area/chapel/main) -"bEE" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access_txt = "29"; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) +"bEE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/engineering{name = "Gravity Generator"; req_access_txt = "0"; req_one_access_txt = "10;30"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravitygenerator) "bEF" = (/turf/simulated/wall/r_wall,/area/chapel/main) "bEG" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "bEH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -4301,12 +4301,12 @@ "bEK" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bEL" = (/obj/machinery/camera{c_tag = "Research Hallway North"; dir = 1; network = list("Research","SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bEM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bEN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"bEN" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/command{name = "Teleport Access"; req_access_txt = "17"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/teleporter) "bEO" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Research Division Delivery"; req_access_txt = "47"},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "delivery"},/area/medical/research{name = "Research Division"}) "bEP" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "Research Division"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/medical/research{name = "Research Division"}) "bEQ" = (/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/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) "bER" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/medical/research{name = "Research Division"}) -"bES" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/glass_research{name = "Research Shuttle Dock"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/medical/research_shuttle_dock) +"bES" = (/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_research{name = "Robotics Lab"; req_access_txt = "29"; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) "bET" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/research_shuttle_dock) "bEU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bEV" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) @@ -4333,7 +4333,7 @@ "bFq" = (/obj/machinery/computer/message_monitor,/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/server) "bFr" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/server) "bFs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/server) -"bFt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/highsecurity{name = "Messaging Server"; req_access_txt = "30"},/turf/simulated/floor{icon_state = "dark"},/area/server) +"bFt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bFu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/engine/gravitygenerator) "bFv" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/engine/gravitygenerator) "bFw" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor,/area/engine/gravitygenerator) @@ -4350,7 +4350,7 @@ "bFH" = (/turf/simulated/floor{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/medbay2) "bFI" = (/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) "bFJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) -"bFK" = (/obj/machinery/light{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) +"bFK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/glass_research{name = "Research Shuttle Dock"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/medical/research_shuttle_dock) "bFL" = (/obj/machinery/camera{c_tag = "Medbay Emergency Entrance"; dir = 2; network = list("SS13")},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) "bFM" = (/turf/simulated/floor{dir = 1; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2) "bFN" = (/obj/structure/table,/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/mask/muzzle,/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; freerange = 0; frequency = 1485; listening = 1; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -27},/obj/machinery/light,/obj/item/weapon/gun/syringe,/turf/simulated/floor{tag = "icon-whiteblue (SOUTHWEST)"; icon_state = "whiteblue"; dir = 10},/area/medical/medbay3) @@ -4373,7 +4373,7 @@ "bGe" = (/obj/structure/closet/wardrobe/genetics_white,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-whitepurple (NORTH)"; icon_state = "whitepurple"; dir = 1},/area/medical/genetics) "bGf" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 101; on = 1; pressure_checks = 1},/turf/simulated/floor{tag = "icon-whitepurple (NORTHEAST)"; icon_state = "whitepurple"; dir = 5},/area/medical/genetics) "bGg" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/wall,/area/crew_quarters/toilet) -"bGh" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/research{name = "Research Division"}) +"bGh" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) "bGi" = (/obj/machinery/camera{c_tag = "Research Hallway West"; dir = 2; network = list("Research","SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bGj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bGk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -4395,7 +4395,7 @@ "bGA" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 2; frequency = 1380; id_tag = "research_dock_pump"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/medical/research{name = "Research Division"}) "bGB" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/medical/research{name = "Research Division"}) "bGC" = (/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/fsmaint2) -"bGD" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/quartermaster/storage) +"bGD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) "bGE" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/floor/plating,/area/quartermaster/storage) "bGF" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/status_display/supply_display{pixel_y = -32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/quartermaster/storage) "bGG" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/light,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/quartermaster/storage) @@ -4414,7 +4414,7 @@ "bGT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/maintenance/fsmaint2) "bGU" = (/obj/machinery/camera{c_tag = "Cargo Bay Entrance"; dir = 4; network = list("SS13")},/obj/machinery/atm{pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/sw) "bGV" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/hallway/primary/central/sw) -"bGW" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "hopqueue"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/hallway/primary/central/sw) +"bGW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) "bGX" = (/obj/structure/filingcabinet/chestdrawer,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/crew_quarters/heads) "bGY" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Personnel's Desk"; departmentType = 5; name = "Head of Personnel RC"; pixel_y = -30},/obj/machinery/camera{c_tag = "Head of Personnel's Office"; dir = 1; network = list("SS13")},/obj/structure/flora/kirbyplants,/turf/simulated/floor,/area/crew_quarters/heads) "bGZ" = (/obj/structure/table,/obj/machinery/photocopier/faxmachine{department = "Head of Personnel's Office"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor,/area/crew_quarters/heads) @@ -4436,7 +4436,7 @@ "bHp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/turf/simulated/floor{tag = "icon-whiteblue (SOUTHWEST)"; icon_state = "whiteblue"; dir = 10},/area/medical/medbay2) "bHq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) "bHr" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j1s"; sortType = 11},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) -"bHs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) +"bHs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/highsecurity{name = "Messaging Server"; req_access_txt = "30"},/turf/simulated/floor{icon_state = "dark"},/area/server) "bHt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{tag = "icon-whitebluecorner (WEST)"; icon_state = "whitebluecorner"; dir = 8},/area/medical/medbay2) "bHu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bHv" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/medbay2) @@ -4459,7 +4459,7 @@ "bHM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{tag = "icon-whitepurple (SOUTHEAST)"; icon_state = "whitepurple"; dir = 6},/area/medical/genetics) "bHN" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/wall,/area/chapel/office) "bHO" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "bot"},/area/medical/research{name = "Research Division"}) -"bHP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/research{name = "Research Division"}) +"bHP" = (/obj/machinery/light{dir = 1},/obj/machinery/door/firedoor,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) "bHQ" = (/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{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bHR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/light,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bHS" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -4481,19 +4481,19 @@ "bIi" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/medical/research{name = "Research Division"}) "bIj" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/power/apc{dir = 2; name = "Research Shuttle Dock APC"; pixel_y = -24},/obj/structure/cable,/turf/simulated/floor{dir = 2; icon_state = "cmo"},/area/medical/research{name = "Research Division"}) "bIk" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "cmo"},/area/medical/research{name = "Research Division"}) -"bIl" = (/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/door/firedoor/border_only{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/shuttle/plating,/area/medical/research{name = "Research Division"}) +"bIl" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/research{name = "Genetics Research"; req_access_txt = "47;9"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) "bIm" = (/obj/machinery/atmospherics/pipe/manifold/hidden,/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "research_dock_sensor"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/medical/research{name = "Research Division"}) "bIn" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1380; id_tag = "research_dock_pump"},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "research_dock_airlock"; pixel_x = 25; pixel_y = 0; req_access_txt = "13;65"; tag_airpump = "research_dock_pump"; tag_chamber_sensor = "research_dock_sensor"; tag_exterior_door = "research_dock_outer"; tag_interior_door = "research_dock_inner"},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/medical/research{name = "Research Division"}) -"bIo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{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},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) -"bIp" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) -"bIq" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) -"bIr" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) -"bIs" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) -"bIt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) -"bIu" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) -"bIv" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) +"bIo" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/research{name = "Research Division"}) +"bIp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) +"bIq" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/door/firedoor{dir = 2},/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/quartermaster/storage) +"bIr" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "hopqueue"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/hallway/primary/central/sw) +"bIs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) +"bIt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/research{name = "Genetics Research"; req_access_txt = "47;9"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) +"bIu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "whiteblue"},/area/medical/research{name = "Research Division"}) +"bIv" = (/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/door/firedoor{dir = 2},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/shuttle/plating,/area/medical/research{name = "Research Division"}) "bIw" = (/turf/simulated/wall,/area/quartermaster/miningdock) -"bIx" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/mining{name = "Mining Dock"; req_access_txt = "48"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/miningdock) +"bIx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{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},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "bIy" = (/turf/simulated/wall,/area/quartermaster/qm) "bIz" = (/obj/structure/filingcabinet,/turf/simulated/floor,/area/quartermaster/qm) "bIA" = (/obj/machinery/computer/supplycomp,/turf/simulated/floor,/area/quartermaster/qm) @@ -4501,19 +4501,19 @@ "bIC" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor,/area/quartermaster/qm) "bID" = (/obj/structure/disposalpipe/segment,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/primary/central/sw) "bIE" = (/obj/machinery/door/airlock/command{name = "Head of Personnel"; req_access = null; req_access_txt = "57"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/crew_quarters/heads) -"bIF" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/engineering{name = "Gravity Generator"; req_access_txt = "0"; req_one_access_txt = "10;30"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/engine/gravitygenerator) +"bIF" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "bIG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/primary/central/sw) "bIH" = (/obj/machinery/camera{c_tag = "Central Hallway South-East"; dir = 8; network = list("SS13")},/turf/simulated/floor,/area/hallway/primary/central/sw) -"bII" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acute1"; name = "Acute 1 Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) -"bIJ" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acute1"; name = "Acute 1 Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) +"bII" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) +"bIJ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "bIK" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bIL" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2) -"bIM" = (/obj/machinery/light{dir = 1},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) +"bIM" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "bIN" = (/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; freerange = 0; frequency = 1485; listening = 1; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = 21},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) "bIO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) "bIP" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) "bIQ" = (/obj/machinery/alarm{pixel_y = 25},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) -"bIR" = (/obj/machinery/light{dir = 1},/obj/machinery/requests_console{announcementConsole = 0; department = "Medbay"; departmentType = 1; name = "Medbay Requests Console"; pixel_x = 0; pixel_y = 30; pixel_z = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) +"bIR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "bIS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bIT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/medbay2) "bIU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/cryo) @@ -4530,8 +4530,8 @@ "bJf" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) "bJg" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) "bJh" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the RD's goons from the safety of his office."; name = "Research Monitor"; network = list("Research","Research Outpost","RD"); pixel_x = 0; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/table/glass,/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/hor) -"bJi" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/airlock/command{name = "Server Room"; req_access = null; req_access_txt = "30"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) -"bJj" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access_txt = "8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/toxins/storage) +"bJi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) +"bJj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage) "bJk" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bJl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "bJm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -4559,9 +4559,9 @@ "bJI" = (/obj/machinery/newscaster{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/sw) "bJJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Central Hall SW APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor,/area/hallway/primary/central/sw) "bJK" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/primary/central/sw) -"bJL" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/sw) +"bJL" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/mining{name = "Mining Dock"; req_access_txt = "48"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/miningdock) "bJM" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/sw) -"bJN" = (/obj/structure/sign/securearea{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central/south) +"bJN" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/engineering{name = "Gravity Generator"; req_access_txt = "0"; req_one_access_txt = "10;30"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/engine/gravitygenerator) "bJO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central/south) "bJP" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/structure/disposalpipe/junction{tag = "icon-pipe-j1 (EAST)"; icon_state = "pipe-j1"; dir = 4},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central/south) "bJQ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Central Hall South APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/south) @@ -4577,7 +4577,7 @@ "bKa" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/south) "bKb" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor,/area/hallway/primary/central/south) "bKc" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/hallway/primary/central/south) -"bKd" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/south) +"bKd" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acute1"; name = "Acute 1 Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) "bKe" = (/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/primary/central/sw) "bKf" = (/obj/machinery/atm{pixel_y = 32},/turf/simulated/floor,/area/hallway/primary/central/sw) "bKg" = (/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor,/area/hallway/primary/central/sw) @@ -4591,12 +4591,12 @@ "bKo" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Acute Treatment 1"; req_access_txt = "5"},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) "bKp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bKq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 9},/turf/simulated/floor{dir = 2; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2) -"bKr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) +"bKr" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acute1"; name = "Acute 1 Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) "bKs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 10},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) "bKt" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) "bKu" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) "bKv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) -"bKw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) +"bKw" = (/obj/machinery/light{dir = 1},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) "bKx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{tag = "icon-whitebluecorner (WEST)"; icon_state = "whitebluecorner"; dir = 8},/area/medical/medbay2) "bKy" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bKz" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/medbay2) @@ -4612,9 +4612,9 @@ "bKJ" = (/turf/simulated/wall/r_wall,/area/toxins/server) "bKK" = (/obj/machinery/r_n_d/server/robotics,/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) "bKL" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; 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) -"bKM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) -"bKN" = (/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/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/toxins/server) -"bKO" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) +"bKM" = (/obj/structure/stool/bed/chair/office/light,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) +"bKN" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) +"bKO" = (/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/hidden{dir = 4},/turf/simulated/floor/plating,/area/toxins/server) "bKP" = (/obj/machinery/camera{c_tag = "Research Server Room"; dir = 2; network = list("Research","SS13"); pixel_x = 22},/obj/machinery/power/apc{dir = 1; name = "Server Room APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "bKQ" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{current_temperature = 80; dir = 2; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "bKR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/computer/area_atmos,/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) @@ -4660,7 +4660,7 @@ "bLF" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -25; pixel_y = 0; req_access_txt = "0"},/obj/machinery/light{dir = 8},/obj/structure/stool/bed,/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/sleeper) "bLG" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bLH" = (/obj/machinery/sleep_console{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) -"bLI" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "acute1"; name = "Acute 1 Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) +"bLI" = (/obj/machinery/light{dir = 1},/obj/machinery/requests_console{announcementConsole = 0; department = "Medbay"; departmentType = 1; name = "Medbay Requests Console"; pixel_x = 0; pixel_y = 30; pixel_z = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/door/firedoor,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) "bLJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bLK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) "bLL" = (/turf/simulated/wall,/area/library) @@ -4684,9 +4684,9 @@ "bMd" = (/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 = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) "bMe" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) "bMf" = (/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) -"bMg" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 4; icon_state = "rightsecure"; name = "Server Exterior Door"; req_access = null; req_access_txt = "0"},/obj/machinery/door/window/brigdoor{dir = 8; name = "Server Interior Door"; req_access = null; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) -"bMh" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) -"bMi" = (/obj/structure/stool/bed/chair/office/light,/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) +"bMg" = (/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/obj/machinery/door/airlock/command{name = "Server Room"; req_access = null; req_access_txt = "30"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) +"bMh" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Server Walkway"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) +"bMi" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "bMj" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "bMk" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) "bMl" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) @@ -4718,9 +4718,9 @@ "bML" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/sw) "bMM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/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/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/central/sw) "bMN" = (/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 = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/sw) -"bMO" = (/obj/machinery/camera{c_tag = "Central Primary Hallway South-West"; dir = 1},/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/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/sw) +"bMO" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access_txt = "8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/toxins/storage) "bMP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/airlock/glass{name = "Central Access"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/sw) -"bMQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/south) +"bMQ" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/sw) "bMR" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/south) "bMS" = (/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/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"; tag = "icon-pipe-j2"},/turf/simulated/floor,/area/hallway/primary/central/south) "bMT" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/south) @@ -4730,9 +4730,9 @@ "bMX" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/south) "bMY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hallway/primary/central/south) "bMZ" = (/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 22},/turf/simulated/floor,/area/hallway/primary/central/south) -"bNa" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/south) +"bNa" = (/obj/structure/sign/securearea{pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central/south) "bNb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/primary/central/sw) -"bNc" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/sw) +"bNc" = (/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/south) "bNd" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/hallway/primary/central/sw) "bNe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/light,/turf/simulated/floor,/area/hallway/primary/central/sw) "bNf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 1; icon_state = "loadingarea"; tag = "loading"},/area/hallway/primary/central/sw) @@ -4758,8 +4758,8 @@ "bNz" = (/obj/machinery/computer/scan_consolenew,/obj/structure/window/reinforced,/turf/simulated/floor{tag = "icon-whitepurple (EAST)"; icon_state = "whitepurple"; dir = 4},/area/medical/genetics) "bNA" = (/obj/machinery/r_n_d/server/core,/turf/simulated/floor/bluegrid{name = "Server Base"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/server) "bNB" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; external_pressure_bound = 140; 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) -"bNC" = (/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/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/toxins/server) -"bND" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) +"bNC" = (/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/hidden{dir = 4},/turf/simulated/floor/plating,/area/toxins/server) +"bND" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; initialize_directions = 10},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "bNE" = (/obj/machinery/computer/rdservercontrol,/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "bNF" = (/obj/machinery/computer/message_monitor,/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "bNG" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/toxins/storage) @@ -4778,9 +4778,9 @@ "bNT" = (/obj/structure/table,/turf/simulated/shuttle/floor,/area/shuttle/mining/station) "bNU" = (/obj/machinery/computer/shuttle_control/mining,/turf/simulated/shuttle/floor,/area/shuttle/mining/station) "bNV" = (/obj/structure/table,/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "mining_shuttle"; pixel_x = 25; pixel_y = -8; req_access_txt = "0"; req_one_access_txt = "13;48"; tag_door = "mining_shuttle_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/mining/station) -"bNW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) -"bNX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) -"bNY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) +"bNW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) +"bNX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) +"bNY" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "acute1"; name = "Acute 1 Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) "bNZ" = (/obj/machinery/computer/shuttle_control/mining,/turf/simulated/floor{dir = 9; icon_state = "brown"},/area/quartermaster/miningdock) "bOa" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor,/area/quartermaster/miningdock) "bOb" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/quartermaster/miningdock) @@ -4799,15 +4799,15 @@ "bOo" = (/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,/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "representative"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/ntrep) "bOp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/command{name = "NT Representative's Office"; req_access_txt = "73"},/turf/simulated/floor/wood,/area/ntrep) "bOq" = (/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,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "representative"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/blueshield) -"bOr" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central/south) +"bOr" = (/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/obj/machinery/door/window/brigdoor{base_state = "rightsecure"; dir = 4; icon_state = "rightsecure"; name = "Server Exterior Door"; req_access = null; req_access_txt = "0"},/obj/machinery/door/window/brigdoor{dir = 8; name = "Server Interior Door"; req_access = null; req_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server) "bOs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/wall,/area/crew_quarters/kitchen) "bOt" = (/obj/machinery/door/airlock{name = "Custodial Closet"; req_access_txt = "26"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/janitor) "bOu" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/asmaint) -"bOv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{dir = 2; id = "paramedic"; name = "Paramedic Garage"},/turf/simulated/floor,/area/medical/paramedic) -"bOw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/diamond{name = "Paramedic"; req_access_txt = "66"},/turf/simulated/floor,/area/medical/paramedic) +"bOv" = (/obj/machinery/camera{c_tag = "Central Primary Hallway South-West"; dir = 1},/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/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/sw) +"bOw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/south) "bOx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/navbeacon{codes_txt = "delivery;dir=2"; freq = 1400; location = "Kitchen"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/maintenance/fsmaint2) -"bOy" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acutesep"; name = "Acute Separation Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) -"bOz" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acutesep"; name = "Acute Separation Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) +"bOy" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/south) +"bOz" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/sw) "bOA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/library) "bOB" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) "bOC" = (/obj/item/device/radio/intercom{freerange = 1; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) @@ -4833,8 +4833,8 @@ "bOW" = (/mob/living/simple_animal/mouse/white,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) "bOX" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent,/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) "bOY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/sign/poster/legit{pixel_y = 32},/turf/simulated/floor,/area/hallway/primary/starboard/east) -"bOZ" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) -"bPa" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/turf/simulated/floor{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) +"bOZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) +"bPa" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) "bPb" = (/obj/machinery/atmospherics/pipe/simple/insulated,/obj/machinery/camera{c_tag = "Research Toxins Mixing North"; dir = 2; network = list("Research","SS13"); pixel_x = 0},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) "bPc" = (/obj/machinery/atmospherics/pipe/simple/insulated{dir = 6},/obj/machinery/light{dir = 1; in_use = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) "bPd" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/wall,/area/library) @@ -4844,7 +4844,7 @@ "bPh" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/primary/central/ne) "bPi" = (/turf/simulated/shuttle/floor,/area/shuttle/mining/station) "bPj" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/mining/station) -"bPk" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) +"bPk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) "bPl" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "mining_dock_pump"},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/quartermaster/miningdock) "bPm" = (/obj/machinery/light/small{dir = 4; pixel_y = 8},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "mining_dock_airlock"; pixel_x = 25; pixel_y = -5; req_access_txt = "0"; req_one_access_txt = "13;48"; tag_airpump = "mining_dock_pump"; tag_chamber_sensor = "mining_dock_sensor"; tag_exterior_door = "mining_dock_outer"; tag_interior_door = "mining_dock_inner"},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "mining_dock_sensor"; pixel_x = 25; pixel_y = 8},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1},/obj/item/weapon/ore/iron,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/quartermaster/miningdock) "bPn" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/wall,/area/quartermaster/miningdock) @@ -4885,7 +4885,7 @@ "bPW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door_control{id = "paramedic"; name = "Garage Door Control"; pixel_x = -1; pixel_y = 24; req_access_txt = "66"},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/paramedic) "bPX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/effect/landmark/start{name = "Paramedic"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic) "bPY" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic) -"bPZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/medical{name = "Paramedic"; req_access_txt = "66"},/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic) +"bPZ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/south) "bQa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "whitered"},/area/medical/sleeper) "bQb" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) "bQc" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) @@ -4953,9 +4953,9 @@ "bRm" = (/obj/machinery/photocopier,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/wood,/area/blueshield) "bRn" = (/turf/simulated/floor/carpet,/area/ntrep) "bRo" = (/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/wood,/area/blueshield) -"bRp" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft) -"bRq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/aft) -"bRr" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) +"bRp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{dir = 2; id = "paramedic"; name = "Paramedic Garage"},/turf/simulated/floor,/area/medical/paramedic) +"bRq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/diamond{name = "Paramedic"; req_access_txt = "66"},/turf/simulated/floor,/area/medical/paramedic) +"bRr" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acutesep"; name = "Acute Separation Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) "bRs" = (/obj/machinery/power/apc{dir = 8; name = "Custodial Closet APC"; pixel_x = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/janitor) "bRt" = (/obj/structure/stool,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/landmark/start{name = "Janitor"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/janitor) "bRu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/janitor) @@ -4968,7 +4968,7 @@ "bRB" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 8; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/medical/paramedic) "bRC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic) "bRD" = (/obj/structure/closet/secure_closet/paramedic,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic) -"bRE" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "acute2"; name = "Acute 2 Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) +"bRE" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "acutesep"; name = "Acute Separation Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) "bRF" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) "bRG" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bRH" = (/obj/machinery/camera{c_tag = "Medbay Port Corridor"; dir = 8; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/disposal,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) @@ -5001,7 +5001,7 @@ "bSi" = (/obj/machinery/door/airlock/external{name = "Toxins Test Chamber"; req_access_txt = "0"},/turf/simulated/floor/plating/airless,/area/toxins/test_area) "bSj" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating/airless,/area/toxins/test_area) "bSk" = (/obj/machinery/camera{c_tag = "Research Toxins Test Chamber North"; network = list("Toxins","Research","SS13")},/obj/machinery/light{dir = 1},/turf/simulated/floor/airless,/area/toxins/test_area) -"bSl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) +"bSl" = (/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/sign/poster/legit{pixel_x = -32},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "bSm" = (/obj/item/weapon/ore/silver,/obj/item/weapon/ore/silver,/obj/structure/closet/crate,/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1380; id_tag = "mining_dock_pump"},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/quartermaster/miningdock) "bSn" = (/obj/machinery/camera{c_tag = "Mining Dock External"; dir = 8},/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/turf/simulated/floor{icon_state = "warning"},/area/quartermaster/miningdock) "bSo" = (/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) @@ -5079,7 +5079,7 @@ "bTI" = (/obj/structure/closet/crate,/turf/simulated/shuttle/floor,/area/shuttle/mining/station) "bTJ" = (/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) "bTK" = (/obj/structure/ore_box,/turf/simulated/shuttle/floor,/area/shuttle/mining/station) -"bTL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) +"bTL" = (/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/turf/simulated/floor{dir = 9; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "bTM" = (/obj/structure/closet/secure_closet/miner,/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster/miningdock) "bTN" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/apmaint) "bTO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/apmaint) @@ -5097,9 +5097,9 @@ "bUa" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/simulated/floor/plating,/area/maintenance/asmaint) "bUb" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/hydroponics) "bUc" = (/turf/simulated/wall,/area/medical/sleeper) -"bUd" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "scansep"; name = "Scanning Room Separation Shutters"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) -"bUe" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) -"bUf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) +"bUd" = (/obj/machinery/door/firedoor{dir = 1; name = "hazard door north"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"bUe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) +"bUf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Paramedic"; req_access_txt = "66"},/turf/simulated/floor{icon_state = "white"},/area/medical/paramedic) "bUg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/wall,/area/hydroponics) "bUh" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/maintenance{name = "Hydroponics Maintenance"; req_access_txt = "35"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/plating,/area/hydroponics) "bUi" = (/obj/machinery/light,/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{dir = 10; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/cmo) @@ -5122,18 +5122,18 @@ "bUz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/carpet,/area/medical/psych) "bUA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/carpet,/area/medical/psych) "bUB" = (/obj/machinery/camera{c_tag = "Medbay Psych Office"; dir = 8; network = list("SS13")},/obj/machinery/power/apc{dir = 4; name = "Psychiatrist APC"; pixel_x = 25},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/carpet,/area/medical/psych) -"bUC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "telescienceblast"; name = "test chamber blast doors"; opacity = 0},/turf/simulated/floor/engine,/area/toxins/telesci) +"bUC" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/aft) "bUD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "telescienceblast"; name = "test chamber blast doors"; opacity = 0},/turf/simulated/floor/engine,/area/toxins/telesci) "bUE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "telescienceblast"; name = "test chamber blast doors"; opacity = 0},/turf/simulated/floor/engine,/area/toxins/telesci) "bUF" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "telescienceblast"; name = "test chamber blast doors"; opacity = 0},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/engine,/area/toxins/telesci) "bUG" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) "bUH" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/storage) "bUI" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) -"bUJ" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/mixing) +"bUJ" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft) "bUK" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/mixing) "bUL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/mixing) "bUM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/warning_stripes/east,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/mixing) -"bUN" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Toxins Mixing Room"; req_access_txt = "7"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/toxins/mixing) +"bUN" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) "bUO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "whitepurple"},/area/toxins/mixing) "bUP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) "bUQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/window/eastright{name = "Toxins Mixing Room"},/turf/simulated/floor{dir = 4; icon_state = "whitepurple"},/area/toxins/mixing) @@ -5158,9 +5158,9 @@ "bVj" = (/obj/structure/shuttle/engine/propulsion/burst,/turf/space,/area/shuttle/mining/station) "bVk" = (/turf/simulated/shuttle/wall{icon_state = "swall_s9"; dir = 2},/area/shuttle/mining/station) "bVl" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1380; master_tag = "mining_dock_airlock"; name = "exterior access button"; pixel_x = -5; pixel_y = 25; req_access_txt = "0"; req_one_access_txt = "13;48"},/turf/space,/area) -"bVm" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) -"bVn" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) -"bVo" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) +"bVm" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "acute2"; name = "Acute 2 Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/sleeper) +"bVn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) +"bVo" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) "bVp" = (/obj/structure/reagent_dispensers/fueltank,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/apmaint) "bVq" = (/obj/structure/reagent_dispensers/watertank,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/apmaint) "bVr" = (/obj/machinery/power/apc{dir = 2; name = "Cargo Maintenance APC"; pixel_y = -24},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plating,/area/maintenance/apmaint) @@ -5199,8 +5199,8 @@ "bVY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/primary/central/ne) "bVZ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "CMO's Office"; req_access_txt = "40"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/cmo) "bWa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/wall,/area/library) -"bWb" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) -"bWc" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2) +"bWb" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "scansep"; name = "Scanning Room Separation Shutters"; opacity = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/sleeper) +"bWc" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) "bWd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/escapepodbay) "bWe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/escapepodbay) "bWf" = (/obj/structure/flora/kirbyplants,/obj/machinery/door_control{id = "psychoffice"; name = "Privacy Shutters Control"; pixel_x = -25; pixel_y = 0},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/wood,/area/medical/psych) @@ -5236,7 +5236,7 @@ "bWJ" = (/obj/machinery/atmospherics/valve,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) "bWK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) "bWL" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing) -"bWM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/research{name = "Toxins Launch Room"; req_access_txt = "7"},/turf/simulated/floor,/area/toxins/mixing) +"bWM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) "bWN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/toxins/mixing) "bWO" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/toxins/mixing) "bWP" = (/obj/machinery/doppler_array{dir = 4},/turf/simulated/floor,/area/toxins/mixing) @@ -5269,7 +5269,7 @@ "bXq" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/turf/simulated/floor,/area/medical/sleeper) "bXr" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/medical/sleeper) "bXs" = (/turf/simulated/floor{dir = 4; icon_state = "blue"},/area/medical/sleeper) -"bXt" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "scanhide"; name = "Scanning Room Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/sleeper) +"bXt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "telescienceblast"; name = "test chamber blast doors"; opacity = 0},/turf/simulated/floor/engine,/area/toxins/telesci) "bXu" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{dir = 1; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2) "bXv" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2) "bXw" = (/obj/structure/closet/walllocker/emerglocker/north,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/photocopier,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) @@ -5298,7 +5298,7 @@ "bXT" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_y = 30},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bXU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bXV" = (/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) -"bXW" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/toxins/storage) +"bXW" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Research Division Access"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/mixing) "bXX" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bXY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bXZ" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/asmaint2) @@ -5344,7 +5344,7 @@ "bYN" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/medical/sleeper) "bYO" = (/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor,/area/medical/sleeper) "bYP" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/medical/sleeper) -"bYQ" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "scanhide"; name = "Scanning Room Privacy Shutters"; opacity = 0},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/sleeper) +"bYQ" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/airlock/research{name = "Toxins Mixing Room"; req_access_txt = "7"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/toxins/mixing) "bYR" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{tag = "icon-whitebluecorner (WEST)"; icon_state = "whitebluecorner"; dir = 8},/area/medical/medbay2) "bYS" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bYT" = (/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) @@ -5358,7 +5358,7 @@ "bZb" = (/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 = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bZc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bZd" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) -"bZe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) +"bZe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) "bZf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) "bZg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/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 = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) "bZh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) @@ -5373,7 +5373,7 @@ "bZq" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bZr" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "bZs" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/toxins/telesci) -"bZt" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"bZt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) "bZu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bZv" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "bZw" = (/obj/structure/rack{dir = 1},/obj/item/weapon/extinguisher,/obj/item/device/flashlight,/turf/simulated/floor/plating,/area/maintenance/asmaint2) @@ -5396,7 +5396,7 @@ "bZN" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft) "bZO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/hallway/primary/aft) "bZP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) -"bZQ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/navbeacon{codes_txt = "delivery;dir=4"; freq = 1400; location = "Engineering"},/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/window/westright{name = "Engineering Monitoring Station"; req_access = null; req_access_txt = "0"; req_one_access_txt = "11;24"},/turf/simulated/floor{icon_state = "bot"},/area/engine/controlroom) +"bZQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/quartermaster/miningdock) "bZR" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/window/northleft{dir = 4; icon_state = "left"; name = "Engineering Monitoring Station"; req_access_txt = "0"; req_one_access_txt = "11;24"},/turf/simulated/floor{icon_state = "delivery"},/area/engine/controlroom) "bZS" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/engine/controlroom) "bZT" = (/turf/simulated/floor,/area/engine/controlroom) @@ -5413,7 +5413,7 @@ "cae" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "caf" = (/obj/structure/stool/bed/chair/comfy/teal,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "cag" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) -"cah" = (/obj/machinery/light,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) +"cah" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2"; icon_state = "pipe-j2"; dir = 2},/obj/machinery/door/firedoor,/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) "cai" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) "caj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) "cak" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) @@ -5427,8 +5427,8 @@ "cas" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "cat" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) "cau" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) -"cav" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/research{name = "Telescience"; req_access_txt = "47"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) -"caw" = (/obj/machinery/light,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) +"cav" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/medbay2) +"caw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/research{name = "Toxins Launch Room"; req_access_txt = "7"},/turf/simulated/floor,/area/toxins/mixing) "cax" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cay" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "caz" = (/obj/machinery/camera{c_tag = "Research Hallway South"; dir = 1; network = list("Research","SS13"); pixel_x = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) @@ -5460,9 +5460,9 @@ "caZ" = (/obj/structure/table,/obj/item/device/analyzer,/obj/item/device/healthanalyzer,/turf/simulated/floor/plating,/area/storage/tech) "cba" = (/obj/structure/table,/obj/item/device/analyzer/plant_analyzer,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plating,/area/storage/tech) "cbb" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plating,/area/storage/tech) -"cbc" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft) -"cbd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/aft) -"cbe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/aft) +"cbc" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "scanhide"; name = "Scanning Room Privacy Shutters"; opacity = 0},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/sleeper) +"cbd" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/research{name = "Toxins Storage"; req_access_txt = "8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/toxins/storage) +"cbe" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "scanhide"; name = "Scanning Room Privacy Shutters"; opacity = 0},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/sleeper) "cbf" = (/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/engine/controlroom) "cbg" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/dispenser{pixel_x = -1},/turf/simulated/floor,/area/engine/controlroom) "cbh" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/engine/controlroom) @@ -5520,7 +5520,7 @@ "cch" = (/obj/structure/disposalpipe/segment,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 1},/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft) "cci" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/hallway/primary/aft) "ccj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/hallway/primary/aft) -"cck" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/window/northleft{dir = 4; icon_state = "left"; name = "Engineering Desk"; req_access_txt = "0"; req_one_access_txt = "11;24"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/controlroom) +"cck" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) "ccl" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/controlroom) "ccm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/controlroom) "ccn" = (/obj/machinery/hologram/holopad,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/engine/controlroom) @@ -5639,12 +5639,12 @@ "cew" = (/obj/machinery/light/small{dir = 8},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/apmaint) "cex" = (/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},/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/storage/tech) "cey" = (/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/hologram/holopad,/turf/simulated/floor,/area/storage/tech) -"cez" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/highsecurity{name = "Secure Tech Storage"; req_access_txt = "19;23"},/turf/simulated/floor/plating,/area/storage/tech) +"cez" = (/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "ceA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/storage/tech) "ceB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/landmark{name = "xeno_spawn"; pixel_x = -1},/turf/simulated/floor/plating,/area/storage/tech) "ceC" = (/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,/area/storage/tech) "ceD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/landmark{name = "blobstart"},/obj/machinery/hologram/holopad,/turf/simulated/floor/plating,/area/storage/tech) -"ceE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/engineering{name = "Tech Storage"; req_access_txt = "23"},/turf/simulated/floor/plating,/area/storage/tech) +"ceE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/navbeacon{codes_txt = "delivery;dir=4"; freq = 1400; location = "Engineering"},/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/window/westright{name = "Engineering Monitoring Station"; req_access = null; req_access_txt = "0"; req_one_access_txt = "11;24"},/turf/simulated/floor{icon_state = "bot"},/area/engine/controlroom) "ceF" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft) "ceG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor,/area/hallway/primary/aft) "ceH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/hallway/primary/aft) @@ -5681,9 +5681,9 @@ "cfm" = (/obj/structure/rack{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint) "cfn" = (/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/kitchen) "cfo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/chapel/main) -"cfp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2; name = "hazard door south"},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology) -"cfq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2; name = "hazard door south"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology) -"cfr" = (/obj/machinery/door/firedoor/border_only{dir = 2; name = "hazard door south"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology) +"cfp" = (/obj/machinery/light,/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) +"cfq" = (/obj/machinery/door/firedoor{dir = 4; name = "hazard door east"},/obj/machinery/door/airlock/research{name = "Telescience"; req_access_txt = "47"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/telesci) +"cfr" = (/obj/machinery/light,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cfs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/primary/central/nw) "cft" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/primary/central/ne) "cfu" = (/obj/machinery/smartfridge,/turf/simulated/wall,/area/hydroponics) @@ -5708,7 +5708,7 @@ "cfN" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/circuitboard/powermonitor{pixel_x = -2; pixel_y = 2},/obj/item/weapon/circuitboard/stationalert{pixel_x = 1; pixel_y = -1},/obj/item/weapon/circuitboard/atmos_alert{pixel_x = 3; pixel_y = -3},/obj/item/weapon/circuitboard/thermomachine,/obj/item/weapon/circuitboard/smes{pixel_x = 4},/turf/simulated/floor/plating,/area/storage/tech) "cfO" = (/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plating,/area/storage/tech) "cfP" = (/obj/structure/closet/emcloset,/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/hallway/secondary/construction{name = "\improper Engineering Training"}) -"cfQ" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "0"; req_one_access_txt = "11;24"},/turf/simulated/floor,/area/engine/controlroom) +"cfQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/aft) "cfR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engine/controlroom) "cfS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engine/controlroom) "cfT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/engine/controlroom) @@ -5738,7 +5738,7 @@ "cgr" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) "cgs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint) "cgt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/primary/central/nw) -"cgu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Xenobiology Research"; req_access_txt = "47"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) +"cgu" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft) "cgv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/wall/r_wall,/area/toxins/misc_lab) "cgw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/wall/r_wall,/area/toxins/misc_lab) "cgx" = (/turf/simulated/wall,/area/toxins/misc_lab) @@ -5765,7 +5765,7 @@ "cgS" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator) "cgT" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/apmaint) "cgU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/maintenance/apmaint) -"cgV" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/window/eastleft{name = "Hydroponics Desk"; req_access_txt = "35"},/obj/machinery/door/window/northleft{dir = 8; icon_state = "left"; name = "Kitchen Desk"; req_access_txt = "28"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/hydroponics) +"cgV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/aft) "cgW" = (/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{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/bridge) "cgX" = (/turf/simulated/wall/r_wall,/area/hallway/primary/aft) "cgY" = (/turf/simulated/wall/r_wall,/area/engine/controlroom) @@ -5840,7 +5840,7 @@ "cip" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor,/area/engine/controlroom) "ciq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor,/area/engine/controlroom) "cir" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor,/area/engine/controlroom) -"cis" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "0"; req_one_access_txt = "11;24"},/turf/simulated/floor,/area/construction) +"cis" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/window/northleft{dir = 4; icon_state = "left"; name = "Engineering Desk"; req_access_txt = "0"; req_one_access_txt = "11;24"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/controlroom) "cit" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor{icon_state = "dark"},/area/construction) "ciu" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/construction) "civ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "dark"},/area/construction) @@ -5910,7 +5910,7 @@ "cjH" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Research Test Lab South"; dir = 8; network = list("Research","SS13")},/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/misc_lab) "cjI" = (/obj/structure/sign/poster/legit{pixel_x = -32},/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/medbay2) "cjJ" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) -"cjK" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/sign/poster/legit{pixel_x = -32},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) +"cjK" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Xenobiology Research"; req_access_txt = "47"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "cjL" = (/obj/structure/closet/crate/freezer,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "cjM" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{tag = "icon-whitehall (WEST)"; icon_state = "whitehall"; dir = 8},/area/toxins/xenobiology) "cjN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "whitehall"; dir = 4},/area/toxins/xenobiology) @@ -5951,7 +5951,7 @@ "ckw" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/hallway/primary/aft) "ckx" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/scrubber,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/primary/aft) "cky" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/construction) -"ckz" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "0"; req_one_access_txt = "11;24"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9; level = 1},/turf/simulated/floor,/area/engine/controlroom) +"ckz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/highsecurity{name = "Secure Tech Storage"; req_access_txt = "19;23"},/turf/simulated/floor/plating,/area/storage/tech) "ckA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/construction) "ckB" = (/turf/simulated/wall/r_wall,/area/maintenance/incinerator) "ckC" = (/obj/machinery/iv_drip,/obj/machinery/light{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) @@ -5968,7 +5968,7 @@ "ckN" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/asmaint) "ckO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "ckP" = (/obj/machinery/embedded_controller/radio/airlock/access_controller{frequency = 1449; id_tag = "testchamber_access_control"; name = "Test Chamber Access Console"; pixel_x = -26; pixel_y = 6; req_access_txt = "47"; tag_exterior_door = "testchamber_airlock_exterior"; tag_interior_door = "testchamber_airlock_interior"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/toxins/misc_lab) -"ckQ" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = -24; pixel_y = 0; req_access_txt = "55"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "xeno_airlock_exterior"; locked = 1; name = "Xenobiology External Airlock"; req_access_txt = "55"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) +"ckQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{name = "Tech Storage"; req_access_txt = "23"},/turf/simulated/floor/plating,/area/storage/tech) "ckR" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera{c_tag = "Medbay Psych Office Corridor West"; network = list("SS13")},/obj/structure/sign/poster/legit{pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "ckS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/misc_lab) "ckT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/misc_lab) @@ -5990,7 +5990,7 @@ "clj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/engine/mechanic_workshop) "clk" = (/obj/machinery/atmospherics/unary/vent_pump{on = 0},/turf/simulated/floor{icon_state = "dark"},/area/engine/mechanic_workshop) "cll" = (/turf/simulated/floor{icon_state = "dark"},/area/engine/mechanic_workshop) -"clm" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass_engineering{name = "Mechanic Workshop"; req_access_txt = "70"; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/engine/mechanic_workshop) +"clm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor{dir = 2; name = "hazard door south"},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology) "cln" = (/turf/simulated/floor,/area/hallway/primary/aft) "clo" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/aft) "clp" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor,/area/hallway/primary/aft) @@ -6047,7 +6047,7 @@ "cmo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor{icon_state = "dark"},/area/engine/mechanic_workshop) "cmp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/engine/mechanic_workshop) "cmq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Mechanic"},/turf/simulated/floor{icon_state = "dark"},/area/engine/mechanic_workshop) -"cmr" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/structure/table/reinforced,/obj/machinery/door/window/westright{name = "Mechanic's Desk"; req_access = null; req_access_txt = "70"; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/cell_charger,/turf/simulated/floor{icon_state = "dark"},/area/engine/mechanic_workshop) +"cmr" = (/obj/machinery/door/firedoor{dir = 2; name = "hazard door south"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology) "cms" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/engine/mechanic_workshop) "cmt" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/mechanic_workshop) "cmu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) @@ -6089,7 +6089,7 @@ "cne" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/chapel/main) "cnf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "solar_xeno_pump"; tag_exterior_door = "solar_xeno_outer"; frequency = 1379; id_tag = "solar_xeno_airlock"; tag_interior_door = "solar_xeno_inner"; pixel_x = 25; req_access_txt = "13"; tag_chamber_sensor = "solar_xeno_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "solar_xeno_sensor"; pixel_x = 25; pixel_y = 12},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "solar_xeno_pump"},/turf/simulated/floor/plating,/area/solar/starboard) "cng" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/aft) -"cnh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{icon_state = "door_locked"; locked = 1; name = "Assembly Line Maintenance"; req_access_txt = "32"},/turf/simulated/floor/plating,/area/assembly/assembly_line) +"cnh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor{dir = 2; name = "hazard door south"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/toxins/xenobiology) "cni" = (/obj/machinery/door/window/southleft{base_state = "left"; dir = 2; icon_state = "left"; name = "Assembly Line Delivery"; req_access_txt = "32"},/turf/simulated/floor{icon_state = "delivery"},/area/assembly/assembly_line) "cnj" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/storage/tech) "cnk" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{dir = 8},/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/aft) @@ -6098,7 +6098,7 @@ "cnn" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/landmark/start{name = "Civilian"},/turf/simulated/floor,/area/hallway/primary/aft) "cno" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/hallway/primary/aft) "cnp" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/hallway/primary/aft) -"cnq" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "32"; req_one_access_txt = "0"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engine/break_room) +"cnq" = (/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "0"; req_one_access_txt = "11;24"},/turf/simulated/floor,/area/engine/controlroom) "cnr" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engine/break_room) "cns" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engine/break_room) "cnt" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/landmark/nations{name = "Atmosia"},/turf/simulated/floor,/area/engine/break_room) @@ -6130,7 +6130,7 @@ "cnT" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "cnU" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{dir = 10; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/toxins/xenobiology) "cnV" = (/obj/structure/closet/firecloset,/turf/simulated/floor{dir = 1; icon_state = "whitered"},/area/toxins/misc_lab) -"cnW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/research{name = "Test Lab"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/toxins/misc_lab) +"cnW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Xenobiology Research"; req_access_txt = "47"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "cnX" = (/obj/machinery/atmospherics/pipe/vent{dir = 8},/turf/simulated/floor/plating/airless,/area) "cnY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_xeno_outer"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/turf/simulated/floor/plating,/area/solar/starboard) "cnZ" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area) @@ -6181,7 +6181,7 @@ "coS" = (/obj/machinery/door/window/northleft{dir = 4; name = "Containment Pen"; req_access_txt = "55"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/xenobiology) "coT" = (/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "coU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) -"coV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = -28; pixel_y = 8; req_access_txt = "55"},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "xeno_airlock_interior"; locked = 1; name = "Xenobiology Internal Airlock"; req_access_txt = "55"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) +"coV" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/maintenance{name = "Incinerator Access"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/incinerator) "coW" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "solar_xeno_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "13"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk3"; icon_state = "catwalk3"},/area/solar/starboard) "coX" = (/turf/space,/area/xenos_station/southwest) "coY" = (/turf/simulated/wall,/area/maintenance/incinerator) @@ -6194,7 +6194,7 @@ "cpf" = (/obj/item/mounted/frame/apc_frame,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/assembly/assembly_line) "cpg" = (/obj/structure/stool,/turf/simulated/floor{icon_state = "floorgrime"},/area/assembly/assembly_line) "cph" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor{icon_state = "floorgrime"},/area/assembly/assembly_line) -"cpi" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_engineering{icon_state = "door_locked"; locked = 1; name = "Assembly Line (KEEP OUT)"; req_access_txt = "32"; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "floorgrime"},/area/assembly/assembly_line) +"cpi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "0"; req_one_access_txt = "11;24"},/turf/simulated/floor,/area/construction) "cpj" = (/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/aft) "cpk" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/aft) "cpl" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/hallway/primary/aft) @@ -6204,7 +6204,7 @@ "cpp" = (/obj/structure/table,/obj/item/weapon/book/manual/supermatter_engine,/turf/simulated/floor,/area/engine/break_room) "cpq" = (/obj/structure/stool/bed/chair/comfy/black{dir = 8},/obj/effect/landmark/start{name = "Life Support Specialist"},/turf/simulated/floor,/area/engine/break_room) "cpr" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/engine/break_room) -"cps" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/door/airlock/atmos{name = "Atmospherics"; req_access_txt = "24"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/atmos/control) +"cps" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/research{name = "Test Lab"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/toxins/misc_lab) "cpt" = (/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/turf/simulated/floor,/area/atmos/control) "cpu" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{level = 2},/turf/simulated/floor,/area/atmos/control) "cpv" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 9; level = 2},/turf/simulated/floor,/area/atmos/control) @@ -6380,12 +6380,12 @@ "csJ" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/assembly/assembly_line) "csK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/aft) "csL" = (/obj/structure/sign/securearea,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engine/equipmentstorage) -"csM" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "10"; req_one_access_txt = "0"},/turf/simulated/floor,/area/engine/equipmentstorage) +"csM" = (/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "0"; req_one_access_txt = "11;24"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9; level = 1},/turf/simulated/floor,/area/engine/controlroom) "csN" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/disposalpipe/segment,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engine/equipmentstorage) "csO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/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 = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engine/equipmentstorage) "csP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engine/equipmentstorage) "csQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engine/equipmentstorage) -"csR" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "10"; req_one_access_txt = "0"},/turf/simulated/floor,/area/engine/equipmentstorage) +"csR" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = -24; pixel_y = 0; req_access_txt = "55"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "xeno_airlock_exterior"; locked = 1; name = "Xenobiology External Airlock"; req_access_txt = "55"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "csS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/turf/simulated/floor/plating,/area/engine/equipmentstorage) "csT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/computer/atmos_alert,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/atmos) "csU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/atmos) @@ -6487,7 +6487,7 @@ "cuM" = (/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},/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/maintenance/portsolar) "cuN" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/portsolar) "cuO" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/smes{charge = 0},/turf/simulated/floor/plating,/area/maintenance/portsolar) -"cuP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/maintenance{name = "Incinerator Access"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/incinerator) +"cuP" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass_engineering{name = "Mechanic Workshop"; req_access_txt = "70"; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "dark"},/area/engine/mechanic_workshop) "cuQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/aft) "cuR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating,/area/maintenance/aft) "cuS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/aft) @@ -6574,7 +6574,7 @@ "cwv" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/atmos) "cww" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/atmos) "cwx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 6},/turf/simulated/floor,/area/atmos) -"cwy" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass_atmos{name = "Distribution Loop"; req_access_txt = "24"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor,/area/atmos/distribution) +"cwy" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/structure/table/reinforced,/obj/machinery/door/window/westright{name = "Mechanic's Desk"; req_access = null; req_access_txt = "70"; req_one_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/cell_charger,/turf/simulated/floor{icon_state = "dark"},/area/engine/mechanic_workshop) "cwz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 9},/turf/simulated/floor,/area/atmos/distribution) "cwA" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6; level = 2},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/atmos/distribution) "cwB" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 9; tag = "icon-intact-y (NORTHWEST)"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/atmos/distribution) @@ -6725,7 +6725,7 @@ "czq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/engine/hardsuitstorage) "czr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/engine/hardsuitstorage) "czs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/engine/hardsuitstorage) -"czt" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/airlock/glass_engineering{name = "Storage"; req_access_txt = "11"; req_one_access_txt = null},/turf/simulated/floor,/area/engine/hardsuitstorage) +"czt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{icon_state = "door_locked"; locked = 1; name = "Assembly Line Maintenance"; req_access_txt = "32"},/turf/simulated/floor/plating,/area/assembly/assembly_line) "czu" = (/obj/machinery/camera{c_tag = "Engineering Chief Engineer's Office"; dir = 4; network = list("SS13")},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = -30; pixel_y = 0},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "czv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "czw" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) @@ -6783,15 +6783,15 @@ "cAw" = (/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,/area/maintenance/engi_shuttle) "cAx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cAy" = (/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/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) -"cAz" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{name = "Engineering Maintenance"; req_access_txt = "10"; req_one_access_txt = null},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/maintenance/engi_shuttle) +"cAz" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "32"; req_one_access_txt = "0"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engine/break_room) "cAA" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/engine/engineering) "cAB" = (/turf/simulated/wall/r_wall,/area/engine/mechanic_workshop) "cAC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/engine/chiefs_office) -"cAD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_command{name = "Chief Engineer"; req_access_txt = "56"},/turf/simulated/floor,/area/engine/chiefs_office) +"cAD" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_research{name = "Firing Range"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab) "cAE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/engine/chiefs_office) "cAF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/engine/chiefs_office) "cAG" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area) -"cAH" = (/obj/machinery/door/firedoor/border_only{layer = 2.6; name = "\improper Firelock South"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "10"; req_one_access_txt = null},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engine/break_room) +"cAH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "xeno_airlock_control"; name = "Xenobiology Access Button"; pixel_x = -28; pixel_y = 8; req_access_txt = "55"},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/research{autoclose = 0; frequency = 1379; icon_state = "door_locked"; id_tag = "xeno_airlock_interior"; locked = 1; name = "Xenobiology Internal Airlock"; req_access_txt = "55"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "cAI" = (/turf/simulated/wall/r_wall{desc = "A specially coated wall that resists temperatures for Science"; max_temperature = 1e+009; name = "Coated Reinforced Wall"},/area/engine/mechanic_workshop) "cAJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable,/turf/simulated/floor/plating,/area/engine/engineering) "cAK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable,/turf/simulated/floor/plating,/area/engine/engineering) @@ -6845,7 +6845,7 @@ "cBG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/engineering) "cBH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/engine/engineering) "cBI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/engine/engineering) -"cBJ" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/glass_engineering{name = "Engine Room"; req_access_txt = "10"; req_one_access_txt = null},/turf/simulated/floor,/area/engine/engineering) +"cBJ" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_engineering{icon_state = "door_locked"; locked = 1; name = "Assembly Line (KEEP OUT)"; req_access_txt = "32"; req_one_access_txt = "0"},/turf/simulated/floor{icon_state = "floorgrime"},/area/assembly/assembly_line) "cBK" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/engine/engineering) "cBL" = (/obj/machinery/camera{c_tag = "Engineering East"; network = list("SS13")},/obj/machinery/computer/security/telescreen{desc = "Used for watching the singularity chamber."; dir = 8; layer = 4; name = "Singularity Engine Telescreen"; network = list("Singularity"); pixel_x = 0; pixel_y = 30},/turf/simulated/floor,/area/engine/engineering) "cBM" = (/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/engine/engineering) @@ -6854,7 +6854,7 @@ "cBP" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/engine/engineering) "cBQ" = (/obj/machinery/power/smes{charge = 1e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/engine/engineering) "cBR" = (/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/engine,/area/engine/mechanic_workshop) -"cBS" = (/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/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "robotics"; name = "Robotics Lab Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/assembly/robotics) +"cBS" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/door/airlock/atmos{name = "Atmospherics"; req_access_txt = "24"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/atmos/control) "cBT" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig/atmos,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/atmos,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/atmos) "cBU" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 8},/turf/simulated/floor,/area/atmos) "cBV" = (/obj/machinery/atmospherics/binary/volume_pump/on{dir = 8; name = "Port to Filter"},/turf/simulated/floor,/area/atmos) @@ -6878,7 +6878,7 @@ "cCn" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology/lab) "cCo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/medical/virology/lab) "cCp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/virology/lab) -"cCq" = (/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/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 1; name = "hazard door north"},/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id = "rdlab"; name = "Research and Development Lab Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/toxins/lab) +"cCq" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "10"; req_one_access_txt = "0"},/turf/simulated/floor,/area/engine/equipmentstorage) "cCr" = (/obj/machinery/clonepod{biomass = 150},/turf/simulated/floor/engine,/area/toxins/xenobiology) "cCs" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/engine,/area/toxins/xenobiology) "cCt" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk12"; icon_state = "catwalk12"},/area/solar/starboard) @@ -6892,11 +6892,11 @@ "cCB" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/engine/engineering) "cCC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/engine/engineering) "cCD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/engine/engineering) -"cCE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_engineering{name = "Engine Room"; req_access_txt = "10"; req_one_access_txt = null},/turf/simulated/floor,/area/engine/engineering) +"cCE" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "10"; req_one_access_txt = "0"},/turf/simulated/floor,/area/engine/equipmentstorage) "cCF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/engine/engineering) "cCG" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor,/area/engine/engineering) "cCH" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = 0; pixel_y = -32; req_access_txt = "0"},/turf/simulated/floor,/area/engine/engineering) -"cCI" = (/obj/machinery/door/firedoor/border_only{dir = 1; name = "Firelock North"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/door/airlock/glass_engineering{name = "Engine Room"; req_access_txt = "10"; req_one_access_txt = null},/turf/simulated/floor,/area/engine/engineering) +"cCI" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass_atmos{name = "Distribution Loop"; req_access_txt = "24"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor,/area/atmos/distribution) "cCJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/engine/engineering) "cCK" = (/obj/machinery/power/smes{charge = 1e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering) "cCL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/engine/controlroom) @@ -6947,7 +6947,7 @@ "cDE" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/wall/r_wall,/area/engine/controlroom) "cDF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/wall/r_wall,/area/engine/break_room) "cDG" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/wall/r_wall,/area/engine/break_room) -"cDH" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Singularity"; layer = 2.7; name = "Singularity Blast Doors"; opacity = 0},/obj/machinery/door/airlock/glass_engineering{name = "Engine Room"; req_access_txt = "10"; req_one_access_txt = null},/turf/simulated/floor/plating,/area/engine/engineering) +"cDH" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/airlock/glass_engineering{name = "Storage"; req_access_txt = "11"; req_one_access_txt = null},/turf/simulated/floor,/area/engine/hardsuitstorage) "cDI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/atmos/control) "cDJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/atmos/control) "cDK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/atmos/control) @@ -6983,7 +6983,7 @@ "cEo" = (/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{icon_state = "dark"},/area/storage/secure) "cEp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/storage/secure) "cEq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/storage/secure) -"cEr" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{id = "Secure Storage"; name = "Secure Storage Blast Doors"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/storage/secure) +"cEr" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Engineering Maintenance"; req_access_txt = "10"; req_one_access_txt = null},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/maintenance/engi_shuttle) "cEs" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/engine/engineering) "cEt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/engine/engineering) "cEu" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/engine/engineering) @@ -7022,13 +7022,13 @@ "cFb" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/storage/secure) "cFc" = (/turf/simulated/floor{icon_state = "dark"},/area/storage/secure) "cFd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor{icon_state = "dark"},/area/storage/secure) -"cFe" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{id = "Secure Storage"; name = "Secure Storage Blast Doors"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/storage/secure) +"cFe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Chief Engineer"; req_access_txt = "56"},/turf/simulated/floor,/area/engine/chiefs_office) "cFf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/engine/engineering) "cFg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101; on = 1; pressure_checks = 1},/turf/simulated/floor,/area/engine/engineering) "cFh" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/engine/engineering) "cFi" = (/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,/area/engine/engineering) "cFj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/engine/engineering) -"cFk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Singularity"; layer = 2.7; name = "Singularity Blast Doors"; opacity = 0},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) +"cFk" = (/obj/machinery/door/firedoor{layer = 2.6; name = "\improper Firelock South"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/glass_engineering{name = "Engineering"; req_access_txt = "10"; req_one_access_txt = null},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engine/break_room) "cFl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/engine/engineering) "cFm" = (/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,/area/engine/engineering) "cFn" = (/obj/structure/particle_accelerator/end_cap,/turf/simulated/floor/plating,/area/engine/engineering) @@ -7296,7 +7296,7 @@ "cKp" = (/obj/item/weapon/screwdriver,/obj/structure/lattice,/turf/space,/area) "cKq" = (/obj/machinery/power/emitter{anchored = 1; dir = 8; state = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/camera/emp_proof{c_tag = "Engineering Singularity East"; dir = 8; network = list("Singularity","SS13")},/turf/simulated/floor/plating/airless,/area/engine/engineering) "cKr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/hallway/primary/aft) -"cKs" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/command{name = "MiniSat Access"; req_access_txt = "75"},/turf/simulated/floor,/area/engine/engineering) +"cKs" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/glass_engineering{name = "Engine Room"; req_access_txt = "10"; req_one_access_txt = null},/turf/simulated/floor,/area/engine/engineering) "cKt" = (/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/engine/engineering) "cKu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/engine/engineering) "cKv" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 10; initialize_directions = 10; level = 2},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10; initialize_directions = 10; level = 2},/turf/simulated/floor/plating,/area/atmos/distribution) @@ -7343,12 +7343,12 @@ "cLk" = (/obj/machinery/computer/teleporter,/turf/simulated/floor/plating,/area/aisat/entrance) "cLl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/aisat/entrance) "cLm" = (/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/aisat/entrance) -"cLn" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/hatch{name = "MiniSat Teleporter Room"; req_access_txt = "17;75"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/aisat/entrance) +"cLn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_engineering{name = "Engine Room"; req_access_txt = "10"; req_one_access_txt = null},/turf/simulated/floor,/area/engine/engineering) "cLo" = (/obj/machinery/bluespace_beacon,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/aisat/entrance) "cLp" = (/obj/machinery/teleport/station,/turf/simulated/floor/plating,/area/aisat/entrance) "cLq" = (/obj/machinery/light,/obj/structure/transit_tube/station{icon_state = "closed"; dir = 4},/obj/machinery/status_display{pixel_x = 0; pixel_y = -32},/turf/simulated/floor{tag = "icon-brown (EAST)"; icon_state = "brown"; dir = 4},/area/aisat/entrance) "cLr" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/aisat/entrance) -"cLs" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{dir = 8; id = "teledoor"; name = "AI Satellite Teleport Access"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/aisat/entrance) +"cLs" = (/obj/machinery/door/firedoor{dir = 1; name = "Firelock North"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/door/airlock/glass_engineering{name = "Engine Room"; req_access_txt = "10"; req_one_access_txt = null},/turf/simulated/floor,/area/engine/engineering) "cLt" = (/obj/machinery/door_control{desc = "A remote control-switch for the engineering security doors."; id = "teledoor"; name = "AI Satellite Teleport Shutters Control"; pixel_x = 0; pixel_y = -25; req_access_txt = "17;75"},/obj/effect/decal/warning_stripes/east,/obj/machinery/camera{c_tag = "Mini Satellite Teleporter"; dir = 1; network = list("SS13","MiniSat")},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/aisat/entrance) "cLu" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating,/area/aisat/entrance) "cLv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/aisat/entrance) @@ -7378,20 +7378,20 @@ "cLT" = (/turf/space,/area/syndicate_station/south) "cLU" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area) "cLV" = (/obj/structure/window/reinforced,/turf/space,/area) -"cLW" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/hatch{name = "MiniSat Antechamber"; req_access_txt = "75"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior) -"cLX" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/hatch{name = "MiniSat Antechamber"; req_access_txt = "75"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior) +"cLW" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Singularity"; layer = 2.7; name = "Singularity Blast Doors"; opacity = 0},/obj/machinery/door/airlock/glass_engineering{name = "Engine Room"; req_access_txt = "10"; req_one_access_txt = null},/turf/simulated/floor/plating,/area/engine/engineering) +"cLX" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{id = "Secure Storage"; name = "Secure Storage Blast Doors"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/storage/secure) "cLY" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/space,/area) "cLZ" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/door/window/eastright{base_state = "left"; dir = 1; icon_state = "left"; name = "MiniSat Walkway Access"; req_access_txt = "13;75"},/turf/simulated/floor/plating,/area/aisat) "cMa" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/window/eastright{dir = 1; name = "MiniSat Walkway Access"; req_access_txt = "13;75"},/turf/simulated/floor/plating,/area/aisat) "cMb" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/aisat) -"cMc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Exterior"; req_access_txt = "75"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior) +"cMc" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{id = "Secure Storage"; name = "Secure Storage Blast Doors"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/storage/secure) "cMd" = (/obj/machinery/light{dir = 1; on = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior) "cMe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior) "cMf" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior) "cMg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior) "cMh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/light_switch{pixel_y = 27},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior) "cMi" = (/obj/machinery/light{dir = 1; on = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/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 = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior) -"cMj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Exterior"; req_access_txt = "75"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior) +"cMj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Singularity"; layer = 2.7; name = "Singularity Blast Doors"; opacity = 0},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/engine/engineering) "cMk" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/aisat) "cMl" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/window/eastright{base_state = "left"; dir = 1; icon_state = "left"; name = "MiniSat Walkway Access"; req_access_txt = "13;75"},/turf/simulated/floor/plating,/area/aisat) "cMm" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10; initialize_directions = 10; level = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/door/window/eastright{dir = 1; name = "MiniSat Walkway Access"; req_access_txt = "13;75"},/turf/simulated/floor/plating,/area/aisat) @@ -7418,7 +7418,7 @@ "cMH" = (/obj/machinery/status_display{pixel_x = 0; pixel_y = -32},/obj/machinery/porta_turret{dir = 1},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior) "cMI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/bot/cleanbot{on = 0},/turf/simulated/floor{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/turret_protected/aisat_interior) "cMJ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/light/small{dir = 8},/obj/machinery/camera/motion{c_tag = "Mini Satellite Exterior North-East"; dir = 4; network = list("SS13","MiniSat")},/turf/simulated/floor/plating,/area/aisat) -"cMK" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/highsecurity{icon_state = "door_locked"; locked = 1; name = "AI Chamber"; req_access_txt = "16"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/ai) +"cMK" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{name = "MiniSat Access"; req_access_txt = "75"},/turf/simulated/floor,/area/engine/engineering) "cML" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/ai) "cMM" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/ai) "cMN" = (/obj/machinery/camera{c_tag = "Mini Satellite AI Chamber North"; dir = 2; network = list("SS13","MiniSat")},/turf/simulated/floor{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/turret_protected/ai) @@ -7470,13 +7470,13 @@ "cNH" = (/obj/machinery/power/terminal{dir = 8},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/effect/decal/warning_stripes/west,/turf/simulated/floor,/area/aisat/maintenance) "cNI" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor,/area/aisat/maintenance) "cNJ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/plating,/area/aisat) -"cNK" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Maintenance"; req_access_txt = "75"},/turf/simulated/floor,/area/aisat/maintenance) +"cNK" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{name = "MiniSat Teleporter Room"; req_access_txt = "17;75"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/aisat/entrance) "cNL" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 1},/turf/simulated/floor,/area/aisat/maintenance) "cNM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4},/obj/effect/decal/warning_stripes/northeastcorner,/turf/simulated/floor,/area/aisat/maintenance) "cNN" = (/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/effect/decal/warning_stripes/north,/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/aisat/maintenance) "cNO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/decal/warning_stripes/northwestcorner,/turf/simulated/floor,/area/aisat/maintenance) "cNP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor,/area/aisat/maintenance) -"cNQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Maintenance"; req_access_txt = "75"},/turf/simulated/floor,/area/aisat/maintenance) +"cNQ" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{dir = 8; id = "teledoor"; name = "AI Satellite Teleport Access"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/aisat/entrance) "cNR" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/aisat) "cNS" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating,/area/aisat) "cNT" = (/obj/machinery/alarm{dir = 4; hidden = 1; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/camera/motion{c_tag = "Mini Satellite Maintenance"; dir = 4; network = list("SS13","MiniSat")},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/aisat/maintenance) @@ -8252,7 +8252,7 @@ "dcJ" = (/obj/structure/table/woodentable,/obj/item/pizzabox,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) "dcK" = (/obj/structure/stool{pixel_y = 8},/obj/effect/landmark{name = "Syndicate-Spawn"},/obj/effect/decal/warning_stripes/east,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/syndicate_mothership) "dcL" = (/obj/machinery/computer/telecrystals/uplinker,/turf/unsimulated/floor{icon_state = "floor4"},/area/syndicate_mothership) -"dcM" = (/obj/structure/closet/cabinet,/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) +"dcM" = (/obj/structure/dresser,/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) "dcN" = (/obj/structure/table/woodentable,/obj/item/weapon/clipboard,/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "grimy"},/area/syndicate_mothership) "dcO" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "dcP" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) @@ -8322,7 +8322,7 @@ "deb" = (/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/obj/structure/flora/bush,/turf/unsimulated/floor{dir = 1; icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; tag = "icon-gravsnow_corner (WEST)"},/area/syndicate_mothership) "dec" = (/turf/unsimulated/floor{tag = "icon-dark"; icon_state = "dark"},/area/syndicate_mothership) "ded" = (/obj/machinery/recharge_station/upgraded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"dee" = (/obj/machinery/portable_atmospherics/canister/nitrogen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"dee" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "def" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "deg" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/table,/obj/machinery/cell_charger,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "deh" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/table,/obj/machinery/recharger{pixel_y = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) @@ -8355,7 +8355,7 @@ "deI" = (/obj/machinery/telecomms/allinone,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "deJ" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular,/obj/item/robot_parts/r_arm,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "deK" = (/obj/structure/closet/crate/internals,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/obj/item/weapon/tank/oxygen/red,/obj/item/clothing/mask/gas,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) -"deL" = (/obj/structure/closet/crate/medical,/obj/item/weapon/surgicaldrill,/obj/item/weapon/scalpel,/obj/item/weapon/reagent_containers/glass/bottle/morphine,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) +"deL" = (/obj/structure/closet/crate/medical,/obj/item/weapon/surgicaldrill,/obj/item/weapon/scalpel,/obj/item/weapon/reagent_containers/glass/bottle/morphine,/obj/item/weapon/storage/box/beakers,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "deM" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/syndicate_station/start) "deN" = (/obj/machinery/teleport/station,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) "deO" = (/obj/machinery/teleport/hub/upgraded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start) @@ -9271,8 +9271,8 @@ "dwo" = (/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome2) "dwp" = (/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1) "dwq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) -"dwr" = (/obj/machinery/vending/soda,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) -"dws" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/vending/soda,/turf/simulated/floor/wood,/area/bridge/meeting_room) +"dwr" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{name = "MiniSat Antechamber"; req_access_txt = "75"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior) +"dws" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{name = "MiniSat Antechamber"; req_access_txt = "75"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior) "dwt" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/bridge/meeting_room) "dwu" = (/obj/item/trash/cheesie,/turf/space,/area) "dwv" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s6"; icon_state = "swall_s6"; dir = 2},/area/derelict/ship) @@ -9669,7 +9669,7 @@ "dDW" = (/obj/structure/lattice,/turf/space,/area/AIsattele) "dDX" = (/obj/structure/closet,/turf/simulated/floor/plating/airless,/area/AIsattele) "dDY" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/traitor/empty) -"dDZ" = (/obj/machinery/vending/soda,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry) +"dDZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Exterior"; req_access_txt = "75"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior) "dEa" = (/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/simulated/floor/plating/airless,/area/AIsattele) "dEb" = (/turf/simulated/wall,/area/constructionsite/maintenance) "dEc" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/constructionsite/maintenance) @@ -9954,7 +9954,7 @@ "dJv" = (/turf/simulated/wall,/area/constructionsite/atmospherics) "dJw" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating/airless,/area/constructionsite/atmospherics) "dJx" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1443; input_tag = "d_air_in"; name = "Mixed Air Supply Control"; output_tag = "d_air_out"; pressure_setting = 2000; sensors = list("d_air_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating/airless,/area/constructionsite/atmospherics) -"dJy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating,/area/constructionsite/atmospherics) +"dJy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Exterior"; req_access_txt = "75"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior) "dJz" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; external_pressure_bound = 0; frequency = 1443; icon_state = "in"; id_tag = "d_air_out"; internal_pressure_bound = 2000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/constructionsite/atmospherics) "dJA" = (/obj/machinery/light/small{dir = 1},/obj/machinery/air_sensor{frequency = 1443; id_tag = "d_air_sensor"; output = 7},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/constructionsite/atmospherics) "dJB" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/plating/airless,/area/constructionsite/atmospherics) @@ -10029,9 +10029,9 @@ "dKS" = (/obj/machinery/light/small,/obj/structure/transit_tube,/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored) "dKT" = (/obj/structure/transit_tube{icon_state = "W-SE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored) "dKU" = (/obj/structure/transit_tube{icon_state = "D-SW"},/turf/simulated/mineral,/area/mine/unexplored) -"dKV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/space,/area/research_outpost/hallway) -"dKW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway) -"dKX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway) +"dKV" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/highsecurity{icon_state = "door_locked"; locked = 1; name = "AI Chamber"; req_access_txt = "16"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/ai) +"dKW" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Maintenance"; req_access_txt = "75"},/turf/simulated/floor,/area/aisat/maintenance) +"dKX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Maintenance"; req_access_txt = "75"},/turf/simulated/floor,/area/aisat/maintenance) "dKY" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "NE-SW"},/turf/space,/area) "dKZ" = (/obj/structure/transit_tube{icon_state = "D-NW"},/obj/structure/lattice,/turf/space,/area) "dLa" = (/turf/simulated/wall/r_wall,/area/research_outpost/maintstore1) @@ -10039,10 +10039,10 @@ "dLc" = (/obj/structure/transit_tube{icon_state = "NW-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/maintstore1) "dLd" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/mineral,/area/mine/unexplored) "dLe" = (/obj/structure/transit_tube{icon_state = "E-SW"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored) -"dLf" = (/obj/structure/transit_tube,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating/airless/asteroid,/area/research_outpost/hallway) +"dLf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating,/area/constructionsite/atmospherics) "dLg" = (/obj/structure/transit_tube/station,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/research_outpost/hallway) "dLh" = (/obj/structure/transit_tube,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/research_outpost/hallway) -"dLi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/transit_tube,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway) +"dLi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway) "dLj" = (/obj/structure/transit_tube{icon_state = "W-SE"},/obj/structure/lattice,/turf/space,/area) "dLk" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "D-SW"},/turf/space,/area) "dLl" = (/obj/structure/transit_tube{icon_state = "S-NE"},/obj/structure/lattice,/turf/space,/area) @@ -10081,14 +10081,14 @@ "dLS" = (/obj/structure/closet/crate/hydroponics,/obj/item/weapon/shovel/spade,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/minihoe,/obj/item/weapon/reagent_containers/spray/plantbgone{pixel_x = 13; pixel_y = 5},/obj/item/weedkiller/triclopyr,/obj/item/weapon/reagent_containers/glass/fertilizer/ez,/turf/simulated/floor/plating,/area/research_outpost/maintstore1) "dLT" = (/obj/machinery/light/small,/obj/structure/closet/walllocker/emerglocker/north{dir = 1; pixel_y = -32},/turf/simulated/floor/plating,/area/research_outpost/maintstore1) "dLU" = (/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/plating,/area/research_outpost/maintstore1) -"dLV" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/maintenance{name = "Auxiliary Storage"; req_access_txt = "0"; req_one_access_txt = "65;12"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/maintstore1) +"dLV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway) "dLW" = (/turf/simulated/floor,/area/research_outpost/maintstore1) "dLX" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/research_outpost/maintstore1) "dLY" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/camera{c_tag = "Research Outpost Auxiliary Storage"; dir = 8; network = list("Research Outpost")},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor,/area/research_outpost/maintstore1) "dLZ" = (/obj/structure/table,/turf/simulated/floor/carpet,/area/research_outpost/hallway) "dMa" = (/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/carpet,/area/research_outpost/hallway) -"dMb" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock{id_tag = "rminingdorm1"; name = "Dorm 1"},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/research_outpost/hallway) -"dMc" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock{id_tag = "rdorm2"; name = "Dorm 2"},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/research_outpost/hallway) +"dMb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/space,/area/research_outpost/hallway) +"dMc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/transit_tube,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway) "dMd" = (/obj/structure/transit_tube{icon_state = "N-S"},/obj/structure/lattice,/turf/space,/area) "dMe" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "D-SE"},/turf/space,/area) "dMf" = (/obj/structure/transit_tube{icon_state = "E-SW"},/obj/structure/lattice,/turf/space,/area) @@ -10104,16 +10104,16 @@ "dMp" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/research_outpost/hallway) "dMq" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 2; icon_state = "whitecorner"},/area/research_outpost/hallway) "dMr" = (/turf/simulated/wall/r_wall,/area/research_outpost/atmos) -"dMs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dMt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dMu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) +"dMs" = (/obj/structure/transit_tube,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating/airless/asteroid,/area/research_outpost/hallway) +"dMt" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/maintenance{name = "Auxiliary Storage"; req_access_txt = "0"; req_one_access_txt = "65;12"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/maintstore1) +"dMu" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock{id_tag = "rdorm2"; name = "Dorm 2"},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/research_outpost/hallway) "dMv" = (/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/abandoned) "dMw" = (/obj/machinery/door/airlock/external,/turf/simulated/floor,/area/mine/abandoned) "dMx" = (/obj/structure/lattice,/obj/structure/transit_tube{icon_state = "S-NE"},/turf/space,/area) "dMy" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/obj/item/stack/nanopaste,/obj/item/stack/nanopaste,/obj/item/stack/nanopaste,/turf/simulated/floor{icon_state = "dark"},/area/research_outpost/spectro) "dMz" = (/obj/structure/stool,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/spectro) "dMA" = (/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/research_outpost/spectro) -"dMB" = (/obj/machinery/door/airlock/research{name = "Spectrometry Lab Sample Preparation"; req_access_txt = "65"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/spectro) +"dMB" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock{id_tag = "rminingdorm1"; name = "Dorm 1"},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/research_outpost/hallway) "dMC" = (/turf/simulated/floor{icon_state = "white"},/area/research_outpost/sample) "dMD" = (/obj/structure/sign/nosmoking_2{pixel_y = 32},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/sample) "dME" = (/obj/structure/table,/obj/machinery/light{dir = 1},/obj/machinery/reagentgrinder,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/sample) @@ -10134,7 +10134,7 @@ "dMT" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister,/obj/machinery/camera{c_tag = "Research Outpost Atmospherics"; dir = 2; network = list("Research Outpost")},/turf/simulated/floor/plating,/area/research_outpost/atmos) "dMU" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/research_outpost/atmos) "dMV" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/research_outpost/atmos) -"dMW" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) +"dMW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) "dMX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned) "dMY" = (/turf/simulated/floor,/area/mine/abandoned) "dMZ" = (/obj/machinery/radiocarbon_spectrometer,/turf/simulated/floor{icon_state = "dark"},/area/research_outpost/spectro) @@ -10151,7 +10151,7 @@ "dNk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/wall,/area/research_outpost/hallway) "dNl" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/curtain/open/shower,/turf/simulated/floor{icon_state = "showroomfloor"},/area/research_outpost/hallway) "dNm" = (/obj/machinery/door_control{id = "rbath"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 0; pixel_y = -25; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/research_outpost/hallway) -"dNn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock{id_tag = "rbath"; name = "Bathroom"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/research_outpost/hallway) +"dNn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) "dNo" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) "dNp" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) "dNq" = (/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 5; level = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) @@ -10171,7 +10171,7 @@ "dNE" = (/obj/machinery/light/small{dir = 4},/obj/machinery/power/apc{dir = 4; name = "Sample Preparation APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/sample) "dNF" = (/turf/simulated/wall/r_wall,/area/research_outpost/anomaly) "dNG" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall/r_wall,/area/research_outpost/anomaly) -"dNH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials Loading"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/anomaly) +"dNH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) "dNI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/closet/walllocker/emerglocker/west,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) "dNJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) "dNK" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{dir = 4},/obj/structure/sign/nosmoking_1{pixel_x = -32},/turf/simulated/floor/plating,/area/research_outpost/atmos) @@ -10190,21 +10190,21 @@ "dNX" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/camera{c_tag = "Research Outpost Sample Preparation"; dir = 1; network = list("Research Outpost")},/obj/item/weapon/reagent_containers/glass/beaker/water,/obj/item/weapon/reagent_containers/glass/beaker/fuel,/obj/item/weapon/reagent_containers/glass/bottle/toxin,/obj/item/weapon/reagent_containers/glass/beaker/sulphuric{name = "beaker 'sulphuric acid'"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 3; pixel_x = 2; pixel_y = 2},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/research_outpost/sample) "dNY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/research_outpost/sample) "dNZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "whiteblue"},/area/research_outpost/sample) -"dOa" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials Sample Preparation"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly) +"dOa" = (/obj/machinery/door/airlock/research{name = "Spectrometry Lab Sample Preparation"; req_access_txt = "65"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/spectro) "dOb" = (/obj/machinery/power/apc{dir = 1; name = "Anomalous Materials APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/research_outpost/anomaly) "dOc" = (/obj/machinery/alarm{dir = 2; pixel_y = 25},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/research_outpost/anomaly) "dOd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/research_outpost/anomaly) "dOe" = (/obj/structure/sign/nosmoking_2{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/research_outpost/anomaly) "dOf" = (/obj/machinery/light{dir = 1},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 6; icon_state = "whitepurple"},/area/research_outpost/anomaly) "dOg" = (/obj/machinery/conveyor{dir = 1; id = "anolaser"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/research_outpost/anomaly) -"dOh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.6; name = "Firelock North"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) -"dOi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/door/firedoor/border_only{dir = 1; layer = 2.6; name = "Firelock North"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) +"dOh" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) +"dOi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock{id_tag = "rbath"; name = "Bathroom"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/research_outpost/hallway) "dOj" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 4},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plating,/area/research_outpost/atmos) "dOk" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan,/turf/simulated/floor/plating,/area/research_outpost/atmos) "dOl" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; layer = 2.4; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 8; initialize_directions = 11; level = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) "dOm" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/visible/purple,/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dOn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) -"dOo" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) +"dOn" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials Loading"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/anomaly) +"dOo" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials Sample Preparation"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly) "dOp" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (EAST)"; icon_state = "propulsion"; dir = 4},/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"; tag = ""},/turf/simulated/floor/plating/airless,/area) "dOq" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area) "dOr" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area) @@ -10215,9 +10215,9 @@ "dOw" = (/turf/simulated/mineral/random,/area/mine/explored) "dOx" = (/turf/space,/area/mine/explored) "dOy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/hallway) -"dOz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Spectrometry Lab"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/spectro) +"dOz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/door/firedoor{dir = 1; layer = 2.6; name = "Firelock North"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) "dOA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/sample) -"dOB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Sample Preparation"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/sample) +"dOB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor{dir = 1; layer = 2.6; name = "Firelock North"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) "dOC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/research_outpost/sample) "dOD" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whitepurple"},/area/research_outpost/anomaly) "dOE" = (/obj/structure/table,/obj/item/weapon/lighter/random,/obj/item/weapon/crowbar,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly) @@ -10227,7 +10227,7 @@ "dOI" = (/obj/machinery/conveyor{dir = 1; id = "anolaser"},/obj/structure/plasticflaps,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/research_outpost/anomaly) "dOJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/research_outpost/hallway) "dOK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) -"dOL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/atmos{name = "Outpost Atmospherics"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor/plating,/area/research_outpost/atmos) +"dOL" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) "dOM" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/floor/plating,/area/research_outpost/atmos) "dON" = (/obj/machinery/light/small,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/visible/cyan,/turf/simulated/floor/plating,/area/research_outpost/atmos) "dOO" = (/obj/machinery/meter,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/visible/cyan,/turf/simulated/floor/plating,/area/research_outpost/atmos) @@ -10248,7 +10248,7 @@ "dPd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/alarm{dir = 2; pixel_y = 25},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dPe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dPf" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/structure/closet/walllocker/emerglocker/north,/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/hallway) -"dPg" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock East"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/research_outpost/hallway) +"dPg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos) "dPh" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/research_outpost/hallway) "dPi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/sign/chemistry{desc = "A warning sign which reads 'SAMPLE PREPARATION'"; name = "\improper SAMPLE PREPARATION"; pixel_y = 32},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/research_outpost/hallway) "dPj" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{dir = 4; icon_state = "whitepurple"},/area/research_outpost/anomaly) @@ -10261,7 +10261,7 @@ "dPq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/research_outpost/hallway) "dPr" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) "dPs" = (/turf/simulated/wall/r_wall,/area/research_outpost/power) -"dPt" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_atmos{name = "Outpost Atmospherics"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor,/area/research_outpost/power) +"dPt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Spectrometry Lab"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/spectro) "dPu" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 5},/turf/simulated/wall/r_wall,/area/research_outpost/power) "dPv" = (/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/wall/r_wall,/area/research_outpost/power) "dPw" = (/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored) @@ -10270,7 +10270,7 @@ "dPz" = (/obj/item/stack/rods,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating,/area/mine/abandoned) "dPA" = (/obj/item/stack/rods,/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) "dPB" = (/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) -"dPC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway) +"dPC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Sample Preparation"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/sample) "dPD" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dPE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dPF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) @@ -10280,17 +10280,17 @@ "dPJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dPK" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dPL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) -"dPM" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock East"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/hallway) +"dPM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/atmos{name = "Outpost Atmospherics"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor/plating,/area/research_outpost/atmos) "dPN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10; initialize_directions = 10; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/research_outpost/hallway) "dPO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/research_outpost/hallway) -"dPP" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly) +"dPP" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock East"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor{dir = 2; icon_state = "barber"},/area/research_outpost/hallway) "dPQ" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "whitepurplecorner"},/area/research_outpost/anomaly) "dPR" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/research_outpost/anomaly) "dPS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/research_outpost/anomaly) "dPT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/research_outpost/anomaly) "dPU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/research_outpost/anomaly) "dPV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/research_outpost/anomaly) -"dPW" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly) +"dPW" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_atmos{name = "Outpost Atmospherics"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor,/area/research_outpost/power) "dPX" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor{dir = 8; icon_state = "whitepurple"},/area/research_outpost/hallway) "dPY" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) "dPZ" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/light/small{dir = 1},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plating,/area/research_outpost/power) @@ -10302,7 +10302,7 @@ "dQf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/abandoned) "dQg" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) "dQh" = (/obj/structure/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned) -"dQi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway) +"dQi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway) "dQj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dQk" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/wood,/area/research_outpost/hallway) "dQl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/wood,/area/research_outpost/hallway) @@ -10322,7 +10322,7 @@ "dQz" = (/obj/machinery/camera{c_tag = "Research Outpost Anomalous Materials Lab"; dir = 8; network = list("Research Outpost")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly) "dQA" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/structure/sign/science{desc = "A warning sign which reads 'ANOMALOUS MATERIALS'"; name = "\improper ANOMALOUS MATERIALS"; pixel_x = -32},/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/research_outpost/hallway) "dQB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteyellow"},/area/research_outpost/hallway) -"dQC" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/engineering{name = "Power substation"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor/plating,/area/research_outpost/power) +"dQC" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly) "dQD" = (/turf/simulated/floor/plating,/area/research_outpost/power) "dQE" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable,/turf/simulated/floor/plating,/area/research_outpost/power) "dQF" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/research_outpost/power) @@ -10334,22 +10334,22 @@ "dQL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dQM" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) "dQN" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) -"dQO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway) +"dQO" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock East"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/hallway) "dQP" = (/obj/structure/table,/obj/item/weapon/folder,/turf/simulated/floor/wood,/area/research_outpost/hallway) "dQQ" = (/obj/structure/table,/obj/item/device/camera,/obj/item/weapon/stamp/granted,/turf/simulated/floor/wood,/area/research_outpost/hallway) "dQR" = (/turf/simulated/floor/wood,/area/research_outpost/hallway) "dQS" = (/obj/machinery/vending/snack,/obj/machinery/light{dir = 4},/turf/simulated/floor/wood,/area/research_outpost/hallway) -"dQT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) -"dQU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/hallway) -"dQV" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/research{name = "Anomalous Materials Locker Room"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly) -"dQW" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly) +"dQT" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly) +"dQU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway) +"dQV" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/engineering{name = "Power substation"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor/plating,/area/research_outpost/power) +"dQW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway) "dQX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/camera{c_tag = "Research Outpost Hallway Engineering"; dir = 4; network = list("Research Outpost")},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dQY" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowcorner"},/area/research_outpost/hallway) "dQZ" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/machinery/power/apc{dir = 8; name = "Outpost Power APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/research_outpost/power) "dRa" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/research_outpost/power) "dRb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/research_outpost/power) "dRc" = (/obj/machinery/portable_atmospherics/scrubber,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/research_outpost/power) -"dRd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/power) +"dRd" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/research{name = "Anomalous Materials Locker Room"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly) "dRe" = (/obj/machinery/mass_driver{dir = 4; id = "Research Outpost"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored) "dRf" = (/obj/item/stack/rods,/obj/structure/lattice,/turf/space,/area) "dRg" = (/obj/item/weapon/shard,/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned) @@ -10381,7 +10381,7 @@ "dRG" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; layer = 2.4; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/research_outpost/power) "dRH" = (/obj/machinery/conveyor_switch{id = "archgunc"},/turf/simulated/floor/plating,/area/research_outpost/power) "dRI" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plating,/area/research_outpost/power) -"dRJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/power) +"dRJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{dir = 4; icon_state = "whitebluecorner"},/area/research_outpost/hallway) "dRK" = (/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dRL" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plating,/area/exploration/methlab) "dRM" = (/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned) @@ -10391,15 +10391,15 @@ "dRQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned) "dRR" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned) "dRS" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/wall,/area/research_outpost/entry) -"dRT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) -"dRU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) -"dRV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/research_outpost/entry) +"dRT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) +"dRU" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Anomalous Materials"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly) +"dRV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/power) "dRW" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "research_outpost_hatch"; locked = 1; name = "Research Outpost Dock Airlock"; req_access_txt = "13"},/turf/simulated/floor/plating,/area/research_outpost/entry) -"dRX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/research_outpost/entry) -"dRY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) +"dRX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/power) +"dRY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) "dRZ" = (/obj/structure/sign/science,/turf/simulated/wall,/area/research_outpost/entry) -"dSa" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_research{name = "Outpost Primary Access"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/entry) -"dSb" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_research{name = "Outpost Primary Access"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/entry) +"dSa" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/research_outpost/entry) +"dSb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) "dSc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/wood,/area/research_outpost/hallway) "dSd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/wood,/area/research_outpost/hallway) "dSe" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) @@ -10417,7 +10417,7 @@ "dSq" = (/obj/machinery/driver_button{id = "Research Outpost"; pixel_x = 6; pixel_y = -26},/obj/machinery/conveyor{dir = 4; id = "archgunc"},/turf/simulated/floor/plating,/area/research_outpost/power) "dSr" = (/obj/structure/sign/deathsposal{pixel_x = 32},/obj/machinery/disposal/deliveryChute{dir = 8; name = "disposal inlet"},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plating,/area/research_outpost/power) "dSs" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall/r_wall,/area/research_outpost/power) -"dSt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/transit_tube{icon_state = "N-SE"},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway) +"dSt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) "dSu" = (/obj/structure/transit_tube{icon_state = "D-SW"},/turf/simulated/wall/r_wall,/area/research_outpost/hallway) "dSv" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/hallway) "dSw" = (/obj/structure/transit_tube{icon_state = "D-SW"},/turf/space,/area) @@ -10426,7 +10426,7 @@ "dSz" = (/obj/effect/gibspawner/robot,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned) "dSA" = (/obj/effect/gibspawner/human,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) "dSB" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/effect/decal/remains/xeno,/turf/simulated/floor/plating,/area/mine/abandoned) -"dSC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) +"dSC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/research_outpost/entry) "dSD" = (/obj/machinery/computer/shuttle_control/research{req_access_txt = "65"},/turf/simulated/floor{icon_state = "bot"},/area/research_outpost/entry) "dSE" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/research_outpost/entry) "dSF" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "research_outpost_dock"; pixel_y = 30; req_one_access_txt = "13;65"; tag_door = "research_outpost_hatch"},/turf/simulated/floor,/area/research_outpost/entry) @@ -10453,16 +10453,16 @@ "dTa" = (/obj/structure/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/color/latex,/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/research_outpost/anomaly) "dTb" = (/obj/machinery/door/window/westleft{dir = 2; name = "Monkey Pen"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly) "dTc" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/anomaly) -"dTd" = (/obj/machinery/door/firedoor/border_only{layer = 2.6; name = "\improper Firelock South"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) -"dTe" = (/obj/machinery/door/firedoor/border_only{layer = 2.6; name = "\improper Firelock South"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) -"dTf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/engineering{name = "Power substation"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor/plating,/area/research_outpost/power) +"dTd" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_research{name = "Outpost Primary Access"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/entry) +"dTe" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_research{name = "Outpost Primary Access"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/entry) +"dTf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/transit_tube{icon_state = "N-SE"},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway) "dTg" = (/obj/structure/transit_tube{icon_state = "D-NE"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/research_outpost/hallway) "dTh" = (/obj/structure/transit_tube{icon_state = "E-NW"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/research_outpost/hallway) "dTi" = (/obj/structure/transit_tube/station,/obj/structure/sign/securearea{desc = "A warning sign which reads 'INTERNALS REQUIRED'."; name = "INTERNALS REQUIRED"; pixel_x = 32; pixel_y = 32},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/research_outpost/hallway) "dTj" = (/obj/structure/transit_tube{icon_state = "W-NE"},/turf/simulated/wall/r_wall,/area/research_outpost/harvesting) "dTk" = (/obj/structure/transit_tube{icon_state = "D-NW"},/turf/simulated/wall/r_wall,/area/research_outpost/harvesting) "dTl" = (/turf/simulated/wall/r_wall,/area/research_outpost/harvesting) -"dTm" = (/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/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/harvesting) +"dTm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) "dTn" = (/obj/structure/transit_tube{icon_state = "D-NE"},/turf/simulated/wall/r_wall,/area/research_outpost/harvesting) "dTo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned) "dTp" = (/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/mine/abandoned) @@ -10472,23 +10472,23 @@ "dTt" = (/obj/machinery/door/airlock,/turf/simulated/floor,/area/mine/abandoned) "dTu" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned) "dTv" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned) -"dTw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/transit_tube{icon_state = "N-SE"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) +"dTw" = (/obj/machinery/door/firedoor{layer = 2.6; name = "\improper Firelock South"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dTx" = (/obj/structure/transit_tube{icon_state = "D-SW"},/turf/simulated/floor{icon_state = "bot"},/area/research_outpost/entry) "dTy" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/research_outpost/entry) -"dTz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_research{name = "Research Shuttle Dock"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/entry) +"dTz" = (/obj/machinery/door/firedoor{layer = 2.6; name = "\improper Firelock South"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dTA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor,/area/research_outpost/entry) "dTB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/research_outpost/entry) "dTC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor,/area/research_outpost/entry) -"dTD" = (/obj/machinery/door/firedoor/border_only{dir = 8; layer = 2.6; name = "Firelock West"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_medical{id_tag = ""; name = "Medbay"; req_access_txt = "0"; req_one_access_txt = "65;5"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/med) +"dTD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/engineering{name = "Power substation"; req_access_txt = "0"; req_one_access_txt = "65;10;24"},/turf/simulated/floor/plating,/area/research_outpost/power) "dTE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/med) "dTF" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/med) "dTG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/conveyor_switch{id = "anotempload"; name = "conveyor switch"; pixel_x = 0; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage) "dTH" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage) "dTI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage) -"dTJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Temporary Storage"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage) +"dTJ" = (/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/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/harvesting) "dTK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) "dTL" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) -"dTM" = (/obj/machinery/door/firedoor/border_only{dir = 8; layer = 2.6; name = "Firelock West"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) +"dTM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/transit_tube{icon_state = "N-SE"},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) "dTN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dTO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dTP" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) @@ -10501,7 +10501,7 @@ "dTW" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 4; icon_state = "whiteyellowcorner"},/area/research_outpost/hallway) "dTX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "whiteyellow"},/area/research_outpost/hallway) "dTY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{dir = 1; icon_state = "whiteyellowcorner"},/area/research_outpost/hallway) -"dTZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 8; layer = 2.6; name = "Firelock West"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/machinery/camera{c_tag = "Research Outpost Hallway Starboard"; dir = 2; network = list("Research Outpost"); pixel_x = 24},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) +"dTZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_research{name = "Research Shuttle Dock"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/entry) "dUa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/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/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{dir = 4; icon_state = "whitepurple"},/area/research_outpost/hallway) "dUb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/wall/r_wall,/area/research_outpost/harvesting) "dUc" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera{c_tag = "Research Outpost Exotic Particles Airlock"; dir = 2; network = list("Research Outpost")},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/research_outpost/harvesting) @@ -10522,7 +10522,7 @@ "dUr" = (/obj/structure/table,/turf/simulated/floor,/area/mine/abandoned) "dUs" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/abandoned) "dUt" = (/obj/structure/rack,/turf/simulated/floor,/area/mine/abandoned) -"dUu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/transit_tube{icon_state = "D-NE"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) +"dUu" = (/obj/machinery/door/firedoor{dir = 8; layer = 2.6; name = "Firelock West"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_medical{id_tag = ""; name = "Medbay"; req_access_txt = "0"; req_one_access_txt = "65;5"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/med) "dUv" = (/obj/structure/transit_tube{icon_state = "S-NW"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/research_outpost/entry) "dUw" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor,/area/research_outpost/entry) "dUx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera{c_tag = "Research Outpost Shuttle Dock"; dir = 8; network = list("Research Outpost")},/turf/simulated/floor{dir = 4; icon_state = "arrival"},/area/research_outpost/entry) @@ -10539,7 +10539,7 @@ "dUI" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/research_outpost/tempstorage) "dUJ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5; level = 1},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) "dUK" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) -"dUL" = (/obj/machinery/door/firedoor/border_only{dir = 8; layer = 2.6; name = "Firelock West"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) +"dUL" = (/obj/machinery/door/firedoor{dir = 8; layer = 2.6; name = "Firelock West"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dUM" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) "dUN" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1; pressure_checks = 1},/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/research_outpost/hallway) "dUO" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/sign/examroom{desc = "A guidance sign which reads 'ISOLATION ROOM ONE'"; name = "\improper ISOLATION ROOM ONE"; pixel_y = -32},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/research_outpost/hallway) @@ -10550,14 +10550,14 @@ "dUT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/research_outpost/hallway) "dUU" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/sign/examroom{desc = "A guidance sign which reads 'ISOLATION ROOM THREE'"; name = "\improper ISOLATION ROOM THREE"; pixel_y = -32},/turf/simulated/floor{dir = 2; icon_state = "whitepurple"},/area/research_outpost/hallway) "dUV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor{dir = 8; icon_state = "whitepurplecorner"},/area/research_outpost/hallway) -"dUW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 8; layer = 2.6; name = "Firelock West"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) +"dUW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Temporary Storage"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage) "dUX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/obj/machinery/firealarm{pixel_y = -24},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dUY" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/sign/biohazard{pixel_y = -32},/turf/simulated/floor{dir = 2; icon_state = "whitepurplecorner"},/area/research_outpost/hallway) "dUZ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "whitepurple"},/area/research_outpost/hallway) -"dVa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Exotic Particles Collection"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/harvesting) +"dVa" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 8; layer = 2.6; name = "Firelock West"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/machinery/camera{c_tag = "Research Outpost Hallway Starboard"; dir = 2; network = list("Research Outpost"); pixel_x = 24},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dVb" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/research_outpost/harvesting) "dVc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/research_outpost/harvesting) -"dVd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/external{name = "Access Airlock"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/harvesting) +"dVd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/transit_tube{icon_state = "D-NE"},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) "dVe" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/research_outpost/harvesting) "dVf" = (/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/harvesting) "dVg" = (/obj/structure/table,/obj/item/weapon/anodevice{pixel_x = 3; pixel_y = 3},/obj/item/weapon/anodevice,/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/harvesting) @@ -10568,7 +10568,7 @@ "dVl" = (/obj/structure/table,/turf/simulated/floor/airless,/area/mine/abandoned) "dVm" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned) "dVn" = (/turf/simulated/mineral,/area/mine/explored) -"dVo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) +"dVo" = (/obj/machinery/door/firedoor{dir = 8; layer = 2.6; name = "Firelock West"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor{dir = 5; icon_state = "whitehall"},/area/research_outpost/hallway) "dVp" = (/obj/structure/transit_tube/station{icon_state = "closed"; dir = 4},/obj/structure/transit_tube_pod,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/research_outpost/entry) "dVq" = (/obj/machinery/hologram/holopad,/obj/machinery/light,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "bluecorner"},/area/research_outpost/entry) "dVr" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/obj/machinery/alarm{dir = 1; pixel_y = -25},/turf/simulated/floor{dir = 2; icon_state = "arrival"},/area/research_outpost/entry) @@ -10585,7 +10585,7 @@ "dVC" = (/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/research_outpost/tempstorage) "dVD" = (/obj/machinery/conveyor{dir = 9; id = "anotempload"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/research_outpost/tempstorage) "dVE" = (/turf/simulated/wall/r_wall,/area/research_outpost/maint) -"dVF" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;65"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor/plating,/area/research_outpost/maint) +"dVF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Exotic Particles Collection"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/harvesting) "dVG" = (/turf/simulated/wall/r_wall,/area/research_outpost/iso1) "dVH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/iso1) "dVI" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Isolation room one"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/iso1) @@ -10595,10 +10595,10 @@ "dVM" = (/turf/simulated/wall/r_wall,/area/research_outpost/iso3) "dVN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/iso3) "dVO" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Isolation Room Three"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/iso3) -"dVP" = (/obj/machinery/door/airlock/maintenance{name = "Maintenance Storage"; req_access_txt = "0"; req_one_access_txt = "12;65"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor/plating,/area/research_outpost/maintstore2) +"dVP" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 8; layer = 2.6; name = "Firelock West"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway) "dVQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/maintstore2) "dVR" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/wall/r_wall,/area/research_outpost/longtermstorage) -"dVS" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Long Term Storage"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/longtermstorage) +"dVS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/external{name = "Access Airlock"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/harvesting) "dVT" = (/obj/machinery/alarm{dir = 1; pixel_y = -25},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/turf/simulated/floor,/area/research_outpost/harvesting) "dVU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/research_outpost/harvesting) "dVV" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/research_outpost/harvesting) @@ -10610,14 +10610,14 @@ "dWb" = (/turf/simulated/wall,/area/mine/unexplored) "dWc" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'INTERNALS REQUIRED'."; name = "INTERNALS REQUIRED"; pixel_x = -32; pixel_y = 0},/turf/space,/area) "dWd" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/wall,/area/research_outpost/entry) -"dWe" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/transit_tube{icon_state = "N-SW"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) -"dWf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) +"dWe" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) +"dWf" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;65"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor/plating,/area/research_outpost/maint) "dWg" = (/turf/simulated/wall,/area/research_outpost/entry) "dWh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{level = 1},/turf/simulated/wall,/area/research_outpost/entry) -"dWi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_mining{name = "Expedition Prep"; req_access_txt = "65"},/turf/simulated/floor/plating,/area/research_outpost/entry) +"dWi" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Long Term Storage"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/longtermstorage) "dWj" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/wall,/area/research_outpost/entry) "dWk" = (/turf/simulated/wall,/area/research_outpost/tempstorage) -"dWl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Temporary Storage Loading"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage) +"dWl" = (/obj/machinery/door/airlock/maintenance{name = "Maintenance Storage"; req_access_txt = "0"; req_one_access_txt = "12;65"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor/plating,/area/research_outpost/maintstore2) "dWm" = (/obj/structure/plasticflaps/mining,/obj/machinery/conveyor{dir = 2; id = "anotempload"},/turf/simulated/floor/plating,/area/research_outpost/maint) "dWn" = (/obj/machinery/conveyor{dir = 5; id = "anosample"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/research_outpost/maint) "dWo" = (/obj/machinery/conveyor{dir = 4; id = "anosample"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_y = 32},/turf/simulated/floor/plating,/area/research_outpost/maint) @@ -10659,11 +10659,11 @@ "dWY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/research_outpost/gearstore) "dWZ" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor,/area/research_outpost/gearstore) "dXa" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor,/area/research_outpost/gearstore) -"dXb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_mining{name = "Loading area"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/tempstorage) +"dXb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/transit_tube{icon_state = "N-SW"},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) "dXc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/camera{c_tag = "Research Outpost Loading Area"; dir = 2; network = list("Research Outpost")},/turf/simulated/floor,/area/research_outpost/tempstorage) "dXd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/power/apc{dir = 1; name = "Temporary Storage APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/research_outpost/tempstorage) "dXe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; level = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/research_outpost/tempstorage) -"dXf" = (/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;65"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/research_outpost/maint) +"dXf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry) "dXg" = (/obj/machinery/conveyor{dir = 2; id = "anotempload"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/research_outpost/maint) "dXh" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'MOVING PARTS'."; name = "\improper MOVING PARTS"; pixel_y = 32},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/research_outpost/maint) "dXi" = (/obj/machinery/conveyor{dir = 1; id = "anosample"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/research_outpost/maint) @@ -10732,7 +10732,7 @@ "dYt" = (/obj/structure/closet/excavation,/obj/machinery/status_display{layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor,/area/research_outpost/gearstore) "dYu" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor,/area/research_outpost/gearstore) "dYv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/turf/simulated/floor,/area/research_outpost/gearstore) -"dYw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/airlock/glass_mining{name = "Equipment storage"; req_access_txt = "47"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/research_outpost/gearstore) +"dYw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/research{name = "Temporary Storage Loading"; req_access_txt = "65"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/tempstorage) "dYx" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor,/area/research_outpost/gearstore) "dYy" = (/turf/simulated/floor,/area/research_outpost/gearstore) "dYz" = (/obj/machinery/mineral/unloading_machine,/turf/simulated/floor{icon_state = "floorgrime"},/area/research_outpost/tempstorage) @@ -10825,8 +10825,8 @@ "eai" = (/obj/machinery/door/window/westleft,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/explored) "eaj" = (/obj/structure/transit_tube/station{dir = 8; icon_state = "closed"; tag = "icon-closed (EAST)"},/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/mine/explored) "eak" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/space,/area) -"eal" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/gearstore) -"eam" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/gearstore) +"eal" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_mining{name = "Expedition Prep"; req_access_txt = "65"},/turf/simulated/floor/plating,/area/research_outpost/entry) +"eam" = (/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;65"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/research_outpost/maint) "ean" = (/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/research_outpost/gearstore) "eao" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "research_inner"; locked = 1; name = "Research Outpost External Access"; req_access = null; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/research_outpost/gearstore) "eap" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/mine/explored) @@ -11168,7 +11168,7 @@ "egN" = (/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"; tag = ""},/area/mine/explored) "egO" = (/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/explored) "egP" = (/turf/simulated/wall,/area/mine/living_quarters) -"egQ" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Communications"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/mine/maintenance) +"egQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/obj/machinery/door/airlock/glass_mining{name = "Loading area"; req_access_txt = "65"},/turf/simulated/floor,/area/research_outpost/tempstorage) "egR" = (/obj/item/clothing/under/rank/miner,/obj/effect/decal/remains/human,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/explored) "egS" = (/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/explored) "egT" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/carpet,/area/mine/living_quarters) @@ -11177,18 +11177,18 @@ "egW" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/obj/machinery/light,/turf/space,/area/mine/explored) "egX" = (/obj/structure/table,/turf/simulated/floor/carpet,/area/mine/living_quarters) "egY" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/carpet,/area/mine/living_quarters) -"egZ" = (/obj/machinery/door/airlock{id_tag = "miningdorm1"; name = "Room 1"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/mine/living_quarters) +"egZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4; level = 1},/obj/machinery/door/airlock/glass_mining{name = "Equipment storage"; req_access_txt = "47"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/research_outpost/gearstore) "eha" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor,/area/mine/living_quarters) "ehb" = (/obj/structure/disposalpipe/trunk,/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/explored) "ehc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/light/small{dir = 4},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/mine/living_quarters) "ehd" = (/obj/structure/disposalpipe/segment,/turf/simulated/mineral/random,/area/mine/unexplored) "ehe" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/carpet,/area/mine/living_quarters) "ehf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/camera{c_tag = "Mining Outpost Bedrooms"; dir = 4; network = list("Mining Outpost")},/turf/simulated/floor,/area/mine/living_quarters) -"ehg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) +"ehg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/gearstore) "ehh" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "ehi" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/west_outpost) -"ehj" = (/obj/machinery/door/airlock{id_tag = "miningdorm2"; name = "Room 2"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/mine/living_quarters) -"ehk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) +"ehj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/gearstore) +"ehk" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Communications"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/mine/maintenance) "ehl" = (/obj/machinery/light{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/screwdriver,/obj/item/weapon/crowbar,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/explored) "ehm" = (/obj/machinery/camera{c_tag = "Mining Outpost Construction Area"; network = list("Mining Outpost")},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) "ehn" = (/obj/machinery/mining/drill,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) @@ -11197,23 +11197,23 @@ "ehq" = (/obj/machinery/camera{c_tag = "Mining Outpost West Outpost Mech Recharge Station"; dir = 1; network = list("Mining Outpost")},/turf/simulated/floor/mech_bay_recharge_floor{icon_state = "recharge_floor_asteroid"},/area/mine/west_outpost) "ehr" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/west_outpost) "ehs" = (/obj/structure/disposalpipe/segment,/obj/structure/sign/deathsposal,/turf/simulated/wall,/area/mine/living_quarters) -"eht" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) +"eht" = (/obj/machinery/door/airlock{id_tag = "miningdorm1"; name = "Room 1"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/mine/living_quarters) "ehu" = (/obj/structure/table/reinforced,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/explored) "ehv" = (/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) "ehw" = (/obj/machinery/mining/brace,/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"},/area/mine/explored) "ehx" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/explored) "ehy" = (/turf/simulated/wall,/area/mine/west_outpost) -"ehz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/west_outpost) -"ehA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/west_outpost) -"ehB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/west_outpost) +"ehz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) +"ehA" = (/obj/machinery/door/airlock{id_tag = "miningdorm2"; name = "Room 2"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/mine/living_quarters) +"ehB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) "ehC" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters) "ehD" = (/obj/machinery/vending/cigarette,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters) "ehE" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters) "ehF" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm3"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/carpet,/area/mine/living_quarters) "ehG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/light/small{dir = 4},/turf/simulated/floor,/area/mine/living_quarters) -"ehH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) -"ehI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) -"ehJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) +"ehH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) +"ehI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/west_outpost) +"ehJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/west_outpost) "ehK" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 10},/area/mine/explored) "ehL" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) "ehM" = (/obj/machinery/mining/brace,/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) @@ -11235,14 +11235,14 @@ "eic" = (/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters) "eid" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters) "eie" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters) -"eif" = (/obj/machinery/door/airlock{id_tag = "miningdorm3"; name = "Room 3"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/mine/living_quarters) +"eif" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/west_outpost) "eig" = (/obj/structure/ore_box,/turf/simulated/floor,/area/mine/living_quarters) "eih" = (/obj/machinery/recharge_station,/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/mine/living_quarters) "eii" = (/obj/structure/closet/secure_closet/miner,/turf/simulated/floor,/area/mine/living_quarters) "eij" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/mine/eva) "eik" = (/turf/simulated/wall,/area/mine/eva) -"eil" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/eva) -"eim" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/eva) +"eil" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) +"eim" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) "ein" = (/obj/structure/table,/obj/item/weapon/shovel,/turf/simulated/floor,/area/mine/west_outpost) "eio" = (/turf/simulated/floor,/area/mine/west_outpost) "eip" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor,/area/mine/west_outpost) @@ -11265,7 +11265,7 @@ "eiG" = (/obj/structure/rack,/obj/item/weapon/storage/backpack/satchel,/obj/item/weapon/pickaxe,/obj/item/weapon/storage/belt/utility,/obj/machinery/light/small{dir = 1},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/mine/eva) "eiH" = (/obj/machinery/light,/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) "eiI" = (/obj/structure/table,/obj/item/weapon/storage/backpack/satchel,/obj/item/clothing/glasses/meson,/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/mine/west_outpost) -"eiJ" = (/obj/machinery/door/airlock/glass_mining{name = "Break Room"; req_access_txt = "54"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/west_outpost) +"eiJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) "eiK" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/mine/west_outpost) "eiL" = (/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/west_outpost) "eiM" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "outpost_west_pump"; tag_exterior_door = "outpost_west_outer"; frequency = 1379; id_tag = "outpost_west_airlock"; tag_interior_door = "outpost_west_inner"; pixel_x = 0; pixel_y = -25; req_access_txt = null; tag_chamber_sensor = "outpost_west_sensor"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "outpost_west_pump"},/turf/simulated/floor,/area/mine/west_outpost) @@ -11284,8 +11284,8 @@ "eiZ" = (/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor,/area/mine/living_quarters) "eja" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/mine/living_quarters) "ejb" = (/turf/simulated/wall,/area/mine/production) -"ejc" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production) -"ejd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production) +"ejc" = (/obj/machinery/door/airlock{id_tag = "miningdorm3"; name = "Room 3"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/mine/living_quarters) +"ejd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/eva) "eje" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/obj/machinery/camera{c_tag = "Mining Outpost EVA"; dir = 4; network = list("Mining Outpost")},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 0},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/mine/eva) "ejf" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor,/area/mine/eva) "ejg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/mine/eva) @@ -11298,11 +11298,11 @@ "ejn" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/mine/west_outpost) "ejo" = (/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) "ejp" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/plating,/area/mine/living_quarters) -"ejq" = (/obj/machinery/door/airlock/glass{name = "Crew Area"; req_access_txt = "48"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/living_quarters) -"ejr" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/airlock/mining{name = "Mining Station Storage"; req_access_txt = "48"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/living_quarters) -"ejs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) -"ejt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) -"eju" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production) +"ejq" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/eva) +"ejr" = (/obj/machinery/door/airlock/glass_mining{name = "Break Room"; req_access_txt = "54"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/west_outpost) +"ejs" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production) +"ejt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production) +"eju" = (/obj/machinery/door/airlock/glass{name = "Crew Area"; req_access_txt = "48"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/living_quarters) "ejv" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/camera{c_tag = "Mining Outpost Starboard Connector"; network = list("Mining Outpost")},/turf/simulated/floor,/area/mine/production) "ejw" = (/turf/simulated/floor,/area/mine/production) "ejx" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor,/area/mine/production) @@ -11326,25 +11326,25 @@ "ejP" = (/obj/machinery/mineral/unloading_machine,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/west_outpost) "ejQ" = (/obj/machinery/conveyor{dir = 4; id = "mining_west"},/obj/machinery/mineral/output,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/west_outpost) "ejR" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal/deliveryChute{dir = 8},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/west_outpost) -"ejS" = (/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/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/west_outpost) +"ejS" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/airlock/mining{name = "Mining Station Storage"; req_access_txt = "48"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/living_quarters) "ejT" = (/obj/structure/toilet{dir = 4},/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor{icon_state = "showroomfloor"},/area/mine/living_quarters) "ejU" = (/obj/structure/sink{pixel_y = 30},/obj/machinery/light/small,/obj/structure/mirror{pixel_y = -32},/turf/simulated/floor{icon_state = "showroomfloor"},/area/mine/living_quarters) -"ejV" = (/obj/machinery/door/airlock{name = "Toilet"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/mine/living_quarters) +"ejV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) "ejW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/mine/living_quarters) "ejX" = (/obj/machinery/power/apc{dir = 1; name = "Mining Station Port Wing APC"; pixel_x = 1; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor,/area/mine/living_quarters) "ejY" = (/obj/machinery/camera{c_tag = "Mining Outpost Crew Area Hallway"; network = list("Mining Outpost")},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor,/area/mine/living_quarters) "ejZ" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/mine/living_quarters) "eka" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/mine/living_quarters) "ekb" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/mine/living_quarters) -"ekc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) +"ekc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) "ekd" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/living_quarters) "eke" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/production) -"ekf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production) -"ekg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production) +"ekf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production) +"ekg" = (/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/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/west_outpost) "ekh" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/mine/production) "eki" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/mine/production) "ekj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/mine/production) -"ekk" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/glass_mining{name = "Mining Station EVA"; req_access_txt = "54"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/eva) +"ekk" = (/obj/machinery/door/airlock{name = "Toilet"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/mine/living_quarters) "ekl" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/mine/eva) "ekm" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_east_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/turf/simulated/floor,/area/mine/eva) "ekn" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_east_inner"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor,/area/mine/eva) @@ -11354,7 +11354,7 @@ "ekr" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_east_airlock"; name = "exterior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = null},/turf/simulated/floor/airless{tag = "icon-asteroidwarning (EAST)"; icon_state = "asteroidwarning"; dir = 4},/area/mine/explored) "eks" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/wall,/area/mine/west_outpost) "ekt" = (/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) -"eku" = (/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 = ""},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor/plating,/area/mine/west_outpost) +"eku" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) "ekv" = (/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_west"},/obj/structure/plasticflaps/mining,/turf/simulated/floor,/area/mine/west_outpost) "ekw" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/mine/living_quarters) "ekx" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/mine/living_quarters) @@ -11364,10 +11364,10 @@ "ekB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/mine/living_quarters) "ekC" = (/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,/area/mine/living_quarters) "ekD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/mine/living_quarters) -"ekE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/living_quarters) +"ekE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production) "ekF" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/mine/living_quarters) "ekG" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/mine/production) -"ekH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/production) +"ekH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production) "ekI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/mine/production) "ekJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/mine/production) "ekK" = (/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,/area/mine/production) @@ -11393,15 +11393,15 @@ "ele" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/light,/turf/simulated/floor,/area/mine/living_quarters) "elf" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "mining_west_airlock"; name = "interior access button"; pixel_x = -25; pixel_y = -25; req_access_txt = null},/turf/simulated/floor,/area/mine/living_quarters) "elg" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/camera{c_tag = "Mining Outpost Port Connector"; dir = 1; network = list("Mining Outpost")},/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/mine/living_quarters) -"elh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) -"eli" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) -"elj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) +"elh" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/glass_mining{name = "Mining Station EVA"; req_access_txt = "54"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/eva) +"eli" = (/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 = ""},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor/plating,/area/mine/west_outpost) +"elj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/living_quarters) "elk" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/space,/area/mine/living_quarters) "ell" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/space,/area/mine/production) "elm" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/light{dir = 4},/turf/space,/area/mine/production) -"eln" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production) -"elo" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production) -"elp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production) +"eln" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor,/area/mine/production) +"elo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) +"elp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) "elq" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/mine/production) "elr" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor,/area/mine/production) "els" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/turf/simulated/floor,/area/mine/production) @@ -11415,13 +11415,13 @@ "elA" = (/obj/machinery/power/terminal{dir = 4},/obj/machinery/light/small,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/west_outpost) "elB" = (/obj/machinery/power/smes,/obj/structure/cable,/turf/simulated/floor/plating,/area/mine/west_outpost) "elC" = (/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/living_quarters) -"elD" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters) +"elD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) "elE" = (/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) -"elF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "48"},/obj/machinery/door/firedoor/border_only{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor/plating,/area/mine/living_quarters) +"elF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production) "elG" = (/turf/simulated/wall/r_wall,/area/traitor/empty) "elH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "mining_west_inner"; locked = 1; name = "Mining External Access"; req_access = null; req_access_txt = null},/turf/simulated/floor,/area/mine/living_quarters) -"elI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) -"elJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production) +"elI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production) +"elJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production) "elK" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/mine/production) "elL" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/mine/production) "elM" = (/obj/structure/disposalpipe/junction{tag = "icon-pipe-j2 (EAST)"; icon_state = "pipe-j2"; dir = 4},/turf/simulated/wall,/area/mine/production) @@ -11481,8 +11481,8 @@ "emO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "mining_west_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/explored) "emP" = (/turf/simulated/floor/airless{tag = "icon-asteroidwarning (EAST)"; icon_state = "asteroidwarning"; dir = 4},/area/mine/explored) "emQ" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored) -"emR" = (/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},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production) -"emS" = (/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},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production) +"emR" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters) +"emS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "48"},/obj/machinery/door/firedoor{dir = 4; layer = 2.6; name = "Firelock"},/turf/simulated/floor/plating,/area/mine/living_quarters) "emT" = (/obj/structure/closet/emcloset,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/mine/production) "emU" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/mine/production) "emV" = (/obj/structure/closet/crate,/obj/structure/noticeboard{pixel_y = 27},/turf/simulated/floor,/area/mine/production) @@ -11504,7 +11504,7 @@ "enl" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/camera{c_tag = "Mining Outpost Production Room"; dir = 8; network = list("Mining Outpost")},/turf/simulated/floor,/area/mine/production) "enm" = (/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) "enn" = (/obj/machinery/mineral/input,/turf/simulated/floor{icon_state = "loadingarea"; tag = "loading"},/area/mine/production) -"eno" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/mine/production) +"eno" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/living_quarters) "enp" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/mine/production) "enq" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8},/obj/machinery/telepad_cargo,/turf/simulated/floor,/area/mine/production) "enr" = (/obj/machinery/door/window/westleft{name = "Production Area"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4; level = 1},/obj/machinery/mineral/output,/turf/simulated/floor{dir = 1; icon_state = "loadingarea"; tag = "loading"},/area/mine/production) @@ -11673,13 +11673,13 @@ "eqy" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/derelict/bridge/access) "eqz" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/derelict/bridge/access) "eqA" = (/obj/machinery/door/airlock/command{name = "E.V.A."; req_access = null; req_access_txt = "18"},/turf/simulated/floor,/area/derelict/bridge/access) -"eqB" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/derelict/bridge/access) +"eqB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production) "eqC" = (/obj/item/stack/cable_coil/cut,/turf/simulated/floor/plating/airless,/area) "eqD" = (/turf/simulated/floor/airless{icon_state = "solarpanel"},/area) "eqE" = (/obj/item/stack/cable_coil/cut,/turf/space,/area) "eqF" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/derelict/bridge/access) "eqG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/derelict/bridge/access) -"eqH" = (/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/derelict/bridge/access) +"eqH" = (/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},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production) "eqI" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor,/area/derelict/bridge/access) "eqJ" = (/turf/simulated/wall/r_wall,/area/derelict/singularity_engine) "eqK" = (/obj/structure/window/reinforced,/turf/simulated/floor,/area/derelict/bridge/access) @@ -12098,10 +12098,10 @@ "eyH" = (/turf/simulated/wall/r_wall,/area/derelict/bridge/ai_upload) "eyI" = (/obj/machinery/door/airlock/command{name = "AI Upload"; req_access_txt = "16"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/airless,/area/derelict/bridge/ai_upload) "eyJ" = (/obj/machinery/door/airlock/external{name = "Escape Airlock"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) -"eyK" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) +"eyK" = (/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},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production) "eyL" = (/obj/structure/window/basic{dir = 4},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) "eyM" = (/obj/structure/window/basic{dir = 8},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) -"eyN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/airless,/area/derelict/bridge/ai_upload) +"eyN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor{dir = 2},/turf/simulated/floor/plating,/area/mine/production) "eyO" = (/obj/structure/closet/emcloset,/turf/simulated/floor/airless,/area/derelict/hallway/secondary) "eyP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) "eyQ" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/wall/r_wall,/area/derelict/bridge/ai_upload) @@ -12236,11 +12236,11 @@ "eBp" = (/obj/structure/table,/obj/item/weapon/storage/box/syringes,/obj/item/weapon/hand_labeler,/obj/machinery/alarm{hidden = 1; pixel_y = 22},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem) "eBq" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem) "eBr" = (/obj/machinery/light{dir = 1; in_use = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light_switch{pixel_y = 24},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem) -"eBs" = (/obj/machinery/door/airlock/glass,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) +"eBs" = (/obj/machinery/door/firedoor,/turf/simulated/floor,/area/derelict/bridge/access) "eBt" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) "eBu" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1479; master_tag = "traitor_station_airlock"; name = "interior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = null},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) "eBv" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) -"eBw" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor,/area/traitor/hall) +"eBw" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/turf/simulated/floor,/area/derelict/bridge/access) "eBx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/traitor/kitchen) "eBy" = (/obj/machinery/atmospherics/unary/vent_pump,/turf/simulated/floor,/area/traitor/kitchen) "eBz" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 0; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/traitor/kitchen) @@ -12251,17 +12251,17 @@ "eBE" = (/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem) "eBF" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem) "eBG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem) -"eBH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/glass,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) +"eBH" = (/obj/machinery/door/firedoor{dir = 4; name = "Firelock East"},/turf/simulated/floor/plating/airless,/area/derelict/hallway/secondary) "eBI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) "eBJ" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) "eBK" = (/obj/structure/disposalpipe/junction{dir = 4; icon_state = "pipe-y"; tag = "icon-pipe-y (NORTH)"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) -"eBL" = (/obj/machinery/door/airlock/glass,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/traitor/hall) +"eBL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor/airless,/area/derelict/bridge/ai_upload) "eBM" = (/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/structure/disposalpipe/junction{tag = "icon-pipe-y (NORTH)"; icon_state = "pipe-y"; dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/traitor/kitchen) "eBN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor,/area/traitor/kitchen) "eBO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/traitor/kitchen) "eBP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/traitor/kitchen) "eBQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor,/area/traitor/kitchen) -"eBR" = (/obj/machinery/door/airlock/glass,/obj/machinery/door/firedoor/border_only{layer = 2.6},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/kitchen) +"eBR" = (/obj/machinery/door/airlock/glass,/obj/machinery/door/firedoor,/turf/simulated/floor,/area/traitor/hall) "eBS" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/empty) "eBT" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem) "eBU" = (/obj/machinery/chem_dispenser{broken_on_spawn = 1; energy = 0; recharged = 300},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem) @@ -12269,11 +12269,11 @@ "eBW" = (/obj/structure/closet/secure_closet/chemical,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem) "eBX" = (/obj/machinery/power/apc{pixel_y = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem) "eBY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/chem) -"eBZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/multi_tile/triple{dir = 3; layer = 2.6},/obj/machinery/door/airlock/glass,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) +"eBZ" = (/obj/machinery/door/airlock/glass,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) "eCa" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) "eCb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) "eCc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) -"eCd" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/multi_tile/triple{dir = 3; layer = 2.6},/obj/machinery/door/airlock/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/traitor/hall) +"eCd" = (/obj/machinery/door/airlock/glass,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/traitor/hall) "eCe" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/traitor/kitchen) "eCf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor,/area/traitor/kitchen) "eCg" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor,/area/traitor/kitchen) @@ -12354,7 +12354,7 @@ "eDD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) "eDE" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/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/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) "eDF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) -"eDG" = (/obj/machinery/door/airlock/glass,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) +"eDG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/airlock/glass,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) "eDH" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/tox) "eDI" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/traitor/tox) "eDJ" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/tox) @@ -12407,7 +12407,7 @@ "eEE" = (/turf/simulated/floor/plating,/area/traitor/hall) "eEF" = (/obj/machinery/light{dir = 1},/obj/machinery/light_switch{pixel_y = 24},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) "eEG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) -"eEH" = (/obj/machinery/door/airlock/glass,/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) +"eEH" = (/obj/machinery/door/airlock/glass,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/kitchen) "eEI" = (/obj/machinery/light_switch{pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; level = 2},/turf/simulated/floor/plating,/area/traitor/atmos) "eEJ" = (/obj/effect/decal/cleanable/blood/oil,/obj/machinery/power/apc{dir = 1; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; level = 2},/turf/simulated/floor/plating,/area/traitor/atmos) "eEK" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; level = 2},/turf/simulated/floor/plating,/area/traitor/atmos) @@ -12427,11 +12427,11 @@ "eEY" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating,/area/traitor/atmos) "eEZ" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/turf/simulated/floor/plating,/area/traitor/atmos) "eFa" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor/plating,/area/traitor/hall) -"eFb" = (/obj/machinery/door/firedoor/multi_tile/triple{dir = 3},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) +"eFb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/airlock/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/traitor/hall) "eFc" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) "eFd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) "eFe" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{level = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) -"eFf" = (/obj/machinery/door/airlock/glass,/obj/machinery/door/firedoor/multi_tile/triple{dir = 3; layer = 2.6},/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) +"eFf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/glass,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) "eFg" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor/plating,/area/traitor/atmos) "eFh" = (/obj/machinery/atmospherics/trinary/filter{dir = 4; filter_type = 3; name = "Gas filter (CO2 tank)"; on = 1},/turf/simulated/floor/plating,/area/traitor/atmos) "eFi" = (/obj/item/clothing/suit/space/syndicate/black/red,/obj/item/clothing/head/helmet/space/syndicate/black/red,/obj/structure/alien/weeds,/turf/simulated/floor/airless{icon_state = "floorgrime"},/area/mine/abandoned) @@ -12468,7 +12468,7 @@ "eFN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "dark"},/area/traitor/inter) "eFO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/traitor/inter) "eFP" = (/obj/structure/rack,/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Fitness Ring"},/turf/simulated/floor{tag = "icon-vault (NORTH)"; icon_state = "vault"; dir = 1},/area/traitor/inter) -"eFQ" = (/obj/machinery/door/airlock/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/tox) +"eFQ" = (/obj/machinery/door/airlock/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/tox) "eFR" = (/obj/structure/rack,/obj/machinery/door/window/eastright{name = "Gear Rack"},/obj/structure/window/reinforced,/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/traitor/inter) "eFS" = (/obj/structure/table,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/traitor/inter) "eFT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "dark"},/area/traitor/inter) @@ -12497,9 +12497,9 @@ "eGq" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/inter) "eGr" = (/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/space,/area) "eGs" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor/plating,/area/traitor/tox) -"eGt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock{name = "Interrogation"; req_access_txt = "0"},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/inter) -"eGu" = (/obj/machinery/door/airlock/glass,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/tox) -"eGv" = (/obj/machinery/door/airlock/multi_tile/glass{dir = 3; name = "Research and Development"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/multi_tile{dir = 3; layer = 2.6},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/rnd) +"eGt" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/rnd) +"eGu" = (/obj/machinery/door/airlock/glass,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/tox) +"eGv" = (/obj/machinery/door/airlock/multi_tile/glass{dir = 3; name = "Research and Development"; req_access_txt = "0"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/rnd) "eGw" = (/obj/machinery/chem_dispenser/beer,/obj/structure/table,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/radio) "eGx" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 1; pixel_y = 24},/obj/structure/table,/obj/machinery/chem_dispenser/soda,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/radio) "eGy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/light_switch{pixel_y = 24},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/radio) @@ -12536,7 +12536,7 @@ "eHd" = (/obj/machinery/light/small,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery) "eHe" = (/obj/structure/table,/obj/item/stack/rods,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery) "eHf" = (/obj/structure/table,/obj/item/weapon/hatchet,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery) -"eHg" = (/obj/machinery/door/firedoor/multi_tile/triple{dir = 3; layer = 2.6},/obj/machinery/door/airlock/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/tox) +"eHg" = (/obj/machinery/door/airlock/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/tox) "eHh" = (/obj/item/clothing/suit/xenos,/obj/item/clothing/head/xenos,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned) "eHi" = (/obj/item/device/radio/beacon,/turf/simulated/floor,/area/mine/production) "eHj" = (/obj/structure/rack,/obj/item/clothing/head/helmet/swat,/turf/simulated/floor,/area/derelict/bridge/access) @@ -12580,15 +12580,15 @@ "eHV" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/traitor/hall) "eHW" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/traitor/hall) "eHX" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/traitor/hall) -"eHY" = (/obj/machinery/door/airlock/glass,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/inter) -"eHZ" = (/obj/machinery/door/airlock/glass,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/inter) -"eIa" = (/obj/machinery/door/airlock/glass,/obj/machinery/door/firedoor/multi_tile/triple{layer = 2.6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/inter) +"eHY" = (/obj/machinery/door/airlock/glass,/obj/machinery/atmospherics/pipe/simple/visible/universal{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) +"eHZ" = (/obj/machinery/door/airlock/glass,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/hall) +"eIa" = (/obj/machinery/door/airlock/glass,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/inter) "eIb" = (/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/meter,/obj/machinery/atmospherics/pipe/simple/visible,/turf/simulated/floor/plating,/area/traitor/atmos) "eIc" = (/turf/simulated/wall/r_wall,/area/traitor/radio) -"eId" = (/obj/machinery/door/airlock/multi_tile/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/multi_tile{layer = 2.6},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery) -"eIe" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/radio) -"eIf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/multi_tile/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/multi_tile{layer = 2.6},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/radio) -"eIg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery) +"eId" = (/obj/machinery/door/airlock/glass,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/inter) +"eIe" = (/obj/machinery/door/airlock/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/inter) +"eIf" = (/obj/machinery/door/airlock/multi_tile/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery) +"eIg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock{name = "Interrogation"; req_access_txt = "0"},/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/inter) "eIh" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating,/area/traitor/radio) "eIi" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/simulated/floor/plating,/area/traitor/radio) "eIj" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/turf/simulated/floor/plating,/area/traitor/radio) @@ -12746,7 +12746,7 @@ "eLf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/wall/r_wall,/area/server) "eLg" = (/turf/simulated/wall/r_wall,/area/server) "eLh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/r_wall,/area/teleporter) -"eLi" = (/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/door/firedoor/border_only{dir = 2},/turf/simulated/shuttle/plating,/area/medical/research{name = "Research Division"}) +"eLi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/radio) "eLj" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/crew_quarters/heads) "eLk" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall/r_wall,/area/server) "eLl" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/wall/r_wall,/area/engine/gravitygenerator) @@ -12763,19 +12763,16 @@ "eLw" = (/turf/simulated/wall,/area/assembly/chargebay) "eLx" = (/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/hidden/supply,/turf/simulated/floor/plating,/area/assembly/robotics) "eLy" = (/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/assembly/robotics) -"eLz" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) -"eLA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) -"eLB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) +"eLz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/multi_tile/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/radio) +"eLA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/traitor/surgery) "eLC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/primary/central/sw) "eLD" = (/turf/simulated/wall,/area/engine/gravitygenerator) "eLE" = (/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/medbay3) -"eLF" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/research{name = "Genetics Research"; req_access_txt = "47;9"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) "eLG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/crew_quarters/hor) "eLH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/crew_quarters/hor) "eLI" = (/turf/simulated/wall/r_wall,/area/crew_quarters/hor) "eLJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/crew_quarters/hor) "eLK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/crew_quarters/hor) -"eLL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only{dir = 2},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"}) "eLM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/qm) "eLN" = (/obj/machinery/status_display/supply_display,/turf/simulated/wall,/area/quartermaster/qm) "eLO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/quartermaster/qm) @@ -12783,7 +12780,6 @@ "eLQ" = (/turf/simulated/wall,/area/server) "eLR" = (/obj/structure/noticeboard,/turf/simulated/wall,/area/medical/medbay3) "eLS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{id_tag = "GeneticsDoor"; name = "Genetics"; req_access_txt = "9"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) -"eLT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Biohazard_medi"; name = "Quarantine Lockdown"; opacity = 0},/obj/machinery/door/airlock/research{name = "Genetics Research"; req_access_txt = "47;9"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics) "eLU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/crew_quarters/hor) "eLV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/plating,/area/maintenance/asmaint2) "eLW" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/server) @@ -12907,7 +12903,6 @@ "eOk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/toxins/xenobiology) "eOl" = (/turf/simulated/wall/r_wall,/area/toxins/xenobiology) "eOm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/toxins/xenobiology) -"eOn" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/research{name = "Xenobiology Research"; req_access_txt = "47"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "eOo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/medical/ward) "eOp" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/medical/medbay2) "eOq" = (/turf/simulated/wall/r_wall,/area/medical/virology) @@ -13044,7 +13039,6 @@ "eQX" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/toxins/misc_lab) "eQY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4; initialize_directions = 11; level = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/structure/disposalpipe/wrapsortjunction{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "eQZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/misc_lab) -"eRa" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/glass_research{name = "Firing Range"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab) "eRc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/misc_lab) "eRd" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 10},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/misc_lab) "eRe" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/turf/simulated/floor{icon_state = "dark"},/area/toxins/misc_lab) @@ -13247,7 +13241,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWaaaaaaaaaaaaaaaaosaffafgafhaosaffafgafhaosaaaamiafiafjafkaoHaflafmafnafoafpafqafrafsagqagqaftafuafvagqagqaoxafwafxamRafyafzafAafBafCafDafEafyafyafFafGaoIafIafJafKafLamdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBabBabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWabWaaaaaaaaaaaaaaaaosafMafhafNaosafOafhafPaosaaaamiamiamiamiamiafQafRafSafTafUafVafWafXaoJafYafZagaagbagcagdapuageagfaggaggaggaghagiagjagkaggaggaggaggaglafcagmagnagoagpapvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaabBabBabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWabWabWabWaaaaaaabWabWabWabWabWabWabWaaaaaaabWabWabWabWaaaaaaaaaaaaaaaaaaaosafhaffafhaosafhaffafhaosaaaapwagsagtagtaguagvagwagxagyagzagAagBagCaoJagDagEagFagGagHagHagIagJagKagLagLagLagMagNagOagPagQagLagLagRagSapxagTagUagVagWamdapKapKapKapKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBabBabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWabWabWabWabWabWabWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaosaffafhaffaosaffafhaffaosaaaapwagXagYagZaqsahaahbahcahdaheahfahgahhaoJahiahjahkahlahmahnaqtaquahoahpahqahraqtahsahtahuahvahqahraqtaqtapKamdamdamdamdamdahwahwahwapKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBabBabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWabWabWabWabWabWabWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaosaffafhaffaosaffafhaffaosaaaapwagXagYagZaqsahaahbahcahdaheahfahgahhaoJahiahjahkahlahmahnaqtaquahoahpahqahraqtahsahtahvahuahqahraqtaqtapKamdamdamdamdamdahwahwahwapKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBabBabBabBabBabBabBabBabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWabWabWabWabWabWabWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaosaffaffafhaosaffaffafhaosaaaapwahyahzahAapwafQahBahCaqvahDahEahFahGaoJahHahIagFahJahKahLaqtahMahNahOahPahQahRahSahTahUahVahWahXahWahYapKahwahwahwahwahwahwahwahwapKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWabWabWabWabWabWabWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaosafhaffahZaosafhaffaiaaosaaaapwaibaicaidapwaqyaqyaqyaqyaieaifaigaihaoJaiiaijaikailaimainaqtaioaipaiqairaisaitaiuaivahUahVaiwahXaiwaixapKahwahwahwahwahwahwahwahwapKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWabWabWabWabWabWabWaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaosaiyaizaiAaiBaiyaizaiAaiCarkarjarjarjarlarjarjarjarjaiDaiEaiFaiGaiHarSaiIaiJaiKaiLaiMarTaqtaiNaiOaPFaiQaisaiRaiQaivaiSahVahTahTaiTaiUarUahwahwahwahwahwahwahwahwapKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -13270,10 +13264,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahxahxahxahxahxaaaaaaaaaaaaaaaaaaacuaabasqasqasqasqasqaabasraabasqasqasqasqasqaabacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaQBauCauDauEauFauGauHauIauJauIauKauIauIauLauMauMauMauMauMauNauOauPauMauMauMauMauQauMauMauMauMauRauSauTauUauVauWauXauYazrauZavaavbavcavdaveaXcavgaPlavhaviavjaPuavkavlavkavmaPtaabapRaabaaaaoLaoNaohaaaaaaaoLaoNaohaaaaaaaoLaoNaohaabaabaaaaabaoiaabaaaaaacqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajFajFajFajFajFajFajFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahxahxahxaaaaaaaaaaaaaaaaaaaaaatHaaaaaaaaaaabaaaaaaaaaasraaaaaaaaaaabaaaaaaaabacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaQBavnavoavpavqavqavravsavtavuauRauRauRavvauRauRauRauRauRavwauRauRauRauRauRauRavxauRauRauRauRavyauRavzauRavAauRauRavBazravCavDavEavFavbavGaXcavHaPlavIavJavKaXdavMavNavOauBaPtaabapRaabaaaaoLaoNaohaaaaaaaoLaoNaohaaaaaaaoLaoNaohaaaaaaaaaaabapRaabaaaaaacnZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajFajFajFajFajFajFajFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacuaabaqLaqLaqLaqLaqLaabasraabaqLaqLaqLaqLaqLaabacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaQBavPavQavRavSavTaQBavUavVavWavXavYavZawaawbavVavXavXavXawcavXavXavXavXavXavXawdaweawfawfawfawgawhawiawhawjawkawhawlazraXeaXeaXeaXeaXeaXeaXcavgaPlawmaviawnaPuavkawoavkavmaPtaoQawGapQaaaaaaaoiaabaabaabaabaoiaabaabaabaabaoiaabaabaabaabeSzeSyapQaabaaacqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajFajFajFajFajFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofawpaofaaaaaaaaaaaaaaaaaaaaaacuaabarzarAarAarAarAarBarCarDarEarEarEarEarFaaaacuaaaaaaaaaaaaaabaaaaaaaaaaaaaQBaQBaQBaQBaQBaQBaQBaXfaXfaXgawqawrawsaXhawtaXiawuawvaXiawwaXiaXjaXjaXjaXjaXjaXjawxaXjaXjawyawzawAaXyaXfaXzaXfawBaXfaXfapMannannannannannawCavgaPlawDaviawEaPuawFavNavOauBaPtapReSweSvaoOaoOawGaoOaoOaoOaoOawGaoOaoOaoOaoOawGaoOaoOaoOaoPeSxeSwapRaabaaacqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofawpaofaaaaaaaaaaaaaaaaaaaaaacuaabarzarAarAarAarAarBarCarDarEarEarEarEarFaaaacuaaaaaaaaaaaaaabaaaaaaaaaaaaaQBaQBaQBaQBaQBaQBaQBaXfaXfaXgawqawrawsaXhawtaXiawuawvaXiawwaXiaXjaXjaXjaXjaXjaXjawxaXjaXjawzawyawAaXyaXfaXzaXfawBaXfaXfapMannannannannannawCavgaPlawDaviawEaPuawFavNavOauBaPtapReSweSvaoOaoOawGaoOaoOaoOaoOawGaoOaoOaoOaoOawGaoOaoOaoOaoPeSxeSwapRaabaaacqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabawHawIawHaaaaaaaaaaaaaaaaaaaaaacuaabasqasqasqasqasqaabawJaabasqasqasqasqasqaabacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXgawKawLawMaXhawNaXiawOawPawQawRawSawTawUawVawWawXawYawZaxaaxbaxcauRauSaYOaxeaxfaxgaxgaxgaxgaxgaxhaxgaxgaxgaxgaxiaxjaxkaxlaxmaxnbaJaxpaxqavkavmaPteSBawGeSAaabaabaaaaabaxraxsaxsaxsaxsaxsaxtaabaaaaaaaaaaaaaabeSCeSDeSAaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxvaxwaxxaaaaxyaxzaxAaaaaabaxBaxCaxBaaaaaaaaaaaaaaaaaaaaaacuaaaaabaabaabaabaabaaaaxDaaaaaaaaaaaaaaaaaaaabacuaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbkaxFaxGaxHaXhawNaXiaxIaxJaxKawRaxLaxMaxNaxNaxNaxNaxNawZaxNaxOauMauRauSaXfaxPbbIbbXbbXbbXbbXaxRbckbgwbgwbgwbgwbgwbgwbgDbgCaxTbgEbjxbgJaxWbjzaPtaPtbjEbjEbjEbjEbjEbjEbjEaxYaxZaxZaxZaxZaxZaxYbjIaaaaaaaaaaaaaabaabaxuaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaybaycaybayaaydayeaydayaaabaxBayfaygaaaaaaaaaaaaaaaaaaaaaacuacuacuacuaaaaaaaaaaaaaxDaaaaaaaaaaaaaaaaaaaaaacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabbkkayhayiaxHaXhawNaXiayjaykaylawRaymaxNaxNaynaxNayoayoawZaxNaxOauMauRaypaXfayqbbIayraysaytblQayuayvaywayxayyayzayAdwrdwqayDayEayFayGayHayIayJayKayLayMayNayOayPayQayRbjEaxYaxZaxZaxZaxZaxZaxYbjIaabaaaaaaaaaaaaaaaaxuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaybaycaybayaaydayeaydayaaabaxBayfaygaaaaaaaaaaaaaaaaaaaaaacuacuacuacuaaaaaaaaaaaaaxDaaaaaaaaaaaaaaaaaaaaaacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabbkkayhayiaxHaXhawNaXiayjaykaylawRaymaxNaxNaynaxNayoayoawZaxNaxOauMauRaypaXfayqbbIayraysaytblQayuayvaywayxayyayzayAaSGdwqayDayEayFayGayHayIayJayKayLayMayNayOayPayQayRbjEaxYaxZaxZaxZaxZaxZaxYbjIaabaaaaaaaaaaaaaaaaxuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaySaybayTaybaySaydayUaydaySayVayWayXayYayZayZazaayVayVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaxDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazbazbazbazbazbazbazbazbazbaabbkkazcazdazebmKazfbmWazgazhaziazjawSazkaxNazlazmaznazoazpazqaxOauMauRauSaXfasgborazsaysaytblQaztayRayRayRayRayRayRayRayRayRayRazuazvazwazxazyazzazAazBazBazBazBazCazBazDazEaxZaxZaxZaxZaxZazEbjIbjIbjIaaaaaaaaaaaaaxuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaySazFazGazHaySazIazJazKdIsaxCaxCazLazMazNazOazPazQayVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaboBazSazTazUazVazWazXazYazbaabbkkazZaAaaAbbkkaAcaXiaAdaAeaAfaAgaAhaznaAiaAjaAkaAlaAmaAnaAoaApaAqavtaArboCaAsbpMaAuaysaytblQaAvayRayRaAwaAwaAwayRayRayRayRaAxaAyaAzaAAaABaACaADaAEaAFaAGaAFaAFaAHaAFaAIaAJaxZaxZaxZaxZaxZaAKaALaAMaANaaaaaaaaaaaaaxuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaySaAOaAPaAQaySaAOaAPaAQdIsaARaASaASaxCaxCaxCaASaASawHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHCaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaabaabaaaaaaaabbqmazSaAUaAVaAWaAXaAYaAYdICazbbkkbbkbqpbqpbqpaAZbrwbttbrwbrwbrwbwsbtDbtDbwObtDbtDbtDbtDbyhbwTaBcauRaBdaXfasgbyiaHvaysaytblQaztayRaAwaBfaBfaBgaAwayRaBhayRaBiaBjaBkaBlaBmaBnaBoaBpaBnaBqaBnaBnaBraBhaBsaANaxZaxZaxZaxZaxZaANaBtaBuaBvaaaaaaaaaaaaaxuaaaaaaaaaaaaaaaaaaaaabykbykaBwaBxaBxaBxaBxaBybykbykaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -13281,85 +13275,85 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCyaCzaCAaCzaCBaCzaCCaCzaCDaCEaCFaCFaCFaCFaCGaySaCHaxBaaaaabaabaaaaaaaaaaaaaabaaaaCIaCJaCKaabaaaaabaaaaaaaaaaaaaaaazbaCLaCMaCNaCMaCMaCMaCMaCOaCMaCMaCPaCQaCNaCRaCSaCSaCSaCSaCSaCSaCSaCTbyxbyxbyxbyxbyBbyHbyxaCUbyxbyIbyBbyxbyxbyxbyxaCVaCWaCXaCYaCZbpMaDaaDbaBeaDcaztayRaAwaDdaBfaBfaAwayRayRayRaDeaDfaDgaDhayRayRaCjaDiayRayRayRayRaDjayRaDkaDlaxZaxZaxZaxZaxZaDmaDnaDoaCoaaaaabaabbzQaDqbzQaabaabaaabykbykbykaDraCuaDsaCuaDtaDuaCuaCuaCuaDvbykaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDwaDxaDyaDzaDAaDBaDCaDDaDEaDCaDFaDGaDCaDCaDHaySaxCayWaabaabaaaaaaaaaaaaaaaaabaDIaDJaDKaDLaDMaaaaabaaaaaaaaaaaaaaaazbaDNazbaDOaDPaDQaDQaDQaDRaDQaDQaDQaDSaDOaDTaDUaDUaDUaDUaDUaDUaDUaAYbyxaDVaDWaDXaDYaDZaEaaEbaEcaEdaEeaEfaDWaEgbyxaEhauRaEiaXfaEjbyiaEkaElaElbAQaEnaEoaEpaEqaEqaEraEsaBnaEtaEsaEsaEuaEvaEwayRayRaExaEyaEzaEAaEAaEAaEBayRaECaEDaxZaxZaxZaxZaxZaEEbjIbjIbjIaabaabaaabBlaEGbBlaaaaabbykecgaEHecgaEIaEJaEKaELaCuaCuaEMaENaCuaEObykaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaySaEPaEQaEPaERaDyaDyaESaEPaEQaEPaETaEUaEVaEWaySaxCayVayVaEXayZayZayZayZazaayVaEYaEZaFaaFbaEYazbazbaFcaFdaFeazbazbazbaDNaFfaDOaaaaabaaaaabaaaaabaaaaabaaaaDOaDTaDUaFgaFhaFiaFjaFkaDUaAYbyxaFlaFlaFmaFnaFoaFpaFqaFpaFraFsaFtaFlaFlbyxaEhauRaFuaXfaEjbyiaHvaysaytblQaztaFvaFwaFxaFyaFzaFzaFAaFBaFzaFBaFCaFDaFEaFFaFGaFHaFIaFJaFKaFKaFKaFLbRjbjEaFMaxZaxZaxZaxZaxZaFNbjIaabaabaabaaabBVbBYaFPbCabBZaaabykaFSaFTaFUaFVaFWaFXaCuaCuaCuaFYaFZaCuaGabykaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaGbayaaGcaAPaGdaGeaGfaGgaGhaGdaAPaGiaGjayaaGkaGlaySaxCaxCaxCaxCaxCaxCaxCaxCaGmaGnaEYaGoaGpaGqaEYaGraGsaCMaCMaCMaCMaCMaGtaGuaGvaDOaabaGwaGwaGwaGwaGwaGwaGwaabaDOaDTaDUaGxaGyaGzaGAaGxaDUaAYbyxbyxbyxbyxaGBaGCaDWaGDaDWaGCaGEbyxbyxbyxbyxaEhauRaGFaXfaEjbyiaAuaysaytblQaAvaGGbCtbCtbCtbCtbCtbCtbCtaGHbCtaPjaPjaPjaPjaPjaGIbjEaGJaGKaGLaGMaGNbjEbjEaFMaxZaxZaxZaxZaxZaFNbjIaaaaaaaaaaaabDKaGOaGPaGQbDKaaabykbtKaGSecgaGTaGUaGVaGWaGXaGYaGZaHabvxbykbEgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaGbayaaGcaAPaGdaGeaGfaGgaGhaGdaAPaGjaGiayaaGkaGlaySaxCaxCaxCaxCaxCaxCaxCaxCaGmaGnaEYaGoaGpaGqaEYaGraGsaCMaCMaCMaCMaCMaGtaGuaGvaDOaabaGwaGwaGwaGwaGwaGwaGwaabaDOaDTaDUaGxaGyaGzaGAaGxaDUaAYbyxbyxbyxbyxaGBaGCaDWaGDaDWaGCaGEbyxbyxbyxbyxaEhauRaGFaXfaEjbyiaAuaysaytblQaAvaGGbCtbCtbCtbCtbCtbCtbCtaGHbCtaPjaPjaPjaPjaPjaGIbjEaGJaGKaGLaGMaGNbjEbjEaFMaxZaxZaxZaxZaxZaFNbjIaaaaaaaaaaaabDKaGOaGPaGQbDKaaabykbtKaGSecgaGTaGUaGVaGWaGXaGYaGZaHabvxbykbEgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDwaEQaHbaHcaHcaHcaHcaHdaEQaDwaHeayaaHfaHgaHhaHhaHhaHhaHhaHhaHhaHhaxCaHiaHjaEYaHkaHlaHmaHpecVaHoaHnaHnaHnaHnaHnaHnaHnaHnaHpaaaaGwaHqaHraHsaHtaHuaGwaaaaDOaDTaDUaGxaHwaHEaHxaGxaDUaAYbyxaHyaHyaFmaHzaHAaFpaFqaFpaHAaHBaHCaFlaFlbyxaEhauRaEiaXfaHDbbIeHtaysaytblQaztaGGbCtaHFaHGaHHaHHbCtaHIaHGaHJaPjaHKaHLaHMaPjaHNbjEaHOaHPaHPaHPaHQbjEaabaHRaHSaHSaHSaHSaHSaHTaabaaaaaaaagaaabDKaHUaHVaHWbDKaaabykaHXaHYbykbykbykbykbykaHZbykbykbykbykbykbykaJvaJvaJvaJvaJvaJvaJvaJvaJvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIbaIcaIbaIbaIdaIeaIbaIbaIcaIfaIgayaaERaIhaHhaIiaIjaIkaIlaImaInaHhaxCaIoayVaEYaEYaIpaIqdKtaIraIsaItaIuaIvaIwaIxaIyaIzaIAaHpaabaGwaIBaICaIDaIEaIFaGwaabaDOaDTaDUaIGaIHaIIaIJaIKaDUaAYbyxaDVaDWaILaIMaGCaDWaINaDWaGCaIOaIPaDWaEgbyxaEhauRaIQaXfaEjborazsaysaytblQaIRaISbCtaITaHGaHGaHGaIUaIVaIWaIXaPjaIYaIZaJaaJbaJcdNcaJdaJeaJfaJeaJgbjEaaaaabaaaaabaaaaabaaaaabaaaaaaaaaaaaaaabDKaJhaJiaJjbDKbEsbykbykbykbykaJlaJmaJnaJnaJoaJnaJpaJnaJqaJraJraJsaJraJraJraJraJtaJuaJvaJvbEDbEFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIfaIbaJxaJyaJzaJAaJBaJCaJDaJEaJFaJGaJHaJIaEPaERaJJaHhaJKaJLaJMaJNaJMaJOaJPaxCaJQaJRaJSaJTaJUaJVaJWaJXaJYaJZaJZaJZaKaaJZaJZaKbaKcaHpaaaaGwaKdaICaKeaIEaKfaGwaaaaDOaDTaDUaKgaKhaKiaKjaKkaDUaAYbyxaKlaKlaFmaKmaHAaFpaKnaFpaHAaKoaFtaKpaKpbyxaKqawzaKraXfaEjborbEWbEWbEWbEWaKsaKtaKuaKvaKwbEXbEXbEXbEYbEXbGgbGsbyfaKzaKAbGsaKBdNBdNcbjEbjEbjEbjEbjEbGtbGtbGtaJvaJvaJvaJvbGubGCaJvaJvaJvaJvbDKbDKaKCbGRdNCaKDaKEaKFaKGaKHaKIaKJbGSbGSbGSbGSbGTaKKaKLbHwbHwbHHbHwbHNbHwbHwbHYaKNaOeaOeaKObEFbIgbIgbIgbIgbIgbIgbIgbIgbIgabAacOaaaaaaaaaaaaaaaaaaaaaaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIbaIcaIbaIbaIdaIeaIbaIbaIcaIfaIgayaaERaIhaHhaIiaIjaIkaIlaImaInaHhaxCaIoayVaEYaEYaIpaIqdKtaIraIsaItaIuaIvaIwaIxaIyaIzaIAaHpaabaGwaIBaICaIDaIEaIFaGwaabaDOaDTaDUaIGaIHaIIaIJaIKaDUaAYbyxaDVaDWaILaIMaGCaDWaINaDWaGCaIOaIPaDWaEgbyxaEhauRaIQaXfaEjborazsaysaytblQaISaIRbCtaITaHGaHGaHGaIUaIVaIWaIXaPjaIYaIZaJaaJbaJcdNcaJdaJeaJfaJeaJgbjEaaaaabaaaaabaaaaabaaaaabaaaaaaaaaaaaaaabDKaJhaJiaJjbDKbEsbykbykbykbykaJlaJmaJnaJnaJoaJnaJpaJnaJqaJraJraJsaJraJraJraJraJtaJuaJvaJvbEDbEFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaaIfaIbaJxaJyaJzaJAaJBaJCaJDaJEaJFaJGaJHaJIaEPaERaJJaHhaJKaJLaJMaJNaJMaJOaJPaxCaJQaJRaJSaJTaJUaJVaJWaJXaJYaJZaJZaJZaKaaJZaJZaKbaKcaHpaaaaGwaKdaICaKeaIEaKfaGwaaaaDOaDTaDUaKgaKhaKiaKjaKkaDUaAYbyxaKlaKlaFmaKmaHAaFpaKnaFpaHAaKoaFtaKpaKpbyxaKqawyaKraXfaEjborbEWbEWbEWbEWaKsaKtaKuaKvaKwbEXbEXbEXbEYbEXbGgbGsbyfaKzaKAbGsaKBdNBdNcbjEbjEbjEbjEbjEbGtbGtbGtaJvaJvaJvaJvbGubGCaJvaJvaJvaJvbDKbDKaKCbGRdNCaKDaKEaKFaKGaKHaKIaKJbGSbGSbGSbGSbGTaKKaKLbHwbHwbHHbHwbHNbHwbHwbHYaKNaOeaOeaKObEFbIgbIgbIgbIgbIgbIgbIgbIgbIgabAacOaaaaaaaaaaaaaaaaaaaaaaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaKQaKRaKSaJGaKTaJzaKTaJzaKTaJzaKTaJGaKUaKVaGdaERaKWaHhaKXaKYaKZaLaaLbaLcaHhaLdaLeaLfaLgaLhaLiaLjaHnaLkaJZaJZaJZaJZaJZaJZaJZaKbaLlaHpaabaGwaLmaLnaLoaLpaLqaGwaabaDOaDTaDUaLraLsaLtaLuaLvaDUaAYbyxbyxbyxbyxaLwaGCaDWaGDaDWaGCaLxbyxbyxbyxbyxaLyaLzaLAaXfaHDaLBaLCaLCaLCaLDaLEaADbJdaLFaLGbJdaLHdNVaLIbJdaLJbJuaLKaLLaLMaPjaLNaLOaLPaLQaLQaLOaLRaLSaLSaLSaLSaLSaLTaLUaLSaLVaLWaLXaLYaLZaMaaMaaMbaMcaMdaMdaMdaMeaJuaMfbKWbKDaMibLLaMjaMkaMlbLMbLNaMmbLNaMnaMoaMpaMqaMrbLPaMtaMuaMvaMwaMxbEFaMyaMzaMAaMBaMCaMDaMEaMFaMGaMHaaaaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMJaJzaJzaIcaJGaKTaJzaKTaMKaKTaJzaKTaJGaKUaKVaGdaERaMLaHhaHhaMMaMNaMOaMNaHhaHhaySaySaySaMPaMQaMRaMSaHnaMTaMUaMVaJZaJZaMWaJZaMXaMYaMZaHpaaaaGwaGwaNaaNbaNaaGwaGwaaaaDOaDTaDUaNcaNdaNeaLuaNfaDUaAYbyxaDVaDWaNgaIMaGCaDWaGDaDWaGCaIOaNhbyxbyxbyxaNiaNjaNkbLQaNmbNlasnasnbNtbNqaNnaNobCtaNpaHGbCtaNqbCtaNrbCtaNsbNuaNuaNvaNwbNQaNyaNzaNAaNBbOsbNRaNDbOsbOsbOxbOsaNzaNFaNzaJsaNzaNzaNGaNHaNIaNJaNJaNKaNLaNMaNNaNJaNOaJrbOAbPdaNQaNRaNSaNTaNUaNVbLMaNWaNXbLNaNYaNZaOaaObaMrbPgaMtaMuaMvaOdaOebEFaOfaOgaOgaOhaMFaMFaMFaMFaMGaMHaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaOiaKRaKSaJGaKTaJzaKTaJzaKTaJzaKTaJGaKUaKVaGdaERaOjaOkaOlaOmaOnaOoaDyaOpaOqaOraOsaOtaOuaOvaOwaOwaHnaOxaOyaOzaOAaOBaOCaODaOEaOFaOGaHpaaaaabaaaaOHaOIaOHaaaaabaaaayaaDTaDUaOJaOKaOLaOMaONaDUaAYbyxaOOaOPaFmaOQaORaFpaOSaFpaOTaOUaOVbyxaOWaOXaOYaOZaPaaPbaPcbPhaaaaaabNtbPSaPfaPgbCtaSyaSzaHGaHGaPiaHGaHGaHGbScaPjaPkaPjbSUbSYaPjaPmaPjbTcaPnaPoaPpaPqaPrbTcbTHbUbbTYbUgbTYbTYbTYbTYbUhbTYbTYbUmbTYbTYcDpcDpaPvaJubLLaPwaNRaPxaPyaPzaPAaPBbUoaPDaPEbLNbDSaPGaPHaPIaPJbPgaMtaMuaMvaPKaRtbEFaPMaOgaOgaOhaMFaMFaMFaMFaMGaMHaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPNaPOaIbaJxaJGaJzaJzaPPaJzaJzaPQaJzaJGaJHaPRaPSaERaPTaPUaPVaPWaPVaPVaPVaPVaPVaPXaDyaySaPYaPYaPYaPYaHnaPZaQaaQbaHnaHnaHnaHnaPZaQcaQdaHpaQfaQgaQgaQhaQiaQjaQgaQgaQkaQeaQlaDUaQmaDUaQnaQobVfaDUaQrbyxbyxbyxbyxaQsaQtaQuaQvaQuaQwaQxbyxbyxaQyaOZaOZaOZaOZaQzaQAbVVbVYbVXbNtaQEaPfaQFaPhbCtbCtbCtbCtbCtbCtaPjaPjbScaQGaQHaQIaQJaQKaQLaQMaQNbTcaQOaQPaQQaQRaQSbTcaQTaQUaQVaQWaQVaQXbieaQYaQZaRbaRcaRdaReaRfaRgcDpaRhaMabWaaRjaRkaPxaRlaPzaPAaRmbLNaRnaRoaRpaRqaRraObaObbLNbLNaMtaMuaMvaRsaPLbEFaRuaRvaRwaRxaRyaRzaMFaMFaRAaMHaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaMJaJzaJzaIcaJGaKTaJzaKTaMKaKTaJzaKTaJGaKUaKVaGdaERaMLaHhaHhaMMaMOaMNaMOaHhaHhaySaySaySaMPaMQaMRaMSaHnaMTaMUaMVaJZaJZaMWaJZaMXaMYaMZaHpaaaaGwaGwaNaaNbaNaaGwaGwaaaaDOaDTaDUaNcaNdaNeaLuaNfaDUaAYbyxaDVaDWaNgaIMaGCaDWaGDaDWaGCaIOaNhbyxbyxbyxaNjaNiaNkbLQaNmbNlasnasnbNtbNqaNoaNnbCtaNpaHGbCtaNqbCtaNrbCtaNsbNuaNuaNvaNwbNQaNyaNzaNAaNBbOsbNRaNDbOsbOsbOxbOsaNzaNFaNzaJsaNzaNzaNGaNHaNIaNJaNJaNKaNLaNMaNNaNJaNOaJrbOAbPdaNQaNRaNSaNTaNUaNVbLMaNWaNXbLNaNYaNZaOaaObaMrbPgaMtaMuaMvaOdaOebEFaOfaOgaOgaOhaMFaMFaMFaMFaMGaMHaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJHaOiaKRaKSaJGaKTaJzaKTaJzaKTaJzaKTaJGaKUaKVaGdaERaOjaOkaOlaOmaOnaOoaDyaOpaOqaOraOsaOtaOuaOvaOwaOwaHnaOxaOyaOzaOAaOBaOCaODaOEaOFaOGaHpaaaaabaaaaOHaOIaOHaaaaabaaaayaaDTaDUaOJaOKaOLaOMaONaDUaAYbyxaOOaOPaFmaOQaORaFpaOSaFpaOTaOUaOVbyxaOWaOXaOYaOZaPaaPbaPcbPhaaaaaabNtbPSaPfaPgbCtaPhaSzaHGaHGaPiaHGaHGaHGbScaPjaPkaPjbSUbSYaPjaPmaPjbTcaPnaPoaPpaPqaPrbTcbTHbUbbTYbUgbTYbTYbTYbTYbUhbTYbTYbUmbTYbTYcDpcDpaPvaJubLLaPwaNRaPxaPyaPzaPAaPBbUoaPDaPEbLNbDSaPGaPHaPIaPJbPgaMtaMuaMvaPKaRtbEFaPMaOgaOgaOhaMFaMFaMFaMFaMGaMHaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPNaPOaIbaJxaJGaJzaJzaPPaJzaJzaPQaJzaJGaJHaPRaPSaERaPTaPUaPVaPWaPVaPVaPVaPVaPVaPXaDyaySaPYaPYaPYaPYaHnaPZaQaaQbaHnaHnaHnaHnaPZaQcaQdaHpaQgaQfaQfaQhaQjaQiaQfaQfaQkaQeaQlaDUaQmaDUaQoaQnbVfaDUaQrbyxbyxbyxbyxaQsaQtaQuaQvaQuaQwaQxbyxbyxaQyaOZaOZaOZaOZaQzaQAbVVbVYbVXbNtaQEaPfaQFbCtbCtbCtbCtbCtbCtbCtaPjaPjbScaQGaQHaQIaQJaQKaQLaQMaQNbTcaQOaQPaQQaQRaQSbTcaQTaQUaQVaQWaQVaQXbieaQYaQZaRbaRcaRdaReaRfaRgcDpaRhaMabWaaRjaRkaPxaRlaPzaPAaRmbLNaRnaRoaRpaRqaRraObaObbLNbLNaMtaMuaMvaRsaPLbEFaRuaRvaRwaRxaRyaRzaMFaMFaRAaMHaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPNaIbaIcaIbaIbaIdaIeaIbaIbaIcaPOaRBayaaRCaPTaCyaRDaRDaREaRDaRFaySaRGaRHaDyaRIaRJaRKaRLaRMaRNaRLaROaRLaRLaRLaRPaRLaRLaRQaRRaRSaRTaRUaRVaRTaRWaRTaRTaRTaRTaRXaRYaRZaRLaRLaSaaSbaScaSdaSeaSfaSgaShaSiaSjaSkaSkaSkaSkaSkaSkaSlaSmaSnaSoaSpaSqaSraSsaStaSuaOZaOZaSvaSwaSxaSwaSxaYubjuaSBaSCaSDaSEaPjaSFaTEaSHaSIaSJaSJaSKaSLaSMaSNbTcaSOaSPaSQaSQaSRbTcaSSaSTaSUaSVaSWaSWaSXaSZdhSaSYaTaaTbaTcaTdaTebTYaPvaTfbLLaTgaThaThaTiaTjaThaTkbLNaTlaTmbLNaTnaToaObaTpbLNaTqaTraTsaMvaOeaOebEFaTtbIgbWdbWebIgbIgbIgbIgbIgabAacOaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCyaTuaTvaHcaHcaHcaHcaTwaTuaCyaHeayaaTxaTyaTzaTAaTBaTCaTCaTDaySaSGaRHaTFaTGaRJaTHaTIaTJaTKaTKaYgaTLaTLaTLaTMaTNaTNaTOaTPaTQaTKaTKaTRaTSaTTaTUaTVaTVaTWaTVaTXaTSaTSaTSaTYaSbaScaSdaSeaSeaSeaSeaTZaSeaSeaSeaSeaSeaSeaUaaUbaUcaUdaUeaUfaUgaUhaUiaUjaUkaUkaUkaUlaUmaUmaUmaUnaSEaSEaSEaUoaUpaSEaPjaUqaUraSJaSJaUsaSJaUtaUuaSMaUvbTcaUwaUxaUyaUzaUAbTcaUBaUCaUDaUEaUFaUGbTYbWQaUIbWQbTYbTYbTYbUmbTYbTYaPvaJubLLaUJaNRaNRaNRaUKaNRaULbLNbLNbLNbLNbLNbLNbLNaUMbLNaMvaMvaMuaMvaUNaUOaOeaUPaUQbztaSAaUTaUUaUVaUWaUXaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaGbayaaTzaAPaGdaUYaUZaVaaVbaGdaAPaVcaVdayaaVeaPTaTzaVfaVgaTCaTCaTDaySaVhaRHaDyaTGaRJaViaVjaVkaRLaRLaVlaVmaVnaRLaVoaVpaVqaVpaVraVsaVpaVpaVtaVpaVpaVuaVvaVpaVwaVpaVxaRLaRLaRLaVyaVzaVAaVBaVCaVDaVCaVEaVFaVEaVEaVEaVEaVEaVEaVGaVHaVIaVIaVIaVIaVJaVIaVKaVLaVIaVIaVMaVNaVOaVOaVOaVOaVOaVOaVOaVPaSEaSEaPjaVQaVRaVSaVTaVTaVUaVVaUuaSMaVWbTcbTcbTcbTcbTcaVXbTcaVYaVZaWaaWbaQVaWcbTYaXAaWeaWfaWgaWhaWjaWkaWdbTYaPvaJubLLaWlaWmaNRaWnaWoaNRaWpaWpbLLaWqaWraWsaOeaWtaWuaWvaMvaMvaWwaWxaOeaWyaOeaWzaUQaURaWAaWBaUQaUQaWCaWDaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCyaTuaTvaHcaHcaHcaHcaTwaTuaCyaHeayaaTxaTyaTzaTAaTBaTCaTCaTDaySaSyaRHaTFaTGaRJaTHaTIaTJaTKaTKaYgaTLaTLaTLaTMaTNaTNaTOaTPaTQaTKaTKaTRaTSaTTaTUaTVaTVaTWaTVaTXaTSaTSaTSaTYaSbaScaSdaSeaSeaSeaSeaTZaSeaSeaSeaSeaSeaSeaUaaUbaUcaUdaUeaUfaUgaUhaUiaUjaUkaUkaUkaUlaUmaUmaUmaUnaSEaSEaSEaUoaUpaSEaPjaUqaUraSJaSJaUsaSJaUtaUuaSMaUvbTcaUwaUxaUyaUzaUAbTcaUBaUCaUDaUEaUFaUGbTYbWQaUIbWQbTYbTYbTYbUmbTYbTYaPvaJubLLaUJaNRaNRaNRaUKaNRaULbLNbLNbLNbLNbLNbLNbLNaUMbLNaMvaMvaMuaMvaUNaUOaOeaUPaUQbztaUSaUTaUUaUVaUWaUXaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaGbayaaTzaAPaGdaUYaUZaVaaVbaGdaAPaVdaVcayaaVeaPTaTzaVfaVgaTCaTCaTDaySaVhaRHaDyaTGaRJaViaVjaVkaRLaRLaVlaVmaVnaRLaVoaVpaVqaVpaVraVsaVpaVpaVtaVpaVpaVuaVvaVpaVwaVpaVxaRLaRLaRLaVyaVzaVAaVBaVCaVDaVCaVEaVFaVEaVEaVEaVEaVEaVEaVGaVHaVIaVIaVIaVIaVJaVIaVKaVLaVIaVIaVMaVNaVOaVOaVOaVOaVOaVOaVOaVPaSEaSEaPjaVQaVRaVSaVTaVTaVUaVVaUuaSMaVWbTcbTcbTcbTcbTcaVXbTcaVYaVZaWaaWbaQVaWcbTYaXAaWeaWfaWgaWhaWjaWkaWdbTYaPvaJubLLaWlaWmaNRaWnaWoaNRaWpaWpbLLaWqaWraWsaOeaWtaWuaWvaMvaMvaWwaWxaOeaWyaOeaWzaUQaURaWAaWBaUQaUQaWCaWDaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaySaDwaTuaPSaERaDyaDyaESaPSaTuaPSaWEaWFaWGaWHaDwaWIaWIaREaWIaRFaySaWJaRHaDyaySaPYaPYaWKaYraYraYraYraYraYraWLaWMaYraYraYraYraYraYraWNberaZYaZYaWOaZYaZYaZYaWRaWPaWTaWUaWQaWVaPYaWWaWWaWXaWXaWXbXMbXNbXNbXNbXNbXNbXNbBMbXObYMbYmcbAbYmcbBcbBcbGcbDcbZcbYccwbXOccIbVYbVYbVYbVYbVYbVYccJaXkaXkaXkaPjaXlaXmaXnaXnaXnaXnaXoaKyaXpaXqaXraXsaXtaXuaXvaXwbTcbTcaXxccOcencdjcfnbTYaWiaXBaXCaXCaXCaXCaXDaRabTYaXFaJubLLaXGaNRaWnaWnaWoaWnaNRaXHbLLaXIaXJaXKaOeaMvaXLaXMaXNaXNaXOaXPaXQaXRcfoaXSaXTaXUaXVaUSaUQaUQaXWaWDaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCyaXXaDyaXYaXZaYaaYbaYcaYdaYbaYeaYfaYbaYbbcOaYhaYiaYjaYkaYkaYkaYlaYkaYmaYnaySaYoaYpaYqaYraYsaYtaWSayCayBaYxaYyaYzaYAaYBaYCaYDaYrbblaYvaZYbbzaYwaYFaYEaZYaZYaZYaYMaYMaYKaYLaYMaYMaYMaYNaSeaSjcfsaaaaaaaaaaaaaaaaaaaaabXOaYPaYQaYRaYSaYTaYUaYVaYWaYXaYYaYZbXOaaaaaaaaaaaaaaaaaaaaacftaZaaSEaZbaPjaZcaXmaXqaXqaXqaXqaXqaZdaZeaXqaXqaXqaXtaZfaZfaZgaZhaZiaZjaZkaZlaZmaZnbTYaZoaZpaZqaZraZraZqaZsaZtbTYaPvaZubLLaZvaZwaNRaWnaWoaNRaZxaZxbLLbLLaZybLLaOeaZzaWuaWxaZAaZAaZBaWxaOeaOeaOeaZCaUQaZDaZDaZEaZDaUQaZFaWDaaaaaaaaaaZGaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCyaXXaDyaXYaXZaYaaYbaYcaYdaYbaYeaYfaYbaYbbcOaYhaYiaYjaYkaYkaYkaYlaYkaYmaYnaySaYoaYpaYqaYraYsaYtaYxayCayBaYxaYyaYzaYAaYBaYCaYDaYrbblaYvaZYbbzaYwaYFaYEaZYaZYaZYaYMaYMaYKaYLaYMaYMaYMaYNaSeaSjcfsaaaaaaaaaaaaaaaaaaaaabXOaYPaYQaYRaYSaYTaYUaYVaYWaYXaYYaYZbXOaaaaaaaaaaaaaaaaaaaaacftaZaaSEaZbaPjaZcaXmaXqaXqaXqaXqaXqaZdaZeaXqaXqaXqaXtaZfaZfaZgaZhaZiaZjaZkaZlaZmaZnbTYaZoaZpaZqaZraZraZqaZsaZtbTYaPvaZubLLaZvaZwaNRaWnaWoaNRaZxaZxbLLbLLaZybLLaOeaZzaWuaWxaZAaZAaZBaWxaOeaOeaOeaZCaUQaZDaZDaZEaZDaUQaZFaWDaaaaaaaaaaZGaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDwaZHaZIaZHaZHaZHaZHaZHaZHaZIaZHaZHaZJaDyaZKaZLbCZaDyaZMaDyaZNaZOaZPaZQaZRaySaYpaYpaZSaYraZTaYxaYxaYxaYxaYxaYyaZUaYxaYxaYxbFjaYrbblaYGaZYaYIaYHaYJaYJbabbbyaZVaYMbadbaebafbagbahbaiaYNaSeaSjcfsaaaaaaaaaaaabXObXObXObXObajbakbalbambanbaobapbaqbarbasbatbXObXObXObXOaaaaaaaaaaaacftaZaaSEaSEbauaXqbavbawbaxaXqbaybazaJabaAbaBbaCaXqaXtdqXaZfbaDbaEaZfbaFbaGbaHbaIaZfcfubaKbaLaZqaZraZraZqbaMbaNbTYaPvbaObLLaXGaNRaWnaWnaWoaWnaNRaNRbaPbaQaNRbaRaOebaSbaTbaUaZAaZAbaVbaUbaWaOebaXbaYaUQbaZbaZbbabaZaUQaXWbbbbbcbbdbbdbbeaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaayabbfbbgbbgbbgbbgbbgbbgbbgaGjayaaySbbhbbibbjbbjbbjbbjbbjbbjcfvbbjbbjbbjaySaYpbblbbmaYrbbnaYxaYxbbobbpbbqbbrbboaYxaYxaYxbbsaYrbblaYvaZYaZXaZWaZZaZZbacbaaaZVaYMbbAbbBbbCbbDbbEbbFbbGbbHaSjcfwcgtaQqbXObXObXObbJbbKbbLbbMbbNbbNbbObbPbbNbbQbbNbbRbbSbbTbbUbbVbbWbXObXObXOaQqccIcgIaZaaSEaSEaPjbbYbavbaBbaxaXqbbZbcaaXqbcbbccbaCaXqaXtaZfaZfbcdbcebcfbcgbchbcibcjaZfcgVbaKbclaZqaZraZrbcmbcnbaNbTYaPvbcobLLbcpbcqbcraWnaWobcsaNRaNRbctaNRbcubcvaOebcwbcxbcyaZAaZAbczbcybcAaOebcBbaYaUQaUQaUQaUSaUQaUQbcCbcDbcEbcFbcGbcHaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIaabbcJaGeaDAbcKbbjbcLbcMbcNbcRbcPbcQbhlbcSbbjbcTbcUbcVbcWaYrbcXaYxaYxbbobbqbcYbbtbboaYxaYxbdabdbaYrbblaYvaZYaZYbbuaZYaZYaZYaZYaZYaYMbdcbbDbddbbDbdebbFaYNbdfaSjaSkaSkbdgcgWbdibXObdjbalbdkbbNbbNaMIbdlbdpbdnbdpbdoeTDbdqbdmbdrbdsbdtbXObducgWbdvbdwbdxaZaaSEaSEbauaXqbdyaXqaXqaXqbdzbdAaXqbcbbdBbaCaXqaXtaZfaZfbdCbdDbdEbdFbdGbdHbcjbdIbTYbdJbclaZqaZraZraZqbcnbdKbTYbdLchpbLLchqbLLbLLbdMaWobdNbdOaNRbdPbdQaRlbdRcfobdSbdTbdUbdVbdVbdWbdXbdYcfobdZbeaaUQbebaUQaUSaUQaUQbecbedbbcbbdbbdbeeaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbefbegbehaERaZKbbjbcLbeibejbcLbekbelbembenbbjbeobepbeqberaYrbesbetbeubevbewbexbeybezbezbezbeAbeBaYrbblbcUbeDbeEbeFbblbblbeGberbbvaYMbeIbeJbeKbeLbeMbeNaYNbdfaSeaSeaSebeObePbeQbeRbeSbeTbbNbeUbeVbeWbeXbeYbeZbfabfbbfcbfdbfebeSbffbfgbfhbfibfjbfkbflbfmbfnaSEbfoaPjaXqbfpbfqbaCaXqbfrbfsaXqbftbfubaCaXqaXtaZfaZfaZfaZgaZfbfvaZfbdHbcjbfwbTYbfxbclaZqaZraZraZqbcnbfybTYbfzbfAbOYbfBbfCbfDbfEbfFbfGbfGbfGbfGbfGbfGbfHbfIbfJaZAaZAaZAaZAaZAaZAbfKbfLbfMbaYaUQaUQaUQaUSaUQaUQbfNaWDbfObfObfOaWDaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbfPbfQbfRbfSaZKbbjbfTbcLbfUbfUbfUbfVbcLbfWbbjbfXbfYbeqbfZbfZbfZbfZbgabfZbgbaYxbgcbgdbgebgebgfbggaYrbghbgibgjbgkbglbgmbgmbbwdIjbgobgpbgpbgpbgpbgpbgqaYMaYNbgrbgsbgtbgubgvchrbgxchsbgybeZbgzbgAcNxcNxcNxcNxbgBcNxdiMdiOdiNbgFbgzbgGbgHbXObgIchtbgKbgLbgMbgNaSEaSEbauaXqbgOaXqaXqaXqaLLaXqaXqbgPbgPbgQbgQbgRaZfaZfbgSbgTaZfaZfaZfbgUbgVbgWbTYbaNbclaZqaZqaZqaZqbcnaXEbTYbgXbgYbgYbgZbgYbhaaWnaWnaWnaWnbhbaWnaWnaWnbhcbfLaZAaZAaZAaZAaZAaZAaZAbfKbfLbfMbaYaUQaZDaZDaZEaZDaUQbhdaWDbhebhfbhgaWDaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbhibhjbehbhkaWHbjQbcLbhmbfUbfUbfUbfVbhmbcLbbjbhnbhobeqbfZbhpbhqbhrbhsbfZbbxbhubhvaYrbhwbhxbhybhzaYrbblbhAbhBbhBbhCbhBbhBbhBbhBbhDbhEbhEbhEbhFbhEbhGbiWbhHbhIbhJchuchuchuchuchuchucjcbhKcjccNxcNxbhLbhMbhNbhObhPbhQbhLdiPcNxcjVbhRcjVcjVcjVcjVcjVcjVcjVbgNaSEaSEaPjbhSbhTbprbhUaXqbhVaXqbhWbhXbhYbgQbhZbTcbiabibbTcbTcbicbidbidbidbTcbTcbTYcgrbifbigbigbigbigbifbihbTYbiibgYbgYbgZbijbLLbikbilbimbinbiobipbiqbirbisaOebitaMvbiuaZAaZAbiuaMvbivaOebiwbaYaUQbaZbaZbbabaZaUQbfNaWDbfObfObfOaWDaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbixaDwbiybizbiAbbjbeibeibeibcLbiBbiCbiDbiEbbjbiFbiGbeqbfZdHcbfZbiHbiIbfZbiJbiKbiLaYrbhwbhxbhybiMaYrbblbhAbhBbiNbiObiPbiQbiRbhBbiSbiTbiUbiVbiWbiWbiWbiWbiXbiYbiZchubVzbjbbjcbjdbjebjfbjgbjhcNxbjibhNbjjbjkbjlbjkbjjbhNbjmcNxbjnbjobjpbjqbjrbjsbjtboocjVbjvbjwbjwcmhaPjaPjaPjaPjbjybaubjycmSaPjbSYaPjaPjbTcbTcbTcbTcbjAbjBbjBbjBbjBbjCbjDbTYcncbjFcncbjGbjGcncbjFcncbTYbiibgYbgYbjHbijbLLbLLbLLbLLbLLchqbLLbLLbLLbLLaOecndcnQcnecnecnecnecoLaOeaOebjJbjKaUQaUQaUQaUSaUQaUQbecbbbbjLbbdbbdbjMaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGbayabjNaHcbehaySaySaySaySaySaySbjObjPbbjbbjbbjbbjbbjbbjccWbbjbbjbbjbjRbjRbjSbfZbjTbjUbiHbjVbfZbjWbjXbjWaYrbhwbhxbhybjYaYrbblbhAbhBbjZbkabkbbiQbkbbhBbiSbkcbkdbkebkfbkgbkhbiWbkibkjbiZcoMbklbkmbknbkobkobknbkpbkqcNxbkrbhNbhNbksbktbjkbjjbhNbkudiNbkvbkwbkxbkybkzbkAbkxbkBcjVbkCbkDbkEbkFbkGbkHbkIbkJbkJbkJbkJbkJbkJbkKbkLbkMbkNbkJbkObkJbkJbkJbkJbkJbkJbkJbkJbkPbkQbkRbkRbkRbkRbkRbkRbkSbkHbkTbkUbkUbkVbkWbkXbkWbkYbkWbkZblablbbkWblcbldbleblfblgblgblgblgblgblgblgblhblibljbljbljbljblkbljbllblmblnbloblpbcGblqaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblraaaaabblsaGebltblublvblwblwblwblwblwblxblyblzblAblBblCbjSbfZbfZbfZblDbiIbfZaYraYraYraYrbhwblEblFblGaYrblHblIbhBblJblKbiQbkbblLbhBbiSblMbkdbkebkeblNblObiWblPbkjbiZcoNblRblSblTblUblVblWbkpblXcNxblYbksbhNblZbmablZbhNbksbmbdiPbmcbkxbkxbkybmdbkAbkxbmecjVbmfbkEbkEbkFbkGbkHbkJbkJbkJbkJbkJbkJbkJbmgbkJbkJbkJbkJbkJbkJbmhbmibmibmibmibmibmibmibmibmibmibmibmibmibmibmjbmkbmlblgblgbmmbgYbgYbgYbgYbgYbgZbgYbgYbgYbgYbgYbgYbgYbgYbgYbgYbgYbgYbmnbgYbmobmpaUQaUQaUQaUQaUQaUQaUQbmqbedbbcbbdbbdbbeaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblrblrbefbegbmrbmsbmtbmubmubmubmvbmubmueIGbmweNcberberberbXHbfZbhpbmxbmybjVbfZbmzbmAbmzaYraYraYraYrbmBaYrbmCbhAbhBbmDbmEbkbbmFbmGbhBbiSbiWbmHbkebkebkebmIbiWbmJbkjbiZcoObmLblSblTbmMbmNblWbkpbmOcNxbmPbmQbhNbmRbmSbmTbjjbmUbmVdiQbmXbmYbmZbnabnbbncbkxbndcjVbnebnfbkEbkFbkGbkHbkJbngbkJbkJbkJbkJbnhbnibnibnibnibnjbkJbkJbkJbkJbnkbkJbngbnlbkJbnmbnnbnobkJbnpbnqbnqbnrbnsbntbnubgYbgYbgYbgYbgYbgYbgYbnvbnwbnxbgYbgYbgYbgYbgYbgYbgYbgYbgYbgYbnybnzbnzbnAbnBbnCbnDbnEbnEbnEbnEbnFbnGbnHaabaaaaaaaabaKPaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblrblrbnIbnJbnKbnLbnMbmubnNbnObnPbnPbnQeJnbnSbnTbnUbnUbnVbnWbfZbfZbfZbiHbnXdHcberberberberbnYbblbblbnZbgmboabobbocbodboebofbogbohbhBboibiWbojbkebkebkebokbolbombkjbonchudwtbopbknbknbknbknbkpboqcNxdiRdiScNxcNxcNxcNxcNxcNxcNxdiPcjVbosbotboubovbowboxboycjVbozboAboAcpTcpTcpTcpTcpTcpTcpTcqxcqxcrkcqBboDboDcqBcrkcqxcqxcrtcrtcrtcrtcrtcrtcswcswboEcswcswcswcswcswctpboFcvyboGbgYbgYboHboHcxOcxOcxOcxOcxOboIbnzbnzbnybnzbgYbnzbnzbnzbnzboJcxQcxQcxQcxQboKcxYcxYcxYcxYcxYcxYcxYcxYcxYaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblrblrbhibhjbmrbmsboLbmuboMbmuboNboObmueIGeIGaZSboPboQboQboRbfZbhpboSbiHboTdHcboUboVboWboXboYboZboZbpaboZbpbbpcbhBbpdbpecaMbpfbpgbocbphbiWbpibkebkebpjbpkbplbombkjbpmchubpnbpobppbpqdwsbpsbptchuchubpuczkbpvbpwbpxbpwbpyczkaaaczEcjVbpzbpAbpBbpCbowbkxbpDcjVbpEbpFbpGcpTbpKbpIbwpbpJbpLcAgbpNbpObpPbpQbpRbpRbpQbpSbpTbpUcrtbpVbpWbpXbpYcrtbpZbqabqbbqcbqdbqebqebqfctpbqgcBocAMbqhcAMbqibqicxObqjbqkbqlcxOcBSbqncBScxObqobnzboJcxQcCqbqqcCqcxQbqrbqscxQbqtbqubqvcDsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblraaabqwaTzbqxbizbqybmubqzbmubqAbqBbqCbqDbmubqEbqFbqGbqHboRbfZbfZbfZbfZbfZbfZbqIbqJbqKbqLbqMbhBbhBbhBbhBbhBbhBbhBbqNbhBbhBbhBbqObhBbqPbqQbqRbkebkebkebqSbolbqTbkjbqUchubqVbpocjccjccjcchubqWchubqXbqYcDXbqZbrabrbbrcbrdcDYbrebrfcjVbrgbkxbrhbribowbrjbkxcjVbrkbrlbrmcpTbKXbrobrpbrqbrrbrsbrtbpRbpRbpRbpRbpRbpRbpRbrubrvcDZbrxbrybrzbrAcrtbrBbrCbrDbrEbrFbrGbrCbqfctpbrHcBobrIbrJbrKbrLbrLcEFbrMbrNbrObrPbrQbrRbrScxOcFEbrTcGWcxQbrUbGybrWbrXbrXbrYcxQbrZbsabsbcDsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGbayabjNaHcbhjbbgbbgbbgbscbbgbsddDZbsebsfbmubsgbshbsibsjbskbslbsmbcWbblbblbblbsnbnUbnUbnUbnUbnUbnUbsobspbspbsqbsrbhBbssbstbsubsvbswbsxbsybszbhBbsBbsCbsDbphbolbqRbkebkebsEbiWbiWbsFbsGbsHcGXbsIbsJbsKbsLcIWbsMbsNcJFbsObsPcDYbsQbsRbsQbsRbsScDYbrebsTdjnbsUbsVbsWbsXbsYbsZbtadjnbtbbpFbpFcpTchFbtdbtebtfbSXcpTbrtbpRbpRbpRbpRbpRbpRbpRbthbtibtjbtkbtlbrxbtmcrtbtnbtobtpbrEbqfbrGbtqbtrctpbtseKcbtubtvbtvbtwbtxbtybtzbtAbtAbtAbtBbtAbtCeKdbtEbtFbtGeKebtHbtIbtJbtJbtJcifcxQbtLbsabtMcDsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtNbtObtPbtQbtRbtSbtSbtTbtUaDybmubtVbtWbsjbtXbmubmubmuberbtYbtZbuabubbuabuabuabubbuaberberbhBbhBbhBbucbhBbudbudbudbudbudbudbsybuebufbugbuhbuibujbukbulbumbunbuobupbuqburbusbutbuubuvbuvbuwbuxeKfbuybuzeKgbuAbuBczkbuCbrcbuDbrabuEczkaaabuFeKheKibuGeKheKheKheKhbuHcjVbuIbpFbuJeKjbRKbuLbuMbuNbRJcpTbuPbuQbuRbuSbuTbuUbuVbuWbrubuXcrtbUjbtlbuZbvacrtbvbbvcbrDbrEbqfbrGbrCbqfctpbrHcBobvdbvebvfbvgbvheKkbvibvjbvkbvlbvmbvnbvocxObvpbvqbvrcxQbvsbvtbvubrXbvvbRLcxQbtLbsaciNcDsaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabtNbvybvzbvAaDxaDxbvBbvCaDxbvDbmubvEbvFbvGbvHbmuaaaaaaaaaaabaabbvIbvIbvIbvIbvIbvIbvIaaaaaabvJbvKbvLbvMbvNbudbudbudbudbudbudbvObvPbvQbvRbvSbvTbvUbvVbiWbiWbvWbiWbiWbiWbvYbvZbwaeKlbwbeKmeKmeKneKmeKobwceKpbwdbuBczkbwebpwbpwbpwbwfczkaaabuFeKhbwgbwhbwibwjbwkeKqbwleKrbwmbpFbwncpTbpKbwociLbwqbuYeKsbwtbwubwvbwwbwxbwybwzbwAbwBbwCeKtbwDbtlbwEbwFcrtbwGbwHbwIbwJbwKbwLbwMbqfctpbwNeKubwPbwQbwQbwRbwSeKvbwUbwVbwWbwXbwYbwZbxacxObxbbvqbxccxQbxdbxebxfbrXbrXbNMcxQbrZbsabxhcDsaaaaaaaaaaaaaabbxibxjbxkbxjbxkbxjbxlaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxmaDwbxnbxnbxobbgbxpaGbayabxqbxpbmubxrbxsbxtbxubmuaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIaaaaaabxvbxwbudbxxbxybxybxybxybxybxzbxAbxybxBbxCbxDbxEbxFbxGbxHbiWbxIbkebxJbxKbxLbxMbxNbxOeKleKleKpbxPbxQbxRbxSbxTeKpbpubuBczkbxUbxVbxWbxXbxYczkaaabxZeKhbyabybbyceKwbydeKwbyeeKxciPbpFbygcpTeKzeKyeKAbyjeKCeKBbylbymbynbyobypbypbyqbyrbysbytcrtbwDbyubyvcrtcrtcsweKDeKFeKEcswctpctpctpeKGbyycBobyzbvebvfbyAbwQeKHbyCbyDbyDbyEbrObyFbyGeKJeKIbrTeKKcxQbyJbyKbrXbyLbyMbNLcxQbtLbyOcDscDsaaaaaaaaaaaaaabbyPbyQbyRbySbySbyTbyPaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbyWbyXbyYbFbbyZbzabzbbzbbzbbyZbudbsybuebudbudbufbzcbzdbzebzfbzgbzhbzibkebkebzjbzkbxMbxNbzlbzmbznbzobzpbzqbzrbzsciQeKpbzubzvcDXbzwbzxbzybzzbzAcDYbrebzBeKhbzCbzDbzEeKwbzFeKwbzGeKxbzHbpFbzIcpTbzJbzKbzLbzMbzNeKLbzObzPeKMeKMeKNbzReKMeKMbzSbzTeKPeKObzUbzVbzWbzXbzYbzZbAabAbbAceKQbAdbAebAfbAgcBobAhbAibAjbAkbAlcEFbAmbyDbyDbAnbAobyFbApcxObAqbAqbArcxQbAsbAtbAubAvbrXbyNcxQbtLbAxcDsaaaaaaaaaaaaaaaaabbAybAzbyRbySbyRbAAbxkaabaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbABbACbABbADeHueHveHueHueHueHubAEbsybuebAFbhBbhBbAGbkebuhbzfbAHbAIbAJbAKbAKbALbAMbANbAObAPeKRbARbASbATbAUbAVbAWbAXeKpbwdbuBczkbAYbAZbBabBbbBcczkaaabxZeKSeKTeKSeKSeKSeKSeKSbBdeKSbBebpFbzIcpTbCFbBgbBgbBhbBieKBbBjbBkeKUbBmbBnbBobBpeKUbBqbBrbBsbBtbBubBvbBwbBwbBxbBybBzbBAbBBbBCbBDbBEbBFbBGbBHbBIbBIbBJbBKbBLcEFciTbrObrObBNbBObyFbBPbBQbBRbBSbBTeKVbBUeKXeKWbBWeKYcxQcxQbBXeKIeKIeKZeLaeLaeLaeLbeKIbyPbySbyRbySbySbCbbyPaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbCcbCdbCcbCebudbzabzbbzbbzbbudbudbsybuebCfbCgbhBbChbkebuhbzfbCibCjbCkbkeblNbkebClbxMbpFbCmeLcbARbCnbCobCpbCqbCrbCseLdeLfeLeeLgeLgbCubCvbCwczkczkaaabxZeKSbCxbCybCzbCAbCBbCCbCDeLhbCEbpFbzIeKsbBfbCGbCHbCIbCJeKBbCKbCLbCMbCNbCObCPbCQbCRbCSbCTbCUbCVbCWbCXbCYciWbDabDbbDcbDdbDeeKQbDfbDgbDhbDicAMbDjbDkbDlbDmbDmcEFbDnbDobDpcEFbDqbyFbDrcEFbDsbDtbDubDvbDwbDxbDybDzbDAbDBbDCbDDbDEbDFbDGbDGbDHbDIbDJeLibDLbxjbxkbDMbxkbxjbDNaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbDObyXbDPbDQbudbzabudbudbudbudbudbsybuebCfbDRbhBbFnbkebDTbDUbkebDVbkdbkebkebdhbxLbxMbpFbCmeLcbAReKpbDXbDYbDZbEabEbeLjbEcbEdbEeeLkcDYbEfeLlcDYbrebrebEheKSbEibEjbEkbElbEmbEmbEnbEobEpbpFbEqcpTeKBbEreLneLmbEteKBbCKbEueLobEvbEwbExbEyeLobCKbEzbEAeLpeLpeLpeLqeLpeLreLrbEBeLseLueLteLtbECeLueLueLteLteLweLveLweLwcEFcEFcEFcEFcEFeLxbEEeLycEFbEGbEHbEIbEJbEJbEKbELbEMbENbEObEPbEQbERbESbETbETbEUbDwbEVeKIeLzeLBeLAbEZeKIbFaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbCcbCdbCcbFbbFcbFdbudbudbudbFcbudbsybuebCfbFebhBbFfbkebuhbzfbkebolbFgbkebkebFhbzkbxMbpFbFieLCbFkeKpbFlbFmeHrbFobFpeLjbFqbFrbFsbFtbFubFvbFweLDaaaaaaaaaeKSbFxbFybFzbFzbFAbFBbFCeKSbFDbFEbzIbFFbFGbFHbFIbFJbFKbFLbFMbCLeLEbFNbFObFPbFQeLEbCKbEzbFRbFSbFTbFUbFVbKHeLrbFXbFYbFZeLubGabGbbGcbKIbGebGfeLFbDBbGhbEJbEJbGibGjbEJbGkbGlbGmbGnbGobEJbGpbGqbGreLHeLGeLJeLIeLKeLIeLIeLIbBXeKIeKIeKZeLbeKIbGvbGwbGxbrVbGzbGAbGBeLLaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbGDbGEbGDbGFbGGbGHbGHbGHbGHbGHbGIbGJbGKbCfbGLbhBbGMbGNbGObGPbGQeLNeLMeLPeLObIybIybGUbpFbGVbGWbAReKpbGXbGYbGZbDYbHaeLjbHbbHcbHdeLQbHebzybHfeLDaaaaaaaaaeKSbHgbHhbHibHjbFAbFBbFCeKSbHkbHlbHmbHnbHobHpbHqbHrbHsbHtbHubHveLoeLoeLRbHxeLoeLobCKbEzbHybHzbHAbHBbHCbHDeLrbHEbHFbHGeLSbHIbHJbHKbHKbHLbHMeLTbHObHPbDwbDwbHQbDwbHRbDwbHSbDwbHTbHUbHUbHVbHWbHXeLUbJobJhbIbbIcbIdbIeeLIbIfeLVaaaaaaaaaeKIbIhbIibIjbIkbIlbImbIneKIaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbIobIpbIqbhBbhBbIrbyXbyXbyXbIsbhBbhBbItbIubIvbhBbIwbIwbIwbIxbIwbIybIzbIAbIBbICbIybxMbpFbIDbvXbvXeKpeKpeKpeKpeKpbIEeLjeLgeLeeLXeLWeLYbIFeLDeLDczkczkczkeKSeKTeKSeKSeKSeKSeKSeKSeKSbIGbpFbIHeLZbUcbIIbIJbUcbUccjIbIKbILbIMbINbIObIPbIQbIRbFMbISbITbIUbIVbIWbIXbIYbIZbJabJbbJceMabJebJfbJgbGcbHZeLteLtbKJbKJbKJbKJbJibKJbKJbKJeMbbJjeMceMcbJkbJlbJmbJneLUbIabJpbJqbJrbJsbJteLIbIfeMdaaaaaaaaaeKIbJvbJweKIeLieKIeKIeLieKIaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabJxaabaaaaaaaaaaaabIwbJybJzbJAbJBbIybJCbJDbJEbJFbIybxMbpFbJGbJHbJIbJJbJKbJLbJMbJNbJObJPbJQbJRbJSbJTbJUbJVbJWbJXbJYbJZbKabKbbKcbKdbKeboAbKfbpFbKgbKhbKibpFbKjbUcbKkbKlbKmbKnbKobCKbKpbKqbKrbKsbKtbKubKvbKwbKxbKybKzeLpbKAbHBbKBbKCeMebKEbKFbKGeLubGdbGcbGcbGcbFWeLtbKJbKKbKLbKMbKNbKObKPbKQbKJbKRbKSbKTeMceMcbKUbJmbKVeMfbAwbKYbKZbLabLbbLceLIbLdcDsaaaaaaaaaeKIeKIeKIeKIaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIwbLebLfbLgbLhbLibLjbLkbLlbLmbIybxMbLnbLobpFbpFbzIbLpboAbKebKdbLqbLrbLqbLsbLtbLtbLubLvbLwbLtbLtbLxbLtbLybLtbKdbKeboAbLzbLAbLBbLCbLDbLEbpFbUcbLFbKlbLGbLHbLIbCKbLJbLKeMheMgeMibLOeMkeMjbCKbLRbLSeLpbLTbLUbLUbLVeMlbLWbLXbLYeLubLZbMabGcbMbbMceLtbKJbMdbMebMfbMgbMhbMibMjbKJbMkbKSbMlbMleMcbMmbMnbMobMpbMqbMrbMsbMtbMubMveLIbIfcDsbMwaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIaaaaaaaaaaaaaaaaaaaaaaaabMxbMybMzbMybMAaaaaaaaaabIwbIwbMBbMCbLgbMDbMEbMFbJEbMGbMHbIybxMbMIbMJbMKbMLbMMbMNbMObMPbMQbMRbMSbMTbMUbMVbMVbMWbMXbMXbMXbMXbMXbMXbMYbMZbNabNbbNcbNdbMLbNebNfbNgbNhbNibUcbNjbKlbKmbNkbLIbCKbLJbLKeMmbNmbNnbNobNpeMnbCSbNrbNseLpeLpeMoeMpeLpeMleLreMreMqeLubNvbNwbNxbNybNzeLtbKJbNAbNBbKMbNCbNDbNEbNFbKJbNGbKSbMlbMleMcbNHbNIbNJeMsbNKbtcbtgbNNbNObNPeLIbIfeMteMueMteMweMveMweMweMwaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNSbNTbNUbNVbNSbNWbNXbNYbIwbNZbOabObbOcbOdbOebOfbOgbOgbOhbIybOibOjbOkbXibXibOlbOmbOnbXicblcblbOobOpbOqcblcblbOrbKdbKdeMxeMyeMyeMyeMzbOteMyeMyeMAbOueMBeMBbOveMBbOweMCeMBeMDbOybOzbUceMEbOBbLJbOCeMFbODbOEbOFbOGeMFbCKbLRbOHeMGbOIbOJbOKbOLbOMbONeMHbOObOPbOQbORbOSbOTbOUeLtbKJbKJbKJbKJbKJbKJbKJbKJbKJbOVbOWbOXbOXeMccjKbOZbPaeLIeLIeLIeLIeLIeLIeLIeLIbIfeMtbPbbPceMIbPebPebPfeMwaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeMKeMJeMJeMLeMMeMMbQZbQZbQZbQZeMNaabaabaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMzbPibPjbPibMzbPkbPlbPmbPnbPobPpbPqbPrbPsbIybPtbPubPvbPwbIybOjbOjbPxbXibPybPzbPAbPBbPCcblbPDbPEbPFbPGbPHcblbPIbPJbPKeMybPLbPMbPNbPObPPbPQbPReMObPTeMPbPUbPVbPWbPXbPYbPZbQabQbbQcbQdbQebQfbQgbLKbQhbQibQjbQkbQlbQmbCSbQnbQobQpbQqbOKbQrbQrbQsbQteLubQubQvbQwbQxbQybQzbQAeLtbQBbQCbQDbQEbQDbQDbQFeMReMQbQGbQHbQIbQJeMcbQKbQLbJneKIbsabQMbQNbQObQObQNbQObQPeMtbQQbQReMIbPebQSbQTeMwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeMSbQVbQWbQVeMMbQZbQZbQXbQYbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNSbPibPibPibRabRbbMCbRcbRdbRebMCbPqbRfbRgbIybIybIybIybIybIybRhbOjbRicbXbRmbRkbRkbRkbRocbldrybRnbRnbRnduveMTbRpbRqbRreMUbRsbRtbRubRvbRwbRxeMyeMAbRyeMBbRzbRAbRBbRCbRDeMBbLFbKmbLGbLHbREbRFbRGbRHeMVbRIbwrbvwbuKeMFbRMbRNbROeMWbRPbRQbRRbRSbRTbRUeLueLueLueLueLueMXeMZeMYeLtbRVbQDbQDbRWbQDbRXbRYeNbeNabRZbKSbSabSaeMcbJlbSbbJneKIeMtbcZeMteMteMteMteMteMteMtbSdbSeeMwbSfbSgbSheMwaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacbSibQVbQVbSjbQZbQZbQXbQXbSkbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMzbPjbPjbPjbMzbSlbSmbSnbSobSpbMCbSqbSrbSsbStbSubSubSubSvbOjbOjbOjbPxbXibRlbRkbSwbRkbSxcblbSybRnbSzbRnbSAcblbSBbSCbSDeMybSEbSFbSGbSHbSIbSJeNdbSKbSLeNebSMbSNbSObSPbSQeMBbNjbKmbKmbSRbREbRFbSSbSTeNfbQibSVbSWbxgeNgbSZbTabTbeNhbTdbTebTfbTfbQrbTgeMGbThbTibTjbTkbTlbTmbTneNbbRVbTobQDbQDbQDbTpbTqeNbeNabTrbKSbSabSaeMcbTsbTtbJneKIbTubTvbTweMtbTxbTybTzbTAbTBbTCbTDeMwbTEbTFbTGeMweMteMteMteMteMteMteMteMtaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaeNibQZbSibQZbQZbQXbQXbQXbQXbQXbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaabNSbTIbTJbTKbNSbTLbNXbNYbIwbIwbTMbTMbTMbIwbIwbOjbTNbTNbTObTPbOjbTQbTRbXibRlbRkbRkbRkbTScblbSybRnbRnbTTbTUeNjbTVbTWbTXeMyeMyeMyeMyeMyeNkeMyeMybTZbUaeMBeMBeNleMBeMCeMBeMBbUcbUdbUdbUcbUcbUebUfeNmeNnbUibuObUkbUleNoeNpbUnbTbeNqbUpbUqbUrbUsbUtbUueMGbUvbUwbUxbUybUzbUAbUBeNrbUCeNrbUDbUEbUFeNreNseNreNrbUGbUHbSabSaeMcbUIbSbbJnbUJbUKbULbUMbUNbUObUPbUPbUQbURbUSbUTbUUbUVbUWbUXbUYbUZbVabVbeNtbVcbVdbVeeNuaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaeMMbQZbVgbVhbVhbQXbQXbQXbQXbQXbQXbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVibMybVjbMybVkbVlaabaaaaaabIwbVmbVnbVobIwaaabOjbVpbVqbVrbVsbSubVtbVvbXibVwbVxbVybRkcjPccZcjQbVAbVBbVCbVDcblbVEbVFbVGbVHbVIbVIbVIbVIbVJbVKbVLbVMbVMbVNbVNbVObVPbVQeMAbUcbVRbVSbVTbVUeNvbRFbVWeNmeNxeNweNybVZeMkeNzeNAbWbbWceNBeNBeNCeNBeNBeNBeNDeMGbWfbWgbWhbWibWjbWkbWleNrbWmbWnbWobWpbWqbWnbWrbWsbWnbWtbWubKTeMceMcbWvbWwbWxacFbWybWzbWAeNEbWBbWCbWDbWEbWFbWGbWHbWIbWJbWKbWJbWLbWKbWKbWKbWMbWNbWObWPeNFaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaabQZbQZbWRbQXbQXbQXbQXbQXbQXbQXbQXbQXbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabbWSbOjbOjbOjbWTbOjbOjbWUbXibWVbWWbWXbWYbWZcdgbXabXbbXcbXdbXeccZbXfbXgbXhccacepcepcepcepcfyceqcfCeNGbXjeNGeejbYLbXlbXmbXnbXobXpbXqbXrbXsbXtbXubXvbXwbXxbXybXzbXAbXBbXCbXDbXEbXFbXFbXFbXGckRbXIbXJbXKeNHeNHbXLeNHeNJeNIeNLeNKeNrbXPbXQbXRbXSbXRbXTbXUbXVbWneMcbXWeMceMcbXXbXYbSbbvqeKIeMtbXZeMteMtbYabYbbYcbYdbYebWKbYfbYgbYhbWDbYhbWDbYibWDbWDeMtbYjbYkbYleNMaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaabQZbQXbQXbQXbQXbQXbQXbYnbQXbYobQXbQXbQXbQXbQXbQZbQZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWSbYpbYqbYrbOjbYsbXibYtbYubYvbRlbYwcfUbYxbSybYybYzbYAcfUbYBbYCckUcgYcgYbYEbYFbYGbYHbYIciobYJbDgbYKeMAbZXbDgbDgeNOeNNbYNbYObYPbXsbYQbYRbYSbYTbYUbYVbYWbYXbYYbYVbYVbYZbZabZabZabZbbZabZcbZabZdbZebZfbZgbZhbZibZjbZkbZleNrbZmbZnbZobZpbZobZqbZrbXRbZsbZtbZubvqbZvbvqbXYbSbbvqeKIbZwbZxbZyeMteMteMteMteMtbZzbWDbZAbZBbYibWDbZCbWDbSdbWDbZDeMtbZEbZFbZGeMtaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaabQZbZHbZHbZHbZHbZHbZHbZIbQXbZJbZHbYobQXbQXbQXbQXbQZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWSbZKbZLbZMbOjbYscjjcjjcjjcjjcjjcjjcblcblcblcblcblcblcblbZNbZObZPbZQbZRbZSbZTbZTbZUbZVciobDgbDgbZWedybXkbDgbDgbDgbZYbZZcaabXqcabeNPcacbZacadcaecafbLJcaecagbXFbXFbXFbXFbXFbXFcaebXFbXFbXFbLJcahcaicajcakcalcamcancaoeNrcapcaqbXRcarbXRcascatcaucavcawcaxcaybvqcazbXYbSbcaAeKIbyOcaBcaCcaDcDsbsabsaeMtcaEcaFcaGcaHcaIcaJcaKcaLckVcaNcaOeMtcaPcaQcaRcaSaacaacaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaacaTbQVbQVbQVbQVbQVbQVbQVcaUcgpbQXbQXbQXbQXcaVbQYbQZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWSbWSbWSbWSbOjbYsbWSaaaaaaaaaaaacjpcaWcaXcaYcaZcbacbbcikcbccbdcbecbfcbgcbhcbicbicbjcbkckycjWcjWcjWcjWckAcjWbDgbDgbUccbmcbncbocbpcbqcbrcalcbscbtcbucbvcbwcbxcbybXFbXFcbzeNQeNRcbCeNReNQeKQeNSeNTeNTeNUcbEeNVeNpcbFeNWeNrcbHcbIcbJcbKcbLcbMcbNeNreNreKIeNXeKIeKIeKIcbOcbPcbQeKIbsacaBcbRcbScDscDscDseMteMteMteMteMteMteMteMteMteMteMteMteMteMteMteMteMtaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaabQZbVhbVhbVhbVhbVhbVhcbTbQXbVgbVhcbUbQXbQXbQXbQXbQZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbVaaaaabaabckBckBckBckBckBckBeHyckBbOjbWUclvaaaclCcnjcmFcobccbcccccdcceccfccgeNYcchcciccjcckcclccmccnccoccpccqckyccrccsccsccscctcjWbDgbDgeNZeNZeNZeNZeOaeNZccuccuccveNZeNZeObeNZeOdeOcccxccyccxeOecczccAccBcqAbrebreeOfccCccDccEeOgccFccGbVQeNreNreOheNrccHeNreOjeOieBmccKccLccMckWccNeOleOkeOneOmeOlbsacaBccPbsaccQeBAccSccTbsabsabsabsabsabsabsabsaccUccVeLVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQZbQXbQXbQXbQXbQXbQXbYnbQXcbUbQXbQXbQXbQXbQXbQZbQZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayaayabbgbbfbbfbbfbbfbbfbbfbbfaGiayaaySbbhbbibbjbbjbbjbbjbbjbbjcfvbbjbbjbbjaySaYpbblbbmaYrbbnaYxaYxbbobbpbbqbbrbboaYxaYxaYxbbsaYrbblaYvaZYaZXaZWaZZaZZbacbaaaZVaYMbbAbbBbbCbbDbbEbbFbbGbbHaSjcfwcgtaQqbXObXObXObbJbbKbbLbbMbbNbbNbbObbPbbNbbQbbNbbRbbSbbTbbUbbVbbWbXObXObXOaQqccIcgIaZaaSEaSEaPjbbYbavbaBbaxaXqbbZbcaaXqbcbbccbaCaXqaXtaZfaZfbcdbcebcfbcgbchbcibcjaZfbcJbaKbclaZqaZraZrbcmbcnbaNbTYaPvbcobLLbcpbcqbcraWnaWobcsaNRaNRbctaNRbcubcvaOebcwbcxbcyaZAaZAbczbcybcAaOebcBbaYaUQaUQaUQaUSaUQaUQbcCbcDbcEbcFbcGbcHaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIaabbdgaGeaDAbcKbbjbcLbcMbcNbcRbcPbcQbhlbcSbbjbcTbcUbcVbcWaYrbcXaYxaYxbbobbqbcYbbtbboaYxaYxbdabdbaYrbblaYvaZYaZYbbuaZYaZYaZYaZYaZYaYMbdcbbDbddbbDbdebbFaYNbdfaSjaSkaSkbdicgWbdubXObdjbalbdkbbNbbNaMIbdlbdpbdnbdpbdoeTDbdqbdmbdrbdsbdtbXObdvcgWbefbdwbdxaZaaSEaSEbauaXqbdyaXqaXqaXqbdzbdAaXqbcbbdBbaCaXqaXtaZfaZfbdCbdDbdEbdFbdGbdHbcjbdIbTYbdJbclaZqaZraZraZqbcnbdKbTYbdLchpbLLchqbLLbLLbdMaWobdNbdOaNRbdPbdQaRlbdRcfobdSbdTbdUbdVbdVbdWbdXbdYcfobdZbeaaUQbebaUQaUSaUQaUQbecbedbbcbbdbbdbeeaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbeObegbehaERaZKbbjbcLbeibejbcLbekbelbembenbbjbeobepbeqberaYrbesbetbeubevbewbexbeybezbezbezbeAbeBaYrbblbcUbeDbeEbeFbblbblbeGberbbvaYMbeIbeJbeKbeLbeMbeNaYNbdfaSeaSeaSebeQbePbfibeRbeSbeTbbNbeUbeVbeWbeXbeYbeZbfabfbbfcbfdbfebeSbffbfgbfhbfkbfjbfIbflbfmbfnaSEbfoaPjaXqbfpbfqbaCaXqbfrbfsaXqbftbfubaCaXqaXtaZfaZfaZfaZgaZfbfvaZfbdHbcjbfwbTYbfxbclaZqaZraZraZqbcnbfybTYbfzbfAbOYbfBbfCbfDbfEbfFbfGbfGbfGbfGbfGbfGbfHbfLbfJaZAaZAaZAaZAaZAaZAbfKbgvbfMbaYaUQaUQaUQaUSaUQaUQbfNaWDbfObfObfOaWDaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbfPbfQbfRbfSaZKbbjbfTbcLbfUbfUbfUbfVbcLbfWbbjbfXbfYbeqbfZbfZbfZbfZbgabfZbgbaYxbgcbgdbgebgebgfbggaYrbghbgibgjbgkbglbgmbgmbbwdIjbgobgpbgpbgpbgpbgpbgqaYMaYNbgrbgsbgtbgubgxchrbgBchsbgybeZbgzbgAcNxcNxcNxcNxbgIcNxdiMdiOdiNbgFbgzbgGbgHbXObgKchtbgRbgLbgMbgNaSEaSEbauaXqbgOaXqaXqaXqaLLaXqaXqbgPbgPbgQbgQbhaaZfaZfbgSbgTaZfaZfaZfbgUbgVbgWbTYbaNbclaZqaZqaZqaZqbcnaXEbTYbgXbgYbgYbgZbgYbhiaWnaWnaWnaWnbhbaWnaWnaWnbhcbgvaZAaZAaZAaZAaZAaZAaZAbfKbgvbfMbaYaUQaZDaZDaZEaZDaUQbhdaWDbhebhfbhgaWDaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbhHbhjbehbhkaWHbjQbcLbhmbfUbfUbfUbfVbhmbcLbbjbhnbhobeqbfZbhpbhqbhrbhsbfZbbxbhubhvaYrbhwbhxbhybhzaYrbblbhAbhBbhBbhCbhBbhBbhBbhBbhDbhEbhEbhEbhFbhEbhGbiWbhJbhIbhKchuchuchuchuchuchucjcbhRcjccNxcNxbhLbhMbhNbhObhPbhQbhLdiPcNxcjVbiccjVcjVcjVcjVcjVcjVcjVbgNaSEaSEaPjbhSbhTaXqbhUaXqbhVaXqbhWbhXbhYbgQbhZbTcbiabibbTcbTcbidbjvbjvbjvbTcbTcbTYcgrbifbigbigbigbigbifbihbTYbiibgYbgYbgZbijbLLbikbilbimbinbiobipbiqbirbisaOebitaMvbiuaZAaZAbiuaMvbivaOebiwbaYaUQbaZbaZbbabaZaUQbfNaWDbfObfObfOaWDaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbcIbixaDwbiybizbiAbbjbeibeibeibcLbiBbiCbiDbiEbbjbiFbiGbeqbfZdHcbfZbiHbiIbfZbiJbiKbiLaYrbhwbhxbhybiMaYrbblbhAbhBbiNbiObiPbiQbiRbhBbiSbiTbiUbiVbiWbiWbiWbiWbiXbiYbiZchubVzbjbbjcbjdbjebjfbjgbjhcNxbjibhNbjjbjkbjlbjkbjjbhNbjmcNxbjnbjobjpbjqbjrbjsbjtaSAcjVbjybjwbjwcmhaPjaPjaPjaPjbjFbaubjFcmSaPjbSYaPjaPjbTcbTcbTcbTcbjAbjBbjBbjBbjBbjCbjDbTYcncbjGcncbkFbkFcncbjGcncbTYbiibgYbgYbjHbijbLLbLLbLLbLLbLLchqbLLbLLbLLbLLaOecndcnQcnecnecnecnecoLaOeaOebjJbjKaUQaUQaUQaUSaUQaUQbecbbbbjLbbdbbdbjMaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGbayabjNaHcbehaySaySaySaySaySaySbjObjPbbjbbjbbjbbjbbjbbjccWbbjbbjbbjbjRbjRbjSbfZbjTbjUbiHbjVbfZbjWbjXbjWaYrbhwbhxbhybjYaYrbblbhAbhBbjZbkabkbbiQbkbbhBbiSbkcbkdbkebkfbkgbkhbiWbkibkjbiZcoMbklbkmbknbkobkobknbkpbkqcNxbkrbhNbhNbksbktbjkbjjbhNbkudiNbkvbkwbkxbkybkzbkAbkxbkBcjVbkCbkDbkEbkHbkGblhbkIbkJbkJbkJbkJbkJbkJbkKbkLbkMbkNbkJbkObkJbkJbkJbkJbkJbkJbkJbkJbkPbkQbkRbkRbkRbkRbkRbkRbkSblhbkTbkUbkUbkVbkWbkXbkWbkYbkWbkZblablbbkWblcbldbleblfblgblgblgblgblgblgblgblsblibljbljbljbljblkbljbllblmblnbloblpbcGblqaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblraaaaabbmkaGebltblublvblwblwblwblwblwblxblyblzblAblBblCbjSbfZbfZbfZblDbiIbfZaYraYraYraYrbhwblEblFblGaYrblHblIbhBblJblKbiQbkbblLbhBbiSblMbkdbkebkeblNblObiWblPbkjbiZcoNblRblSblTblUblVblWbkpblXcNxblYbksbhNblZbmablZbhNbksbmbdiPbmcbkxbkxbkybmdbkAbkxbmecjVbmfbkEbkEbkHbkGblhbkJbkJbkJbkJbkJbkJbkJbmgbkJbkJbkJbkJbkJbkJbmhbmibmibmibmibmibmibmibmibmibmibmibmibmibmibmjbmobmlblgblgbmmbgYbgYbgYbgYbgYbgZbgYbgYbgYbgYbgYbgYbgYbgYbgYbgYbgYbgYbmnbgYbmrbmpaUQaUQaUQaUQaUQaUQaUQbmqbedbbcbbdbbdbbeaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblrblrbeObegbntbmsbmtbmubmubmubmvbmubmueIGbmweNcberberberbXHbfZbhpbmxbmybjVbfZbmzbmAbmzaYraYraYraYrbmBaYrbmCbhAbhBbmDbmEbkbbmFbmGbhBbiSbiWbmHbkebkebkebmIbiWbmJbkjbiZcoObmLblSblTbmMbmNblWbkpbmOcNxbmPbmQbhNbmRbmSbmTbjjbmUbmVdiQbmXbmYbmZbnabnbbncbkxbndcjVbnebnfbkEbkHbkGblhbkJbngbkJbkJbkJbkJbnhbnibnibnibnibnjbkJbkJbkJbkJbnkbkJbngbnlbkJbnmbnnbnobkJbnpbnqbnqbnrbnsbnAbnubgYbgYbgYbgYbgYbgYbgYbnvbnwbnxbgYbgYbgYbgYbgYbgYbgYbgYbgYbgYbnybnzbnzboobnBbnCbnDbnEbnEbnEbnEbnFbnGbnHaabaaaaaaaabaKPaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblrblrbnIbnJbnKbnLbnMbmubnNbnObnPbnPbnQeJnbnSbnTbnUbnUbnVbnWbfZbfZbfZbiHbnXdHcberberberberbnYbblbblbnZbgmboabobbocbodboebofbogbohbhBboibiWbojbkebkebkebokbolbombkjbonchudwtbopbknbknbknbknbkpboqcNxdiRdiScNxcNxcNxcNxcNxcNxcNxdiPcjVbosbotboubovbowboxboycjVboAbozbozcpTcpTcpTcpTcpTcpTcpTcqxcqxcrkcqBboDboDcqBcrkcqxcqxcrtcrtcrtcrtcrtcrtcswcswboEcswcswcswcswcswctpboFcvyboGbgYbgYboHboHcxOcxOcxOcxOcxOboIbnzbnzbnybnzbgYbnzbnzbnzbnzboJcxQcxQcxQcxQboKcxYcxYcxYcxYcxYcxYcxYcxYcxYaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblrblrbhHbhjbntbmsboLbmuboMbmuboNboObmueIGeIGaZSboPboQboQboRbfZbhpboSbiHboTdHcboUboVboWboXboYboZboZbpaboZbpbbpcbhBbpdbpecaMbpfbpgbocbphbiWbpibkebkebpjbpkbplbombkjbpmchubpnbpobppbpqaWSbpsbptchuchubpuczkbpvbpwbpxbpwbpyczkaaaczEcjVbpzbpAbpBbpCbowbkxbpDcjVbpEbpFbpGcpTbpKbpIbwpbpJbpLcAgbpNbpObpPbpQbpRbpRbpQbpSbpTbpUcrtbpVbpWbpXbpYcrtbpZbqabqbbqcbqdbqebqebqfctpbqgcBocAMbprcAMbqhbqhcxObqjbqkbqlcxObqibqnbqicxObqobnzboJcxQbqqbqWbqqcxQbqrbqscxQbqtbqubqvcDsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablrblrblrblrblrblrblrblrblrblraaabqwaTzbqxbizbqybmubqzbmubqAbqBbqCbqDbmubqEbqFbqGbqHboRbfZbfZbfZbfZbfZbfZbqIbqJbqKbqLbqMbhBbhBbhBbhBbhBbhBbhBbqNbhBbhBbhBbqObhBbqPbqQbqRbkebkebkebqSbolbqTbkjbqUchubqVbpocjccjccjcchubrschubqXbqYcDXbqZbrabrbbrcbrdcDYbrebrfcjVbrgbkxbrhbribowbrjbkxcjVbrkbrlbrmcpTbKXbrobrpbrqbrrbscbrtbpRbpRbpRbpRbpRbpRbpRbrubrvcDZbrxbrybrzbrAcrtbrBbrCbrDbrEbrFbrGbrCbqfctpbrHcBobrIbrJbrKbrLbrLcEFbrMbrNbrObrPbrQbrRbrScxOcFEbrTcGWcxQbrUbGybrWbrXbrXbrYcxQbrZbsabsbcDsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGbayabjNaHcbhjbbfbbfbbfbsdbbfbtjaERbsebsfbmubsgbshbsibsjbskbslbsmbcWbblbblbblbsnbnUbnUbnUbnUbnUbnUbsobspbspbsqbsrbhBbssbstbsubsvbswbsxbsybszbhBbsBbsCbsDbphbolbqRbkebkebsEbiWbiWbsFbsGbsHcGXbsIbsJbsKbsLcIWbsMbsNcJFbsObsPcDYbsQbsRbsQbsRbsScDYbrebsTdjnbsUbsVbsWbsXbsYbsZbtadjnbtbbpFbpFcpTchFbtdbtebtfbSXcpTbrtbpRbpRbpRbpRbpRbpRbpRbthbtibtybtkbtlbrxbtmcrtbtnbtobtpbrEbqfbrGbtqbtrctpbtseKcbtubtvbtvbtwbtxbtNbtzbtAbtAbtAbtBbtAbtCeKdbtEbtFbtGeKebtHbtIbtJbtJbtJcifcxQbtLbsabtMcDsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaKPaKPaKPaKPaKPaaaaKPaKPaKPaKPaKPaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabujbtObtPbtQbtRbtSbtSbtTbtUaDybmubtVbtWbsjbtXbmubmubmuberbtYbtZbuabubbuabuabuabubbuaberberbhBbhBbhBbucbhBbudbudbudbudbudbudbsybuebufbugbuhbuibuqbukbulbumbunbuobupbvFburbusbutbuubuvbuvbuwbuxeKfbuybuzeKgbuAbuBczkbuCbrcbuDbrabuEczkaaabuFeKheKibuGeKheKheKheKhbuHcjVbuIbpFbuJeKjbRKbuLbuMbuNbRJcpTbuPbuQbuRbuSbuTbuUbuVbuWbrubuXcrtbUjbtlbuZbvacrtbvbbvcbrDbrEbqfbrGbrCbqfctpbrHcBobvdbvebvfbvgbvheKkbvibvjbvkbvlbvmbvnbvocxObvpbvqbvrcxQbvsbvtbvubrXbvvbRLcxQbtLbsaciNcDsaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabujbvybvzbvAaDxaDxbvBbvCaDxbvDbmubvEbvGbvJbvHbmuaaaaaaaaaaabaabbvIbvIbvIbvIbvIbvIbvIaaaaaabvQbvKbvLbvMbvNbudbudbudbudbudbudbvObvPbvVbvRbvSbvTbvUbvWbiWbiWbvYbiWbiWbiWbwabvZbwceKlbwbeKmeKmeKneKmeKobxoeKpbwdbuBczkbwebpwbpwbpwbwfczkaaabuFeKhbwgbwhbwibwjbwkeKqbwleKrbwmbpFbwncpTbpKbwociLbwqbuYeKsbwtbwubwvbwwbwxbwybwzbwAbwBbwCeKtbwDbtlbwEbwFcrtbwGbwHbwIbwJbwKbwLbwMbqfctpbwNeKubwPbwQbwQbwRbwSeKvbwUbwVbwWbwXbwYbwZbxacxObxbbvqbxccxQbxdbxebxfbrXbrXbNMcxQbrZbsabxhcDsaaaaaaaaaaaaaabbxibxjbxkbxjbxkbxjbxlaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabxmaDwbxnbxnbxpbbfbxqaGbayabxtbxqbmubxrbxsbxvbxubmuaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIaaaaaabxCbxwbudbxxbxybxybxybxybxybxzbxAbxybxBbxWbxDbxEbxFbxGbxHbiWbxIbkebxJbxKbxLbxMbxNbxOeKleKleKpbxPbxQbxRbxSbxTeKpbpubuBczkbxUbxVbyWbxXbxYczkaaabxZeKhbyabybbyceKwbydeKwbyeeKxciPbpFbygcpTeKzeKyeKAbyjeKCeKBbylbymbynbyobypbypbyqbyrbysbytcrtbwDbyubyvcrtcrtcsweKDeKFeKEcswctpctpctpeKGbyycBobyzbvebvfbyAbwQeKHbyCbyDbyDbyEbrObyFbyGeKJeKIbrTeKKcxQbyJbyKbrXbyLbyMbNLcxQbtLbyOcDscDsaaaaaaaaaaaaaabbyPbyQbyRbySbySbyTbyPaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbyXbzhbyYbFbbyZbzabzbbzbbzbbyZbudbsybuebudbudbufbzcbzdbzebzfbzgbzmbzibkebkebzjbzkbxMbxNbzlbABbznbzobzpbzqbzrbzsciQeKpbzubzvcDXbzwbzxbzybzzbzAcDYbrebzBeKhbzCbzDbzEeKwbzFeKwbzGeKxbzHbpFbzIcpTbzJbzKbzLbzMbzNeKLbzObzPeKMeKMeKNbzReKMeKMbzSbzTeKPeKObzUbzVbzWbzXbzYbzZbAabAbbAceKQbAdbAebAfbAgcBobAhbAibAjbAkbAlcEFbAmbyDbyDbAnbAobyFbApcxObAqbAqbArcxQbAsbAtbAubAvbrXbyNcxQbtLbAxcDsaaaaaaaaaaaaaaaaabbAybAzbyRbySbyRbAAbxkaabaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbAMbACbAMbADeHueHveHueHueHueHubAEbsybuebAFbhBbhBbAGbkebuhbzfbAHbAIbAJbAKbAKbALbBtbANbAObAPeKRbARbASbATbAUbAVbAWbAXeKpbwdbuBczkbAYbAZbBabBbbBcczkaaabxZeKSeKTeKSeKSeKSeKSeKSbBdeKSbBebpFbzIcpTbCFbBgbBgbBhbBieKBbBjbBkeKUbBmbBnbBobBpeKUbBqbBrbBsbBQbBubBvbBwbBwbBxbBybBzbBAbBBbBCbBDbBEbBFbBGbBHbBIbBIbBJbBKbBLcEFciTbrObrObBNbBObyFbBPbBSbBRbBUbBTeKVbBWeKXeKWbCceKYcxQcxQbBXeKIeKIeKZeLaeLaeLaeLbeKIbyPbySbyRbySbySbCbbyPaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbClbCdbClbCebudbzabzbbzbbzbbudbudbsybuebCfbCgbhBbChbkebuhbzfbCibCjbCkbkeblNbkebCVbxMbpFbCmeLcbARbCnbCobCpbCqbCrbCseLdeLfeLeeLgeLgbCubCvbCwczkczkaaabxZeKSbCxbCybCzbCAbCBbCCbCDeLhbCEbpFbzIeKsbBfbCGbCHbCIbCJeKBbCKbCLbCMbCNbCObCPbCQbCRbCSbCTbCUbDAbCWbCXbCYciWbDabDbbDcbDdbDeeKQbDfbDgbDhbDicAMbDjbDkbDlbDmbDmcEFbDnbDobDpcEFbDqbyFbDrcEFbDsbDtbDubDvbDwbDxbDybDzbDCbDBbDFbDDbDEbDObDGbDGbDHbDIbDJbDPbDLbxjbxkbDMbxkbxjbDNaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbDVbzhbEfbDQbudbzabudbudbudbudbudbsybuebCfbDRbhBbFnbkebDTbDUbkebEobkdbkebkebdhbxLbxMbpFbCmeLcbAReKpbDXbDYbDZbEabEbeLjbEcbEdbEeeLkcDYbEEeLlcDYbrebrebEheKSbEibEjbEkbElbEmbEmbEnbENbEpbpFbEqcpTeKBbEreLneLmbEteKBbCKbEueLobEvbEwbExbEyeLobCKbEzbEAeLpeLpeLpeLqeLpeLreLrbEBeLseLueLteLtbECeLueLueLteLteLweLveLweLwcEFcEFcEFcEFcEFeLxbESeLycEFbEGbEHbEIbEJbEJbEKbELbEMbFtbEObEPbEQbERbFKbETbETbEUbDwbEVeKIbGhbGWbGDbEZeKIbFaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhhbhhbhhbhhbhhbhhbhhbhhbhhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbClbCdbClbFbbFcbFdbudbudbudbFcbudbsybuebCfbFebhBbFfbkebuhbzfbkebolbFgbkebkebFhbzkbxMbpFbFieLCbFkeKpbFlbFmeHrbFobFpeLjbFqbFrbFsbHsbFubFvbFweLDaaaaaaaaaeKSbFxbFybFzbFzbFAbFBbFCeKSbFDbFEbzIbFFbFGbFHbFIbFJbHPbFLbFMbCLeLEbFNbFObFPbFQeLEbCKbEzbFRbFSbFTbFUbFVbKHeLrbFXbFYbFZeLubGabGbbGcbKIbGebGfbIlbDBbIobEJbEJbGibGjbEJbGkbGlbGmbGnbGobEJbGpbGqbGreLHeLGeLJeLIeLKeLIeLIeLIbBXeKIeKIeKZeLbeKIbGvbGwbGxbrVbGzbGAbGBbIpaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbIqbGEbIqbGFbGGbGHbGHbGHbGHbGHbGIbGJbGKbCfbGLbhBbGMbGNbGObGPbGQeLNeLMeLPeLObIybIybGUbpFbGVbIrbAReKpbGXbGYbGZbDYbHaeLjbHbbHcbHdeLQbHebzybHfeLDaaaaaaaaaeKSbHgbHhbHibHjbFAbFBbFCeKSbHkbHlbHmbHnbHobHpbHqbHrbIsbHtbHubHveLoeLoeLRbHxeLoeLobCKbEzbHybHzbHAbHBbHCbHDeLrbHEbHFbHGeLSbHIbHJbHKbHKbHLbHMbItbHObIubDwbDwbHQbDwbHRbDwbHSbDwbHTbHUbHUbHVbHWbHXeLUbJobJhbIbbIcbIdbIeeLIbIfeLVaaaaaaaaaeKIbIhbIibIjbIkbIvbImbIneKIaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIbIxbIIbIFbhBbhBbIJbzhbzhbzhbIMbhBbhBbIRbJjbJibhBbIwbIwbIwbJLbIwbIybIzbIAbIBbICbIybxMbpFbIDbvXbvXeKpeKpeKpeKpeKpbIEeLjeLgeLeeLXeLWeLYbJNeLDeLDczkczkczkeKSeKTeKSeKSeKSeKSeKSeKSeKSbIGbpFbIHeLZbUcbKdbKrbUcbUccjIbIKbILbKwbINbIObIPbIQbLIbFMbISbITbIUbIVbIWbIXbIYbIZbJabJbbJceMabJebJfbJgbGcbHZeLteLtbKJbKJbKJbKJbMgbKJbKJbKJeMbbMOeMceMcbJkbJlbJmbJneLUbIabJpbJqbJrbJsbJteLIbIfeMdaaaaaaaaaeKIbJvbJweKIbDPeKIeKIbDPeKIaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabJxaabaaaaaaaaaaaabIwbJybJzbJAbJBbIybJCbJDbJEbJFbIybxMbpFbJGbJHbJIbJJbJKbMQbJMbNabJObJPbJQbJRbJSbJTbJUbJVbJWbJXbJYbJZbKabKbbKcbNcbKebozbKfbpFbKgbKhbKibpFbKjbUcbKkbKlbKmbKnbKobCKbKpbKqbNWbKsbKtbKubKvbNXbKxbKybKzeLpbKAbHBbKBbKCeMebKEbKFbKGeLubGdbGcbGcbGcbFWeLtbKJbKKbKLbMhbNCbNDbKPbKQbKJbKRbKSbKTeMceMcbKUbJmbKVeMfbAwbKYbKZbLabLbbLceLIbLdcDsaaaaaaaaaeKIeKIeKIeKIaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIbvIbvIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabIwbLebLfbLgbLhbLibLjbLkbLlbLmbIybxMbLnbLobpFbpFbzIbLpbozbKebNcbLqbLrbLqbLsbLtbLtbLubLvbLwbLtbLtbLxbLtbLybLtbNcbKebozbLzbLAbLBbLCbLDbLEbpFbUcbLFbKlbLGbLHbNYbCKbLJbLKeMheMgeMibLOeMkeMjbCKbLRbLSeLpbLTbLUbLUbLVeMlbLWbLXbLYeLubLZbMabGcbMbbMceLtbKJbMdbMebMfbOrbKNbKMbMjbKJbMkbKSbMlbMleMcbMmbMnbMobMpbMqbMrbMsbMtbMubMveLIbIfcDsbMwaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvIbvIbvIbvIbvIaaaaaaaaaaaaaaaaaaaaaaaabMxbMybMzbMybMAaaaaaaaaabIwbIwbMBbMCbLgbMDbMEbMFbJEbMGbMHbIybxMbMIbMJbMKbMLbMMbMNbOvbMPbOwbMRbMSbMTbMUbMVbMVbMWbMXbMXbMXbMXbMXbMXbMYbMZbOybNbbOzbNdbMLbNebNfbNgbNhbNibUcbNjbKlbKmbNkbNYbCKbLJbLKeMmbNmbNnbNobNpeMnbCSbNrbNseLpeLpeMoeMpeLpeMleLreMreMqeLubNvbNwbNxbNybNzeLtbKJbNAbNBbMhbKObMibNEbNFbKJbNGbKSbMlbMleMcbNHbNIbNJeMsbNKbtcbtgbNNbNObNPeLIbIfeMteMueMteMweMveMweMweMwaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNSbNTbNUbNVbNSbOZbPkbPabIwbNZbOabObbOcbOdbOebOfbOgbOgbOhbIybOibOjbOkbXibXibOlbOmbOnbXicblcblbOobOpbOqcblcblbPZbNcbNceMxeMyeMyeMyeMzbOteMyeMyeMAbOueMBeMBbRpeMBbRqeMCeMBeMDbRrbREbUceMEbOBbLJbOCeMFbODbOEbOFbOGeMFbCKbLRbOHeMGbOIbOJbOKbOLbOMbONeMHbOObOPbOQbORbOSbOTbOUeLtbKJbKJbKJbKJbKJbKJbKJbKJbKJbOVbOWbOXbOXeMcbSlbUdbTLeLIeLIeLIeLIeLIeLIeLIeLIbIfeMtbPbbPceMIbPebPebPfeMwaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeMKeMJeMJeMLeMMeMMbQZbQZbQZbQZeMNaabaabaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMzbPibPjbPibMzbUebPlbPmbPnbPobPpbPqbPrbPsbIybPtbPubPvbPwbIybOjbOjbPxbXibPybPzbPAbPBbPCcblbPDbPEbPFbPGbPHcblbPIbPJbPKeMybPLbPMbPNbPObPPbPQbPReMObPTeMPbPUbPVbPWbPXbPYbUfbQabQbbQcbQdbQebQfbQgbLKbQhbQibQjbQkbQlbQmbCSbQnbQobQpbQqbOKbQrbQrbQsbQteLubQubQvbQwbQxbQybQzbQAeLtbQBbQCbQDbQEbQDbQDbQFeMReMQbQGbQHbQIbQJeMcbQKbQLbJneKIbsabQMbQNbQObQObQNbQObQPeMtbQQbQReMIbPebQSbQTeMwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeMSbQVbQWbQVeMMbQZbQZbQXbQYbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNSbPibPibPibRabRbbMCbRcbRdbRebMCbPqbRfbRgbIybIybIybIybIybIybRhbOjbRicbXbRmbRkbRkbRkbRocbldrybRnbRnbRnduveMTbUJbUCbUNeMUbRsbRtbRubRvbRwbRxeMyeMAbRyeMBbRzbRAbRBbRCbRDeMBbLFbKmbLGbLHbVmbRFbRGbRHeMVbRIbwrbvwbuKeMFbRMbRNbROeMWbRPbRQbRRbRSbRTbRUeLueLueLueLueLueMXeMZeMYeLtbRVbQDbQDbRWbQDbRXbRYeNbeNabRZbKSbSabSaeMcbJlbSbbJneKIeMtbcZeMteMteMteMteMteMteMtbSdbSeeMwbSfbSgbSheMwaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacbSibQVbQVbSjbQZbQZbQXbQXbSkbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMzbPjbPjbPjbMzbVnbSmbSnbSobSpbMCbSqbSrbSsbStbSubSubSubSvbOjbOjbOjbPxbXibRlbRkbSwbRkbSxcblbSybRnbSzbRnbSAcblbSBbSCbSDeMybSEbSFbSGbSHbSIbSJeNdbSKbSLeNebSMbSNbSObSPbSQeMBbNjbKmbKmbSRbVmbRFbSSbSTeNfbQibSVbSWbxgeNgbSZbTabTbeNhbTdbTebTfbTfbQrbTgeMGbThbTibTjbTkbTlbTmbTneNbbRVbTobQDbQDbQDbTpbTqeNbeNabTrbKSbSabSaeMcbTsbTtbJneKIbTubTvbTweMtbTxbTybTzbTAbTBbTCbTDeMwbTEbTFbTGeMweMteMteMteMteMteMteMteMtaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaeNibQZbSibQZbQZbQXbQXbQXbQXbQXbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaaaaaaaabyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVbyVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaabNSbTIbTJbTKbNSbVobPkbPabIwbIwbTMbTMbTMbIwbIwbOjbTNbTNbTObTPbOjbTQbTRbXibRlbRkbRkbRkbTScblbSybRnbRnbTTbTUeNjbTVbTWbTXeMyeMyeMyeMyeMyeNkeMyeMybTZbUaeMBeMBeNleMBeMCeMBeMBbUcbWbbWbbUcbUcbWcbWMeNmeNnbUibuObUkbUleNoeNpbUnbTbeNqbUpbUqbUrbUsbUtbUueMGbUvbUwbUxbUybUzbUAbUBeNrbXteNrbUDbUEbUFeNreNseNreNrbUGbUHbSabSaeMcbUIbSbbJnbXWbUKbULbUMbYQbUObUPbUPbUQbURbUSbUTbUUbUVbUWbUXbUYbUZbVabVbeNtbVcbVdbVeeNuaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaeMMbQZbVgbVhbVhbQXbQXbQXbQXbQXbQXbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabyUbyUbyUbyUbyUbyUbyUbyUbyUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVibMybVjbMybVkbVlaabaaaaaabIwbZtbZebZQbIwaaabOjbVpbVqbVrbVsbSubVtbVvbXibVwbVxbVybRkcjPccZcjQbVAbVBbVCbVDcblbVEbVFbVGbVHbVIbVIbVIbVIbVJbVKbVLbVMbVMbVNbVNbVObVPbVQeMAbUcbVRbVSbVTbVUeNvbRFbVWeNmeNxeNweNybVZeMkeNzeNAcahcaveNBeNBeNCeNBeNBeNBeNDeMGbWfbWgbWhbWibWjbWkbWleNrbWmbWnbWobWpbWqbWnbWrbWsbWnbWtbWubKTeMceMcbWvbWwbWxacFbWybWzbWAeNEbWBbWCbWDbWEbWFbWGbWHbWIbWJbWKbWJbWLbWKbWKbWKcawbWNbWObWPeNFaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaabQZbQZbWRbQXbQXbQXbQXbQXbQXbQXbQXbQXbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabbWSbOjbOjbOjbWTbOjbOjbWUbXibWVbWWbWXbWYbWZcdgbXabXbbXcbXdbXeccZbXfbXgbXhccacepcepcepcepcfyceqcfCeNGbXjeNGeejbYLbXlbXmbXnbXobXpbXqbXrbXscbcbXubXvbXwbXxbXybXzbXAbXBbXCbXDbXEbXFbXFbXFbXGckRbXIbXJbXKeNHeNHbXLeNHeNJeNIeNLeNKeNrbXPbXQbXRbXSbXRbXTbXUbXVbWneMccbdeMceMcbXXbXYbSbbvqeKIeMtbXZeMteMtbYabYbbYcbYdbYebWKbYfbYgbYhbWDbYhbWDbYibWDbWDeMtbYjbYkbYleNMaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaabQZbQXbQXbQXbQXbQXbQXbYnbQXbYobQXbQXbQXbQXbQXbQZbQZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWSbYpbYqbYrbOjbYsbXibYtbYubYvbRlbYwcfUbYxbSybYybYzbYAcfUbYBbYCckUcgYcgYbYEbYFbYGbYHbYIciobYJbDgbYKeMAbZXbDgbDgeNOeNNbYNbYObYPbXscbebYRbYSbYTbYUbYVbYWbYXbYYbYVbYVbYZbZabZabZabZbbZabZcbZabZdcckbZfbZgbZhbZibZjbZkbZleNrbZmbZnbZobZpbZobZqbZrbXRbZscezbZubvqbZvbvqbXYbSbbvqeKIbZwbZxbZyeMteMteMteMteMtbZzbWDbZAbZBbYibWDbZCbWDbSdbWDbZDeMtbZEbZFbZGeMtaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaabQZbZHbZHbZHbZHbZHbZHbZIbQXbZJbZHbYobQXbQXbQXbQXbQZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWSbZKbZLbZMbOjbYscjjcjjcjjcjjcjjcjjcblcblcblcblcblcblcblbZNbZObZPceEbZRbZSbZTbZTbZUbZVciobDgbDgbZWedybXkbDgbDgbDgbZYbZZcaabXqcabeNPcacbZacadcaecafbLJcaecagbXFbXFbXFbXFbXFbXFcaebXFbXFbXFbLJcfpcaicajcakcalcamcancaoeNrcapcaqbXRcarbXRcascatcaucfqcfrcaxcaybvqcazbXYbSbcaAeKIbyOcaBcaCcaDcDsbsabsaeMtcaEcaFcaGcaHcaIcaJcaKcaLckVcaNcaOeMtcaPcaQcaRcaSaacaacaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaacaTbQVbQVbQVbQVbQVbQVbQVcaUcgpbQXbQXbQXbQXcaVbQYbQZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWSbWSbWSbWSbOjbYsbWSaaaaaaaaaaaacjpcaWcaXcaYcaZcbacbbcikcgucfQcgVcbfcbgcbhcbicbicbjcbkckycjWcjWcjWcjWckAcjWbDgbDgbUccbmcbncbocbpcbqcbrcalcbscbtcbucbvcbwcbxcbybXFbXFcbzeNQeNRcbCeNReNQeKQeNSeNTeNTeNUcbEeNVeNpcbFeNWeNrcbHcbIcbJcbKcbLcbMcbNeNreNreKIeNXeKIeKIeKIcbOcbPcbQeKIbsacaBcbRcbScDscDscDseMteMteMteMteMteMteMteMteMteMteMteMteMteMteMteMteMtaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaabQZbVhbVhbVhbVhbVhbVhcbTbQXbVgbVhcbUbQXbQXbQXbQXbQZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbVaaaaabaabckBckBckBckBckBckBeHyckBbOjbWUclvaaaclCcnjcmFcobccbcccccdcceccfccgeNYcchcciccjciscclccmccnccoccpccqckyccrccsccsccscctcjWbDgbDgeNZeNZeNZeNZeOaeNZccuccuccveNZeNZeObeNZeOdeOcccxccyccxeOecczccAccBcqAbrebreeOfccCccDccEeOgccFccGbVQeNreNreOheNrccHeNreOjeOieBmccKccLccMckWccNeOleOkcjKeOmeOlbsacaBccPbsaccQeBAccSccTbsabsabsabsabsabsabsabsaccUccVeLVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQZbQXbQXbQXbQXbQXbQXbYnbQXcbUbQXbQXbQXbQXbQXbQZbQZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccXccYccYccYcovcfAcdacdbcdccddcdeeHFcdfbWUcqkaaacqXcdhcdicrccdkccccdlcdmcdncdocikcdpbYCbTWcbfcdqbZTcdrbZTcdscdtcducdvcdwcdwcdwcdxcjWbDgbDgeNZcdycdzcdAcdBcdCcdDcdDcdEcdFcdGcdHcdIcdJeOocdKbXJbXJeOpcdLcdMcdNeOqaaaaaaeOgcdOcdPcdQeOfcdRcdScdTcdUcdUcdVbBDcdWcdXcdYcdZcdXcdXcdXceacdXcdXcebceccedceecefcegcehceibQOcejciIbQObQObQObQOcekcelbQObQObQObQOcembsaeOraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQZbQZbWRbQXbQXbQXbQXbQXbQXbQXbQXbQXbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceocricricricricrjcercescetceuceucevcoYcewbYscqkaaacqXcexceycezceAceBceCceDceAceAceEceFceGceHcCLcCLceIceJbZTceKceLceMcdwcdwcdwcdwceNcjWbDgbDgeNZceOcePceQceRceSceTceTceUceVceWceXceYceZeNZcfabXFcfbeKQcfccdMcfdeOqaaaaaaeOgcfecffcfgeOgbDhcfhcficficficficficficfjcfkcflcfmePiePicgscgzePicgycfpcfqcfrcgxcgqcgvcgwcgqcgqcgqcgqcgqcgqcgqcgqcgqcgqcgqcgqbsacfxbsaeMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeNibQZbQZbZHbZHbQXbQXbQXbQXbQXbQXbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrRcfzcsocfBcsocfEcfDcgQcfFcfFcfGcoYcgTbWUcqkaaacqXcfIcfJctfcfKccccfLcfMcfNcfOcikcdpbYCbYDcfPcgYcfQeOCcfRcfScfTcukcfVcdwcdwcfWcfXcjWbDgcfYeNZcfZcgacgbcgccgccgccgdcgecgccgccgfcgbcggeODcghbXFcgieKQcgjcdMcgkeOqaaaaaaeOgcglcgmcgneOgcgobDgcfYeOEeOEeOEeOEeOEcgBcgDeOGeOEeOEaaaaaaaaaaaaeOleOJcgueOKcgqchHchDchEbrnchGcgqchAchBchCcgEcgxcgCbpHcgKcgqcgFcgGcgHeOLcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgAcgLbQZbSibQZbQXbQXbQXbQXbQXbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaacrRcgMcgNcgOcgPcetchYcetcgRcetcgScuPcgUcigcvjaaacxIcnjcyCcobcgZccccccchachbchceOMchdchechfchgcgYchhchichjchkchlckychmcdwcdwcdwchncjWbDgbDgeONeONeOOchoeOPeOReOQeONeOSeOUeOTchveOVeOOeOWcfabXFcfbeKQchwcdMcdNeOqaaaaaaeOgchxchychzeOgbDgbDgbDgeOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachMchLchOchNeOweOAeOIeOIeQIeQHeQMeQJdsbeQPeOxeOybpHeOucrzeOXeOXchSeOYeOXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQZchTchUchVbQZbQZbQXbQXchWbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrRchXcsochZcsociacibcidciccgQckXcoYcjfbWUbWSaaaaaaaaaaaacjpcihciibgnbgncikcilcikcimbYCbTWcineOZcipciqcircircirciscitcdwciucdwcivcjWbDgbDgeONciwcixciycizciAciBeONciAciBcizciCciDciEeOWcghciFcgieKQckYcdMciGeOqeOEeOEeOgeOgeOgeOgeOgciHbDgbDgeOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIcoTchKchJcnWcuIcwWcvGcyYcuJchCdKCdsbdsbcrAcsDbpHctrcrzeOXciZcjacjbeOXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaePacjdcjebSjeMMbQZbQZbQXbQYbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceocricricricricrjcercescetceuceucevcoYcewbYscqkaaacqXcexceyckzceAceBceCceDceAceAckQceFceGceHcCLcCLceIceJbZTceKceLceMcdwcdwcdwcdwceNcjWbDgbDgeNZceOcePceQceRceSceTceTceUceVceWceXceYceZeNZcfabXFcfbeKQcfccdMcfdeOqaaaaaaeOgcfecffcfgeOgbDhcfhcficficficficficficfjcfkcflcfmePiePicgscgzePicgyclmcnhcmrcgxcgqcgvcgwcgqcgqcgqcgqcgqcgqcgqcgqcgqcgqcgqcgqbsacfxbsaeMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeNibQZbQZbZHbZHbQXbQXbQXbQXbQXbQXbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrRcfzcsocfBcsocfEcfDcgQcfFcfFcfGcoYcgTbWUcqkaaacqXcfIcfJctfcfKccccfLcfMcfNcfOcikcdpbYCbYDcfPcgYcnqeOCcfRcfScfTcukcfVcdwcdwcfWcfXcjWbDgcfYeNZcfZcgacgbcgccgccgccgdcgecgccgccgfcgbcggeODcghbXFcgieKQcgjcdMcgkeOqaaaaaaeOgcglcgmcgneOgcgobDgcfYeOEeOEeOEeOEeOEcgBcgDeOGeOEeOEaaaaaaaaaaaaeOleOJcnWeOKcgqchHchDchEbrnchGcgqchAchBchCcgEcgxcgCbpHcgKcgqcgFcgGcgHeOLcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgJcgAcgLbQZbSibQZbQXbQXbQXbQXbQXbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaacrRcgMcgNcgOcgPcetchYcetcgRcetcgScoVcgUcigcvjaaacxIcnjcyCcobcgZccccccchachbchceOMchdchechfchgcgYchhchichjchkchlckychmcdwcdwcdwchncjWbDgbDgeONeONeOOchoeOPeOReOQeONeOSeOUeOTchveOVeOOeOWcfabXFcfbeKQchwcdMcdNeOqaaaaaaeOgchxchychzeOgbDgbDgbDgeOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachMchLchOchNeOweOAeOIeOIeQIeQHeQMeQJdsbeQPeOxeOybpHeOucrzeOXeOXchSeOYeOXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQZchTchUchVbQZbQZbQXbQXchWbQXbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrRchXcsochZcsociacibcidciccgQckXcoYcjfbWUbWSaaaaaaaaaaaacjpcihciibgnbgncikcilcikcimbYCbTWcineOZcipciqcircircircpicitcdwciucdwcivcjWbDgbDgeONciwcixciycizciAciBeONciAciBcizciCciDciEeOWcghciFcgieKQckYcdMciGeOqeOEeOEeOgeOgeOgeOgeOgciHbDgbDgeOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachIcoTchKchJcpscuIcwWcvGcyYcuJchCdKCdsbdsbcrAcsDbpHctrcrzeOXciZcjacjbeOXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaePacjdcjebSjeMMbQZbQZbQXbQYbQXbQZbQZaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOabAcABcABcABcABcABcABcABcABcAIcAIcAIcAIcAIckBcoYcoYcoYcoYcoYcoYcjgeHwcgXcgXcgXcgXcgXcjpcikcikcikcikcikcikcikcjhbYCbTWcjiePbcjkcjlcjmcjncjocAXcjqcjrcjscjtcjucjWbDgbDgeONcjvcjwciycizcizcjxeONcjycizcizciCciycjzeOWeKQeKQeKQePccjAcdMcjBeOqcjCbDgbDgbDgbDgcjDbDgbDgbDgbDgeOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaachQcjGeQYchPciUeRgeRkeRjeRneRmcgEdsbdsbdsbeReeRfbpHbpHcrzeOXcjScjTcjUeOXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaePdeMJeMJeMLeMMeMMbQZbQZbQZbQZeMNaabaabaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBRcjXcjYcjZckackackbckgckhckiclgclhckeckfckjckjckjckkcklckmckncknckockpckqckrcksckrckrckrckqckrckrcktckuckvckwbYCbTWckxePeckzcCccgYcDEcCLcDGcDFcDJcDIcDLcDKcDNbDgbDgeONckCckDckEckFckGckHeONckIckGckJckKckEckLeOWbDgbDgbDgckMchwcdMchwckNbDgbDgbDgbDgbDgbDgbDgbDgbDgbDgeOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaePfeOlckQeOmePfeQSeRdeRceQZeQXeQVeQWeQVeQTeQQcgxbpHbpHeQReOXckZclaclbeOXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBRcjXclccldclecldclfcqfcmscmtcllclkcllclmclnclnclnclnbYCbTXbTXbTXclncloclnclnclnclnclnclnclnclnclnclnclpclqclrclscltcluePgclwclxcGIclyclzclAclBcHKclDclEclFcHLcficlGePhcjLclIclJclKcizclLeONclHcizclKclMciyclNeOWclOePiePiePjclPclQclReOqePkeOHeOHePleOEeOEeOEeOFeOHeOGeOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeOlclWclXclYeOleRWeRIeRHeRKeRJeRNeRMeRVeRTeRYcgxbpHbpHcrzeOXePmcmgePoePnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBRcmicldcmjcmkcmlcmmcmpclicljcmncmocmqcmrcmucmvcmwcmwcmxccacmyccacmucmzcmucmucmucmucmucmucmucmucmucmucmAclncmBcmCcmDcmEcHPcmGcmHcmIcmJcmKcmLcmMcmNcmOcmPcmQcDIbXlcmRePpcmTcizciycizcizcmUePqcmVcizcizciCciycmWeOWcmXeOEaaaePreOqcmYeOqeOqaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeOleOleOleOleOleOleOleOleOlcmZcnacnbeOleRveRreRqeRpeRoeRueRtbpHeRsbpHciOeRyeRDeRxeOXePvcnfePvaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOabAcABcABcABcABcABcABeSEeSNeSNeSMclleSOcABcgXcngcolcolcnhcolcnicolcolcIdcIecolcolcIfcIgcIecolcolcolcolcnkcnlcnmcnncnocnpcnqcnrcnscnrcnrcntcnrcnucnvcnwcnxcnycDNbDgcmXePwcnzcnAcnBcnCcnDcnEeONcnFcnDcnGciCcnHcnIeOWcmXeOEaaaePrcnJcnKcnLeOqaaaaaaaaaaaacnMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeOlcnNcnOcnPePxcnReRlcnTePycnUeRSeRReOleRieSVeSUeSWeRweRweSSeSfeSTeSZeRaeSXeSYeTaeOXePAcnYePAaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacuacuacuakqakqacuakqakqakqakUakqakqaabakUcnZaaaaabaabdyqdyqdyqcABbVucIqeSFeSGeSHeSIeSJeSKcoacIucoccodcoecofcogcohcoicojcokcolcojcomconcoocoocopcolcoqcorcoscotbTWcoucIBcowcoxcoycozcoycoAcoBcoCcoDcoEcoFcDNcDNcmXePweOWeOWcoGeOWeOWePBePDePCePCePCcoHePCePEePCcoIeOEaaaePrcoJcnKcoKeOqePGePFePFePHeOqeOqePJePIePIePKePIePIePKePLaaaaaaeOlcoPcoQcoPcoRcoScoTcoUePyePMcoVePMeOleRzeRBeRAeRAeRCeRweSgeSfeSebpHciOeSheSQeSRcgqaaacoWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaaaaaaaacuaaaaaaaabaabaaaaabaabaaaaaaaabaabaabaaacnZaaaaaaaaaaabaabdyqcABcABcABcABcABcABcABcABcKncoacIQcoZcpacpbcpccpccpccpccpdcpecpfcoocpgcoocoocphcoocpicpjcpkcplcotbTWcpmePNcpncoxcpocppcpqcoxcprcpscptcpucpvcpwcpxcpycpzcpAcpAcpBcpCcpDcpEcpFbXlbXlbXlcpGbDgbDgbVPbDgeOEaaaePrcpHcnKcpIePOcpJcpKcpLcpMcpNcpOcpPcpNcpOcpQcpNcpRcpSePPaaaaaaeOlcoPcoPcoPePQcpUcnScpVcpWcpXcpYciSeOleRLeRAeRAeRAeROeRweRweRwckPcjHcgqcgxcjFcgxcgqaaacqbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBRcjXcjYcjZckackackbckgckhckiclgclhckeckfckjckjckjckkcklckmckncknckockpckqckrcksckrckrckrckqckrckrcktckuckvckwbYCbTWckxePecsMcCccgYcDEcCLcDGcDFcDJcDIcDLcDKcDNbDgbDgeONckCckDckEckFckGckHeONckIckGckJckKckEckLeOWbDgbDgbDgckMchwcdMchwckNbDgbDgbDgbDgbDgbDgbDgbDgbDgbDgeOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaePfeOlcsReOmePfeQSeRdeRceQZeQXeQVeQWeQVeQTeQQcgxbpHbpHeQReOXckZclaclbeOXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBRcjXclccldclecldclfcqfcmscmtcllclkcllcuPclnclnclnclnbYCbTXbTXbTXclncloclnclnclnclnclnclnclnclnclnclnclpclqclrclscltcluePgclwclxcGIclyclzclAclBcHKclDclEclFcHLcficlGePhcjLclIclJclKcizclLeONclHcizclKclMciyclNeOWclOePiePiePjclPclQclReOqePkeOHeOHePleOEeOEeOEeOFeOHeOGeOEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeOlclWclXclYeOleRWeRIeRHeRKeRJeRNeRMeRVeRTeRYcgxbpHbpHcrzeOXePmcmgePoePnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBRcmicldcmjcmkcmlcmmcmpclicljcmncmocmqcwycmucmvcmwcmwcmxccacmyccacmucmzcmucmucmucmucmucmucmucmucmucmucmAclncmBcmCcmDcmEcHPcmGcmHcmIcmJcmKcmLcmMcmNcmOcmPcmQcDIbXlcmRePpcmTcizciycizcizcmUePqcmVcizcizciCciycmWeOWcmXeOEaaaePreOqcmYeOqeOqaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeOleOleOleOleOleOleOleOleOlcmZcnacnbeOleRveRreRqeRpeRoeRueRtbpHeRsbpHciOeRyeRDeRxeOXePvcnfePvaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOabAcABcABcABcABcABcABeSEeSNeSNeSMclleSOcABcgXcngcolcolcztcolcnicolcolcIdcIecolcolcIfcIgcIecolcolcolcolcnkcnlcnmcnncnocnpcAzcnrcnscnrcnrcntcnrcnucnvcnwcnxcnycDNbDgcmXePwcnzcnAcnBcnCcnDcnEeONcnFcnDcnGciCcnHcnIeOWcmXeOEaaaePrcnJcnKcnLeOqaaaaaaaaaaaacnMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeOlcnNcnOcnPePxcnReRlcnTePycnUeRSeRReOleRieSVeSUeSWeRweRweSSeSfeSTeSZcADeSXeSYeTaeOXePAcnYePAaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacuacuacuakqakqacuakqakqakqakUakqakqaabakUcnZaaaaabaabdyqdyqdyqcABbVucIqeSFeSGeSHeSIeSJeSKcoacIucoccodcoecofcogcohcoicojcokcolcojcomconcoocoocopcolcoqcorcoscotbTWcoucIBcowcoxcoycozcoycoAcoBcoCcoDcoEcoFcDNcDNcmXePweOWeOWcoGeOWeOWePBePDePCePCePCcoHePCePEePCcoIeOEaaaePrcoJcnKcoKeOqePGePFePFePHeOqeOqePJePIePIePKePIePIePKePLaaaaaaeOlcoPcoQcoPcoRcoScoTcoUePyePMcAHePMeOleRzeRBeRAeRAeRCeRweSgeSfeSebpHciOeSheSQeSRcgqaaacoWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaaaaaaaacuaaaaaaaabaabaaaaabaabaaaaaaaabaabaabaaacnZaaaaaaaaaaabaabdyqcABcABcABcABcABcABcABcABcKncoacIQcoZcpacpbcpccpccpccpccpdcpecpfcoocpgcoocoocphcoocBJcpjcpkcplcotbTWcpmePNcpncoxcpocppcpqcoxcprcBScptcpucpvcpwcpxcpycpzcpAcpAcpBcpCcpDcpEcpFbXlbXlbXlcpGbDgbDgbVPbDgeOEaaaePrcpHcnKcpIePOcpJcpKcpLcpMcpNcpOcpPcpNcpOcpQcpNcpRcpSePPaaaaaaeOlcoPcoPcoPePQcpUcnScpVcpWcpXcpYciSeOleRLeRAeRAeRAeROeRweRweRwckPcjHcgqcgxcjFcgxcgqaaacqbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaaaaacuaaacqccqdcqeaaacqccqdcqeaaacqccqdcqeaabckdaabaaaaaaaaaaaaaabaabaabaaaaaaaaaaaaaaaaaackccoacIQcqgcoocphcqhcoocoocoocqicoocqgcqgcoocoocoocoocqjcIScpjcqlclncqmbTWePNePNcqncoxcqocqpcqqcoxcqrcHKcqscqtcqucqvcITbVQbDgcqwbVQcqwbDgbDgbDgcmXclSeOEeOFeOHeOHeOHeOGeOEeOEaaaePRcqycqzcqAePScqCchwchwcqDcqEcqFcqGcqEcqFcqGcqEcqFcqGePPaaaaabeOlePyePyePyePycqHcoTcqIcqJcqKcqLcqNeOleSbeRAeSceRAeSdcjEciYciXciVciKcgqciRciRciJcgqaaacqbaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaacuaaacqccqQcqeaaacqccqQcqeaaacqccqQcqeaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabcIOcoacIUcqgcqRcoocqScqTcqUcqUcpgcoocqgcqVcoocoocoocoocqWcIVcqYcqZbSCcracrbePTcrdcrecoxcqocrfcrgcoxcrhcHKcDNcIXcDIcIZcIYcJfcJacJucJjcJCcJacJacJacJDcJaeOEaaaaaaaaaaaaaaaaaaaabaaaePrcrlcnKcrmePUcrnchwchwcqDcrocrpcrqcrrcrpcrqcrrcrpcrsePPaabaabeOlcnNcnOcnPePVcrucnScrvcrwcrxcrycjJeOleRAeRAeSieSkeREeRweRweRwcnVcnVcgqclZcmfcqacgqaaacqbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaagaaaaaaaaaakqaabcqccqQcqeaaacqccqQcqeaabcqccqQcqeaabaaaaaaaabaabaabaabaabaaaaaaaaaaaaaaaaabaaaaaacJEcoacolcrCcoocrDcrEcrFcrGcrHcrGcrIcrGcrJcrKcojcrLcqgcqgcIScrMcrNcrOcrPcrQePWcrScrTcrUcrVcrWcrXcrYcrZcJXcwucwucxycvbcvccwtcsgcshcsicsjcskcslcsmcsncKaaabaaaaaaaaaaaaaaaaaaaabaabePRcspcsqcsrcsscstchwchwchwcsuchwchwchwchwchwchwchwcsvePXaaaaaaeOlcoPcoPcoPcsxcoScoTcsycszcsAcuHeRPeOleOleOleOleOleRweRwcgqcgqckTckScgqcgqcgqcgqcgqaaacqbaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaaabaaacqccqQcqeaabcqccqQcqeaaacqccqQcqeaaaaaaaaaaaaaaaaaaaabaabaabaaaaabaaaaabaabaaaaaacKncsGcolclTcsIcsIcsJcolcolcolcolcolcolcolcolcolcolcolcolcolcbWcsKcbWcKrcbWcgXcsLcsMcsNcsOcsPcsQcsRcsScJXcAPcGKcHucsUcsVcsWcsXcsYcsZctactbctcctdctecKvaabctgctgctgctgctgaaaaaaaabePrcthcnKctictjctkctlchwchwctmchwchwchwchwchwctnchwctoePZaaaaaaeOlcoPcoPcoPePVctqcnScsBctscttcjRctvctwctxctycDneOlaabaabaaaaabaabaabaabaaaaaaaaaaaaaaacqbaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaaabaaacqccqQcqeaabcqccqQcqeaaacqccqQcqeaaaaaaaaaaaaaaaaaaaabaabaabaaaaabaaaaabaabaaaaaacKncsGcolclTcsIcsIcsJcolcolcolcolcolcolcolcolcolcolcolcolcolcbWcsKcbWcKrcbWcgXcsLcCqcsNcsOcsPcsQcCEcsScJXcAPcGKcHucsUcsVcsWcsXcsYcsZctactbctcctdctecKvaabctgctgctgctgctgaaaaaaaabePrcthcnKctictjctkctlchwchwctmchwchwchwchwchwctnchwctoePZaaaaaaeOlcoPcoPcoPePVctqcnScsBctscttcjRctvctwctxctycDneOlaabaabaaaaabaabaabaabaaaaaaaaaaaaaaacqbaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaacuacuakqaabaaacqccqQcqeaabcqccqQcqeaaacqccqQcqeaabaaaaaaaaaaaaaaaaaaaaaaaaaabcKzcKwcKwcKwcKwcKneOzcoaeOvctHctIctIctJeImctKctLctLctLctLctMctNctOctNctNctPctPctNctQeIoeIneIpeIpctRctSctTctUctVctWctWctXeIqcAOcyDczFcubcsVcxzcsXcudcuecufcugcuhcuicujeIrculcumcuncuocupctgaaaaaacuqeQaeQbcureQceQbcuscutcuucuvcuycuwcuxcuycuzcuAcuBcuCcuDePPaaaaaaeOlePyePyePyePycuEcoTcsycuFcuGcuHcsCcjOcjNcvCcjMePzcnXaabaabaabaaaaaaaaaaaaaaaaaaaaaaaacqbaabaaaaaaaaaaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaacuaaaaabaaaaabaabcuLaabaabaabcuLaabaaaaabcuLaabaaaaaaaaaaaaaaaaaaaaaaaaeIteIseIucuMcuNcuOeIvcuQcuRcuSeOveOvcuTcuUcolcolcuVcHqcHqcHqcHqeIweIyeIxeIyeIyeIyeIpeIpeIzeIAcuWcuXcuYctWcuZctTctWctWctWctWcvacJXcIDcIEcHucubcsVcubcvdcudcuecvecvfcvgcvhcvieIBaabcvkcvlcupcvmctgaaaaaaaaaeQacvncvocvpeQbcvqcvrcvscvtcvucqGcqFcvucvvcvwcvxcqGcqFePPaaaaaaeOlcnNcnOcnPeQdcrucnScvzcvAcvBcvCcvDckOeRQeRUcvHeOlaabaabaagaaaaaaaaaaaaaaaaaaaaaaaaaaacqbaabaaaaaaaaaaabaabaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaakqaabcvIcvJcvJcvKcvLcvMcvMcvMcvLcvMcvMcvMcvLcvMcvMcvNcvJcvJcvJcvJcvJcvOcvPcvQcvRcvScvTcvUcvVcvWbYrcoacvXeOvcolcolcolcvYcuVcHqcvZcwacwbcwccwdcwecwfcwgcwhcwicwjcwkcwlcwmcwncwocwpcwqctTcwrctWctWctWcwscJXcHScHScubcwvcwwcwxcwycwzcwAcwBcwCcwDcwEcwFeIrcwGcumcwHcupcupctgaaaaaaaabeQacwIcvocwJeQbcwKcwLctlcwMcvucwNcwOcvucwPcwQcvxcwNcwRePPaaaaaaeOlcoPcoQcoPcwScoScoTcwTcvAcwUcoTcoTeRXePyePyePyeOlaaaaaaaaaaaacqOcqOcqOcnZaabaabaabaabcqPaabaabaabaabaabakUcqOcqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaakqaabcvIcvJcvJcvKcvLcvMcvMcvMcvLcvMcvMcvMcvLcvMcvMcvNcvJcvJcvJcvJcvJcvOcvPcvQcvRcvScvTcvUcvVcvWbYrcoacvXeOvcolcolcolcvYcuVcHqcvZcwacwbcwccwdcwecwfcwgcwhcwicwjcwkcwlcwmcwncwocwpcwqctTcwrctWctWctWcwscJXcHScHScubcwvcwwcwxcCIcwzcwAcwBcwCcwDcwEcwFeIrcwGcumcwHcupcupctgaaaaaaaabeQacwIcvocwJeQbcwKcwLctlcwMcvucwNcwOcvucwPcwQcvxcwNcwRePPaaaaaaeOlcoPcoQcoPcwScoScoTcwTcvAcwUcoTcoTeRXePyePyePyeOlaaaaaaaaaaaacqOcqOcqOcnZaabaabaabaabcqPaabaabaabaabaabakUcqOcqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaacuaaaaabaaaaabaabcwXaabaaaaabcwXaabaaaaabcwXaabaaaaaaaaaaaaaaaaaaaaaaaaeIteIseICcwYcwZcxacKwcxbbYrcxccuRcuRcuRcuRcxdcuRcvWcHqcxecxfcxgcxhcxicxjcxkcxlcxmcxncxocxpcxqcxrcxscxtcxuctSctTcxvcxwctWctWcxxcJXcsecsfcubcxAcsVcxBeIDcxCcxDcxEcxFcxGcxHcxGeIEaabctgctgctgctgctgaabaabaabeQecxJcvocwJeQbcxKcxLcxMcxNeQgeQfeQheQhcxPeQheQjeQieQbeQkaaaaaaeOlcoPcoPcoPeQdcxRcxScxTcqMcxUctwctwctwcxVcxWcxXeQlaaaaaaaaaaaacqOaaaaabaaaaabaaaaaaaaacrBaaaaabaabaaaaaaaaaaaacqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaacuacuakqaabaabcqccyacqeaaacqccyacqeaaacqccyacqeaabaaaaaaaaaaaaaaaaaaaaaaabaabeIFcKwcKwcKwcKweOscfHcybbYrcycbYrbYrcuVcydbYrcHqcyecyfcygcyhcyicyjcykcylcymcyncyocypcyqcyrcyscytcyucyvcywcyxcyycyzcyAclUeIHcsTcwxcyEcyFcyGcyHcyIcyJcyKcyLcyMcyNcyOcyPeIIculcumcyQcyRcyRctgaaaaaaaabeQacyScvocyTeQbcyUcyVcyVcyWeQbcyXcvFctzczaczbczcczdczaeQmaaacuqeOleOleOleOleOlczecoTczfcnSczgcnSczhcnSczicnSczjeQnaaaaaaaaaaaacqOaaacsEcsEcsEcsEcsEaabcsFaabcsEcsEcsEcsEcsEaaacqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAraaaaaaaaacAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaaaaaaacqccyacqeaabcqccyacqeaaacqccyacqeaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabczlczlczlczlczlczlczlczmczlczlcHqcznczocxgcxgczpczqczrczsczteIpczuczvcwmczwczxeIpczyctWctTczAbeCczCcyAczDeIJbeHczGczHczIczJczGczKczLczMczNcubczOczPczQeIKaabcvkczRczSczTctgaaaaaaaaaeQaeQbczUeQoeQbczVczWczXczYczZcvocAacAbczacAccAdcAecAfeQpaabaaaaaaaaaaaaaaaeOlcAhcAicAjcAkcAlcAmcAncAocAlcAmcApeOlaaaaaaaaaaaacqOaabctActBctBctBctBctCctDctEctFctFctFctFctGaabcqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacArcArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaakqaabcqccyacqeaaacqccyacqeaaacqccyacqeaabaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaabaabaabczlcAscAscAtcAucAvcAvcAwcAxcAycAzcygcyhcxgcxgcxgcAAcxgcxgcxgeIpeILcACcADcAEcAFeIMeINcAHeIOcAJcAKcALeIQeIPeIRcANcuccuacxAcsVcAQcARcAScATcAUcubczOcAVcAWeIScAYcumcAZcyRcyRctgaabaaaaaaeQecyZcBbcBccBdcBecBfcBecBecBgcBhcBicBjcBjcBkcBlcBmcBneQqaabaabaaaaaaaaaaaaeOlcBpcBqcBrePycBscBtcBuePycBvcBwcBxeOlaaaaaaaaaaaacqOaabcuKcuKcuKcuKcuKaaacsFaaacuKcuKcuKcuKcuKaabcqOaaaaaaaaaaaacAraaaaaacAraaaaaacArcArcArcArcArcArcAraaaaaacAraaaaaacAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaakqaabcqccyacqeaaacqccyacqeaabcqccyacqeaabaabaabaaaaabaaaaaaaabaabaaaaaaaaaaabaaaaaaczlcAscAscAtcBycBycBycBzcBzcBAcHqcBBcBCcBDcBEcBFcBGcBHcBIcBIclVcBJcBKcxgcxgcxgcBLcBMcBNeITcBOcBPcBQeIVeIUcHqeIWeIWcBTcxAcsVcBUcBVcBWcBXcBYcubcBZcCacCbeIXcCdctgctgctgctgctgaaaaaaaaaeQaczzcCfcCgcChcCicCjcCicCicCkcClcCmcCncBncCocCpcAeczaeQraabaabaaaaaaaaaaaaeOlcCrcoPcoPePycCscoPcoPePycCscoPcoPeOlaaaaaaaaaaaacqOaaaaabaaaaabaabaabaaacsFaaaaabaaaaabaaaaabaaacqOaaaaaaaaaaaacArcArcArcAraaacArcArcArcArcArcArcArcArcAraaacArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaakUaabcqccCvcqeaaacqccCvcqeaaacqccCvcqeaabakqaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaabczlcCwcCxcBycBycBycCyeIYeIYeIZeIYeIYeIYeIYcCzcCAcCBcCCcCDcCDcCDcCEcCFcCGcCDcCDcCDcCFcCHcCIcCJcBPcCKeJaeIUcCMcCNeJbcCOcCPcCQcCRcCScAUcCTcCUcCVcCWcCXcCYeIIcCZcumcDacDbcDbctgaaaaaaaaaeQacDmcDdcDecDfcDgcDhcDiczacDjcDkcDlcCecBacDocDccDqcDreQsaaaaaaaaaaaaaaaaaaeOlcDtcoPcoPePycDucoPcoPePycDucoPcoPeOlaaaaaaaaaaaacqOaaacsEcsEcsEcsEcsEaabcsFaabcsEcsEcsEcsEcsEaabcqOaaaaaaaaaaaacArcArcArcAraaacArcArcArcArcArcArcArcArcAraaacArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaakqaaaaabaaaaaaaaaaabaabaabaaaaaaaabaabaaaakqaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaabczlcmacBycBycBycBycByeIYcDvcDwcDxcDycDzeIYcDAcDBcDCczocxgcxgcDDeJdeJceJecDHeJgeJfeJhcHqeJicCJcBPcDMeJjeIUcHqcDOeIWcDPcDQcubcCRcCScDRcubcCUcCVczOczPcDSeIKcDTcvkcDUcDVcDWctgaaaaaaaaaeQteQveQueQueQweQxeQxeQycEacEbcEccEdcEccEeeQzeQzeQkeQAeQzaaaaaaaaaaaaaaaaaaeOlcoPcoPcoPePycEfcoPcoPePycEfcoPcoPeOlaaaaaaaaaaaacqOaabctActBctBctBctBctCctDctEctFctFctFctFcxZaabcqOaaaaaaaaaaaacArcArcArcAraaacArcArcArcArcArcArcArcArcAraaacArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaacuacuakqacuacuakUakqakqakqakqacuakqakqacucEgaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczlcEhcBzcEicEjcEkcEleIYcEmcEncEocEpcEqcErcEscEtcEuczocxgcEvcEweJkcExcEycEzcEAcEBeJlcECcDCczocEDcEEeITeJmcHqeOteIWcEGcEHcubcCRcCScAUcubcEIcCVczOcEJcEKeIScELcumcEMcDbcDbctgaaaaaaaaacENaaaaaaaaaaaaaaaaaaeQacEOczaczacEPcEQcEReQzaaccEScETcEUaaaaaaaaaaaaaaaaaaeOleOleOleOleOleOleOleOleOlcEVcEVcEVeOlaaaaaaaaaaaacqOaabcuKcuKcuKcuKcuKaaacsFaabcuKcuKcuKcuKcuKaaacqOaaaaaaaaaaaacArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabczlczlczlcEWcEXcEYcEZeIYcFacFbcFccFccFdcFecCDcFfcFgcFhcFicFjcFjcFkcFlcFmcFncFocFpcFkcFqcFrcFscFtcxgcFucFvcFwcDOeIWcFxcFycubcCRcubcFzcubcCUcCVczOczPcFAeIKcDTctgctgctgctgctgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeQacFBczaczaczYcFCcFDeQzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacENaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaaaaaaaaaaaaaaacnZaaaaabaaaaabaaaaabaaacAqaaaaabaaaaabaabaabaabcqOaaaaaaaaaaaacArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaaaaaaacqccyacqeaabcqccyacqeaaacqccyacqeaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabczlczlczlczlczlczlczlczmczlczlcHqcznczocxgcxgczpczqczrczscDHeIpczuczvcwmczwczxeIpczyctWctTczAbeCczCcyAczDeIJbeHczGczHczIczJczGczKczLczMczNcubczOczPczQeIKaabcvkczRczSczTctgaaaaaaaaaeQaeQbczUeQoeQbczVczWczXczYczZcvocAacAbczacAccAdcAecAfeQpaabaaaaaaaaaaaaaaaeOlcAhcAicAjcAkcAlcAmcAncAocAlcAmcApeOlaaaaaaaaaaaacqOaabctActBctBctBctBctCctDctEctFctFctFctFctGaabcqOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacArcArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaakqaabcqccyacqeaaacqccyacqeaaacqccyacqeaabaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaabaabaabczlcAscAscAtcAucAvcAvcAwcAxcAycErcygcyhcxgcxgcxgcAAcxgcxgcxgeIpeILcACcFecAEcAFeIMeINcFkeIOcAJcAKcALeIQeIPeIRcANcuccuacxAcsVcAQcARcAScATcAUcubczOcAVcAWeIScAYcumcAZcyRcyRctgaabaaaaaaeQecyZcBbcBccBdcBecBfcBecBecBgcBhcBicBjcBjcBkcBlcBmcBneQqaabaabaaaaaaaaaaaaeOlcBpcBqcBrePycBscBtcBuePycBvcBwcBxeOlaaaaaaaaaaaacqOaabcuKcuKcuKcuKcuKaaacsFaaacuKcuKcuKcuKcuKaabcqOaaaaaaaaaaaacAraaaaaacAraaaaaacArcArcArcArcArcArcAraaaaaacAraaaaaacAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaakqaabcqccyacqeaaacqccyacqeaabcqccyacqeaabaabaabaaaaabaaaaaaaabaabaaaaaaaaaaabaaaaaaczlcAscAscAtcBycBycBycBzcBzcBAcHqcBBcBCcBDcBEcBFcBGcBHcBIcBIclVcKscBKcxgcxgcxgcBLcBMcBNeITcBOcBPcBQeIVeIUcHqeIWeIWcBTcxAcsVcBUcBVcBWcBXcBYcubcBZcCacCbeIXcCdctgctgctgctgctgaaaaaaaaaeQaczzcCfcCgcChcCicCjcCicCicCkcClcCmcCncBncCocCpcAeczaeQraabaabaaaaaaaaaaaaeOlcCrcoPcoPePycCscoPcoPePycCscoPcoPeOlaaaaaaaaaaaacqOaaaaabaaaaabaabaabaaacsFaaaaabaaaaabaaaaabaaacqOaaaaaaaaaaaacArcArcArcAraaacArcArcArcArcArcArcArcArcAraaacArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaakUaabcqccCvcqeaaacqccCvcqeaaacqccCvcqeaabakqaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaabczlcCwcCxcBycBycBycCyeIYeIYeIZeIYeIYeIYeIYcCzcCAcCBcCCcCDcCDcCDcLncCFcCGcCDcCDcCDcCFcCHcLscCJcBPcCKeJaeIUcCMcCNeJbcCOcCPcCQcCRcCScAUcCTcCUcCVcCWcCXcCYeIIcCZcumcDacDbcDbctgaaaaaaaaaeQacDmcDdcDecDfcDgcDhcDiczacDjcDkcDlcCecBacDocDccDqcDreQsaaaaaaaaaaaaaaaaaaeOlcDtcoPcoPePycDucoPcoPePycDucoPcoPeOlaaaaaaaaaaaacqOaaacsEcsEcsEcsEcsEaabcsFaabcsEcsEcsEcsEcsEaabcqOaaaaaaaaaaaacArcArcArcAraaacArcArcArcArcArcArcArcArcAraaacArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaakqaaaaabaaaaaaaaaaabaabaabaaaaaaaabaabaaaakqaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaabczlcmacBycBycBycBycByeIYcDvcDwcDxcDycDzeIYcDAcDBcDCczocxgcxgcDDeJdeJceJecLWeJgeJfeJhcHqeJicCJcBPcDMeJjeIUcHqcDOeIWcDPcDQcubcCRcCScDRcubcCUcCVczOczPcDSeIKcDTcvkcDUcDVcDWctgaaaaaaaaaeQteQveQueQueQweQxeQxeQycEacEbcEccEdcEccEeeQzeQzeQkeQAeQzaaaaaaaaaaaaaaaaaaeOlcoPcoPcoPePycEfcoPcoPePycEfcoPcoPeOlaaaaaaaaaaaacqOaabctActBctBctBctBctCctDctEctFctFctFctFcxZaabcqOaaaaaaaaaaaacArcArcArcAraaacArcArcArcArcArcArcArcArcAraaacArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaacuacuakqacuacuakUakqakqakqakqacuakqakqacucEgaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczlcEhcBzcEicEjcEkcEleIYcEmcEncEocEpcEqcLXcEscEtcEuczocxgcEvcEweJkcExcEycEzcEAcEBeJlcECcDCczocEDcEEeITeJmcHqeOteIWcEGcEHcubcCRcCScAUcubcEIcCVczOcEJcEKeIScELcumcEMcDbcDbctgaaaaaaaaacENaaaaaaaaaaaaaaaaaaeQacEOczaczacEPcEQcEReQzaaccEScETcEUaaaaaaaaaaaaaaaaaaeOleOleOleOleOleOleOleOleOlcEVcEVcEVeOlaaaaaaaaaaaacqOaabcuKcuKcuKcuKcuKaaacsFaabcuKcuKcuKcuKcuKaaacqOaaaaaaaaaaaacArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoXcoXcoXcoXcoXcoXcoXcoXcoXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabczlczlczlcEWcEXcEYcEZeIYcFacFbcFccFccFdcMccCDcFfcFgcFhcFicFjcFjcMjcFlcFmcFncFocFpcMjcFqcFrcFscFtcxgcFucFvcFwcDOeIWcFxcFycubcCRcubcFzcubcCUcCVczOczPcFAeIKcDTctgctgctgctgctgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeQacFBczaczaczYcFCcFDeQzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacENaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaaaaaaaaaaaaaaacnZaaaaabaaaaabaaaaabaaacAqaaaaabaaaaabaabaabaabcqOaaaaaaaaaaaacArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabcFGcFHcFIcFJaabaabeIYcFKcFLcFccFccFMeIYcFNcFOcFPcFQcFRcFScFTcHqcFUcFVcFWcxgcFXcHqcFYcFZcGacFQcFQcGbcGccHqcGdeIWcGecGfcubcCRcubcBUcBVcGgcGhcCWcGicGjeIIcGkcumcGlcGmcGmctgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeQtcGncGocGpcGqcGrcGseQzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqOaaacsEcsEcsEcsEcsEaabcqPaabcsEcsEcsEcsEcsEaabcqOaaaaaaaaaaaacArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabcFGcGtcGucGvaabaaaeIYcGwcFLcFccFccGxeIYcGycGzcHqcGAcGBcGBcGBcHqcGCcGDcGEcGFcGGcHqcGBcGBcGBcGAcHqcGHcGycHqcDOeIWcGJcsacGLcGMcGNcGOcGPcGQcyNcGRczPcGSeIKcDTcvkcGTcGUcGVctgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeQzeQBeQCeQCeQCeQCeQDeQzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqOaabctActBctBctBctBcCtcCucCtctFctFctFctFcxZaabcqOaaaaaaaaaaaacArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGYaaaaaaaaacGYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcFGcGZcHacFGcHbaaaeIYcHccHdcFccFccHeeIYcHfcHgcHqcHhcHicHjcHkeJocHlcHmcHncHocGGeJocHicHicHicHpcHqcHrcHscHqcDOcHtcCRcHvcHwcGPcHxcHycHzcHAcHBcHCcHDcHEeIScELcumcHFcGmcGmctgaabaabaaaaaaaaaaaaaaaaaaaaaaaacENaaaaaaaaaaaaaaaaaacENaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqOaabcuKcuKcuKcuKcuKaaacqPaaacuKcuKcuKcuKcuKaaacqOaaaaaaaaacArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcArcAraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -13375,7 +13369,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaabaaaaaaaabaabacucHqcHqeJDcIRaaaaaaaabaaacKeaabaacaacaacaabaabcJhaabaaaaaacIReJDcHqcHqcCMcHqctgctgctgctgctgctgctgctgctgctgctgctgctgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJbcJbcJbcJbcJbcJbcJbcJbcJbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYcGYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabcHqeJTeJScIRaaaaaaaabaaaaaaaabaabaabaabaabaaaaaaaabaaaaaacIReJQeJRcHqcJGcHqcHqcHqcHqcHqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJbcJbcJbcJbcJbcJbcJbcJbcJbaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaacGYcGYcGYcGYaaaaaacGYcGYcGYcGYcGYcGYcGYaaaaaacGYcGYcGYcGYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaabcHqeJPcIRcKgaaaaaacKhaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaacIRcIReJPcHqcCMeJWdrBcKAcKBcKlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJbcJbcJbcJbcJbcJbcJbcJbcJbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaacGYcGYcGYcGYcGYcGYcGYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcHqeJXcKocIRaabaabaabcJhaaaaaacJhaaaaaaaaaaaacJhaabcKpaabcIRcKqeJYcHqcCMcKscKtcxgcKkcKuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJbcJbcJbcJbcJbcJbcJbcJbcJbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaacGYcGYcGYcGYcGYcGYcGYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcHqeJXcKocIRaabaabaabcJhaaaaaacJhaaaaaaaaaaaacJhaabcKpaabcIRcKqeJYcHqcCMcMKcKtcxgcKkcKuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJbcJbcJbcJbcJbcJbcJbcJbcJbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaacGYcGYcGYcGYcGYcGYcGYaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacHqeJZeKacKxaaaaaaaabaabaabaabaabaabaabaabaabaabaabaaaaaacKyeKaeKbcHqcCMcHqcKicKjcKkcKCaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJbcJbcJbcJbcJbcJbcJbcJbcJbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaacGYcGYcGYcGYcGYcGYcGYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeJdcHqeIQcIycKxaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaabaaaaaacKycIxeIQcHqcHqcCMcHqcHqcHqcKDcHqaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJbcJbcJbcJbcJbcJbcJbcJbcJbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaacGYcGYcGYcGYcGYcGYcGYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaacHqcHqcIycIccIccIccIccIccIccIccIccIccIccIccIccIccIxcHqcHqcHqcHqcJGcHqaaaaabcKEcKFaabaaaaaaaaaaabaaaaaaaaaaabaaaaaaaaaaabaaaaaaaaaaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJbcJbcJbcJbcJbcJbcJbcJbcJbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -13387,18 +13381,18 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeJdcHqcHqcHqcHqcHqcHqaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaabcKScLbaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaabdiZcLcdiZcLdcLedjadjadjadjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabdiZcLfcLgcLhcLidjbcLjcLkdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaabdiZcLfcLlcLmcLmcLncLocLpdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaabdiZcLqcLrcLmcLmcLscLtcLudjaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaabdiZcLfcLlcLmcLmcNKcLocLpdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaabdiZcLqcLrcLmcLmcNQcLtcLudjaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabdiZdiZdjlcLmcLmdjadjmdjadjaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaofaofaaaaabaaacLvcLwcLmcLmcLxcLycLvaabaabaabaofaofaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacuacucLzcLzacuacuaaacLAcLBcLCcLDcLEcLFcLAaaaacuacucLzcLzacuacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcLHcLIcLJacuacucLKcLLcLMcLNcLmcLOcLKacuacucLPcLQcLRcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfaaacKfcKfcKfcKfcKfaaacKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcLHcLRcLUcLVdjpdjpdjAcLWdjpcLXdjBdjpdjpcLVcLYcLHcLRcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmaaacKmcKmcKmcKmcKmaaacKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfaaacKfcKfcKfcKfcKfaaacKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcLZcMacMbcMbcMccMdcMecMfcMgcMgcMhcMicMjcMkcMkcMlcMmcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmaaacKmcKmcKmcKmcKmaaacKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfaaacKfcKfcKfcKfcKfaaacKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcLHcLRcLUcLVdjpdjpdjAdwrdjpdwsdjBdjpdjpcLVcLYcLHcLRcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmaaacKmcKmcKmcKmcKmaaacKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfaaacKfcKfcKfcKfcKfaaacKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcLZcMacMbcMbdDZcMdcMecMfcMgcMgcMhcMidJycMkcMkcMlcMmcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmaaacKmcKmcKmcKmcKmaaacKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaacKfcKfcKfcKfcKfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcMncMocMpcMpdjpcMqcMrcMrcMscMrcMrcMtdjpcMpcMpcMucMvcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaacKmcKmcKmcKmcKmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcMncLSaaaaaadjpcMwcMxcMycMzcMAcMBcMCdjpaaaaaacLGcMvcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcMDdjCdjCdjCdjpcMEcMFcMrcMrcMGcMHcMIdjpdjCdjCdjCcMJcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcMncLSaaaaaadjEdjDdjEdjLcMKdjEdjEdjMdjEaaaaaacLGcMvcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcMncLSaaaaaadjEdjDdjEdjLdKVdjEdjEdjMdjEaaaaaacLGcMvcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaacucLGcMncLSaaaaaadjEcMLcMMcMNcMOcMPcMQcMRdjEaaaaaacLGcMvcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcMncLSaaadjEdjEcMScMQbjjbjjbjjcMQcMTdjEdjEaaacLGcMvcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcMncLSaaadjEdjEcMUbjjbjjcMVbjjbjjcMWdjEdjEaaacLGcMvcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -13411,7 +13405,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcMncLSaaaaaaaaadjUdjUdjUdkedjUdjUdjUaaaaaaaaacLGcMvcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcMncLSaaaaabaaadkfcNycNzdkqcNAcNBdkfaaaaaaaaacLGcMvcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcMncNCcLVcNDcNDdkfcNEcNFcNGcNHcNIdkfcLVcLVcLVcNhcMvcLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcNJcMbcMbcMbcMbcNKcNLcNMcNNcNOcNPcNQcNRcMkcMkcMkcNScLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacucLGcNJcMbcMbcMbcMbdKWcNLcNMcNNcNOcNPdKXcNRcMkcMkcMkcNScLSacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTaaacLTcLTcLTcLTcLTaaacLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacuaaacMpcMpcMpcMpcMpdkfcNTcNUcNVcNWcNXdkrcNYcMpcMpcNZcNZaaaacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTaaacLTcLTcLTcLTcLTaaacLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacuacuacuacuacuacuacudkfcOacObcOccOdcOedkfacuacuacuacuacuacuacuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaacLTcLTcLTcLTcLTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdkfdkfcOfcOgcOhdkfdkfaaaaaaaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -13500,11 +13494,11 @@ cPicPccPhcPkcPfcPmcPacPecPicPdcPlcPgcPncPbcPjcOZcPacPmcPlcPhcPkcPecPgcPfcPbcPdcO cPlcPfcPdcPncPecPjcPhcPacPlcPmcPbcPicOZcPkcPgcPccPhcPjcPbcPdcPncPacPicPecPkcPmcPccOTcOjcPhcPgcPfcPdcPlcPjcPmcPncPicOZcPkcPecPccPbcPacPjcPlcOZcPgcPfcPmcPkcPdcPccPicOqcOTcOUcPjcPacPacPncPjcPacPncPjcPacPncPjcPacPncPjcPacPncPjcPjcPacPacPncPjcPacPncPjcPacPncPjcPacPncPjcPacPncPjcPacPacOUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdaYdbQdcYdbUdbUdbUddEdbUdbUddFcVaddHddIcYadbQdbZdaJdaJdcLddKddLddMdaJddNdcmdaJdaJdaJdaJdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa cPbcPecPmcOZcPacPgcPdcPhcPbcPjcPkcPlcPccPncPicPfcPdcPgcPkcPmcOZcPhcPlcPacPncPjcPfcOTcOmcOvcOucOkcOscOtcOrcOicOmcOlcOpcOjcOqcOocOwcOncOrcOtcOpcOucOkcOicOjcOscOocOlcOncOTcOUcPhcOZcPgcPhcPgcPhcOZcPgcPhcOZcPgcPhcOZcPgcPhcOZcPgcPhcOZcPgcPhcPgcPhcOZcPgcPhcOZcPgcPhcOZcPgcPhcOZcPgcPhcPhcOUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdaYdbQdcYdbUdbUdbUddOdbUdbUdbUddPddQddRddSdbQddTddkdaJdaJdaJdaJdaJdaJddUddUddVddWddXddYdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa cPkcPacPjcPccPhcPicPmcPdcPkcPgcPncPbcPfcOZcPlcPecPmcPicPncPjcPccPdcPbcPhcOZcPgcPecOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOUcPdcPccPicPdcPicPdcPccPicPdcPccPicPdcPccPicPdcPccPicPdcPccPicPdcPicPdcPccPicPdcPccPicPdcPccPicPdcPccPiaaacPdcOUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdbNdbOdbOdbOdbOdbOdbOddZdbUdbUdbOdbOdbOdbOdbOdbOdbSdeadeadeadebddkdaJdecdecdecdecdecdecdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -cOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOUcPmcPecPecPkcPmcPecPkcPmcPecPkcPmcPecPkcPmcPecPkcPmcPmcPecPecPkcPmcPecPkcPmcPecPkcPmcPecPkcPmcPecPkcPmcPecPecOUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdbQdeddeedefdegdehdbQdeidbUdbUdbQdejdekdeldemdendbQdbZdaZdaYdaYdcgdeodecdecdecdecdecdepdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +cOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTcOTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOUcPmcPecPecPkcPmcPecPkcPmcPecPkcPmcPecPkcPmcPecPkcPmcPmcPecPecPkcPmcPecPkcPmcPecPkcPmcPecPkcPmcPecPkcPmcPecPecOUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdbQdeddeddefdegdehdbQdeidbUdbUdbQdejdekdeldemdendbQdbZdaZdaYdaYdcgdeodecdecdecdecdecdepdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOUcPjcPacPacPncPjcPacPncPjcPacPncPjcPacPncPjcPacPncPjcPjcPacPacPncPjcPacPncPjcPacPncPjcPacPncPjcPacPncPjcPacPacOUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdbQdbUdbUdbUddfdbUdeqdbUdbUdbUderdbUddfdbUddfdesdbQdbZdbAdcddetdcHdaJdeudeudeudeudeudevdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOUcPhcOZcPgcPhcPgcPhcOZcPgcPhcOZcPgcPhcOZcPgcPhcOZcPgcPhcOZcPgcPhcPgcPhcOZcPgcPhcOZcPgcPhcOZcPgcPhcOZcPgcPhcPhcOUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdbQdewdexdbUdbUdbUdeydbUdbUdbUdezdbUdbUdbUdbUdbUdbQdbZdcgdaJdaJdaJdaJdaJdaJdaJdaJdaJdaJdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOUcPdcPccPicPdcPicPdcPccPicPdcPccPicPdcPccPicPdcPccPicPdcPccPicPdcPicPdcPccPicPdcPccPicPdcPccPicPdcPccPiaaacPdcOUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdbQdewdexdbUdeAdeBdbQdeCdeDdeCdbQdeEdeFdbUdbUdbUdbQdeGdaYdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdbQdbUdbUdbUdbQdbOdbQdbUdeHdeIdbQdbOdbQdbUdbUdbUdbQdbZdaYdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUcOUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdbQdeedbUdbUdbQdbOdbQdbUdeHdeIdbQdbOdbQdbUdbUdbUdbQdbZdaYdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdbQdeJdeKdeLdbQdaYdbQdeMdeMdeMdbQdaYdbQdbYdeNdeOdbQdbZdaYdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa dePdePdePdePdePdePdePdePdePdePdePdePdePdePdePdePdePaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdbQdeMdeMdeMdbQdaYdctdeQdeRdeSdcvdaYdbQdeMdeMdeMdbQdbZdaYdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa dePdePdePdePdePdePdePdePdePdePdePdePdePdePdePdePdePaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaJdaYdctdeQdeRdeSdcvdaYdaYdaYdaYdaYdaYdaYdctdeQdeRdeSdcvdaYdaYdaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -14084,13 +14078,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdHddHpdHpdHddJrdJqdJrdJqdJrdJqdJqdJmdJqdJmdJqdJmdJqdJmdHBdHedHedHedHBdJidJidJidJidJjdJjdJjdJjdJidJidJidJidJidJidHddHfdHfdHdaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdHddHpdHpdHddJqdJqdJqdJqdJqdJqdJqdJqdJmdJmdJmdJmdHddHddHddHedHedHedHddHddHddJidJidJjdJjdJjdJjdJidJidJidJidJidJidHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadHpdHpdHpdJudJrdJqdJrdJqdJrdJqdJrdJrdJrdJqdJqdHddHddHedHedHedHedHedHedHedHddHddJjdJjdJjdJjdJjdJidJidJidJvdJvdJvdHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJudHpdHpdHpdJqdJqdJqdJqdJqdJqdJqdJqdJqdJqdJqdHddHedHedHedHedHedHedHedHedHedHddJjdJjdJjdJjdJjdJjdJwdJxdJydJzdJAdHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJudHpdHpdHpdJqdJqdJqdJqdJqdJqdJqdJqdJqdJqdJqdHddHedHedHedHedHedHedHedHedHedHddJjdJjdJjdJjdJjdJjdJwdJxdLfdJzdJAdHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJudHpdHpdJudJrdJrdJrdJrdJrdJrdJrdJrdJrdJqdJqdHddHedHedHedHedHedHedHedHedHedHddJjdJjdJjdJidJidJidJBdJwdJCdJDdJEdHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJudJudJudJudJrdJrdJmdJrdJrdJmdJmdJmdJmdJmdJmdJFdHedHedHedHedHedHedHedHedHedJtdJjdJjdJjdJidJidJidJidJidJvdJvdJvdHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJudJudJudJudJmdJrdJmdJrdJmdJqdJmdJqdJmdJqdJmdJFdHedHedHedHedHedHedHedHedHedJtdJjdJjdJjdJjdJjdJjdJGdJHdJydJIdJJdHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJudJudJudJudJmdJrdJmdJrdJmdJqdJmdJqdJmdJqdJmdJFdHedHedHedHedHedHedHedHedHedJtdJjdJjdJjdJjdJjdJjdJGdJHdLfdJIdJJdHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJudJudJudJudJrdJrdJrdJrdJrdJmdJmdJmdJmdJmdJmdJFdHedHedHedHedHedHedHedHedHedJtdJjdJjdJjdJjdJjdJjdJjdJGdJCdJKdJLdHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJudJudJudJudJrdJrdJrdJrdJrdJrdJrdJrdJrdJqdJqdHddHedHedHedHedHedHedHedHedHedHddJjdJjdJjdJjdJjdJjdJjdJjdJvdJvdJvdHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJMdJNdJNdJNdJNdJNdJNdJNdJNdJNdJNdJNdJMdJqdJqdJqdJqdJqdHddHedHedHedHedHedHedHedHedHedHddJjdJjdJjdJjdJjdJjdJGdJOdJydJPdJQdHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJMdJNdJNdJNdJNdJNdJNdJNdJNdJNdJNdJNdJMdJqdJqdJqdJqdJqdHddHedHedHedHedHedHedHedHedHedHddJjdJjdJjdJjdJjdJjdJGdJOdLfdJPdJQdHddHfdHfdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJMdJRdJSdJRdJSdJRdJRdJRdJRdJRdJRdJSdJNdJrdJqdJrdJmdJmdHddHddHedHedHedHedHedHedHedHddHddJvdJvdJjdJjdJTdJGdJjdJGdJCdJUdJVdHddHpdHpdHBaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJMdJRdJRdJRdJRdJRdJSdJRdJSdJMdJSdJSdJNaaaaabaaadJSdJRdJSdHddHddHddHedHedHedHddHddHdaabaabdJvdJvdJvdJvdJvdJvdJvdJvdJvdJvdHddHfdHfdHBaacaabaacaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadJMdJRdJSdJRdJSdJRdJRdJRdJRdJRdJRdJWdJNaabaabaabdJRdJRdJRdJRdJRdHddHedHedHedHddJSdJSdJRdJRdJSdJRdJSdJRdJRdJRdJRdJSdJRdJSdHfdHpdHpdHfaabaabaabaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -14250,34 +14244,34 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKNdKLdKLdKLdKLdKLdKLdKLdKLaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKOdKPdKQdKQdKRdKRdKRdKRdKRdKSdKRdKTdKUdKLdKLdKLdKLdKLdKLdKLdKLdKVdKWdKWdKXaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKOdKYdKZdKLdKLdKLdKLdKLdKLdLadLadLadLbdLcdKUdKLdKLdKLdLddLedKRdKRdLfdLgdLhdLicKJcKJdKQdLjdLkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKOdKPdKQdKQdKRdKRdKRdKRdKRdKSdKRdKTdKUdKLdKLdKLdKLdKLdKLdKLdKLdMbdLidLidLVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKOdKYdKZdKLdKLdKLdKLdKLdKLdLadLadLadLbdLcdKUdKLdKLdKLdLddLedKRdKRdMsdLgdLhdMccKJcKJdKQdLjdLkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLldKZdKLdKLdKLdKLdKLdKLdKLdLadLmdLndLodLbdLcdLpdLadLqdLrdLsdLtdLtdLtdLudLvdLtdLtdLtdLtdLwcKOdLkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLxdKLdKLdKLdKLdKLdKLdKLdKLdLadLydLzdLAdLBdLCdLDdLEdLFdLGdLHdLIdLJdLHdLKdLudLHdLLdLMdLtaabdLNcLbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLOaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdKLdKLdLPdLPdLPdLPdKLdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaadKOdLQdKLdKLdKLdKLdLRdLRdLRdLRdLRdLSdLTdLUdLVdLWdLWdLWdLXdLYdLHdLZdMadMbdLudLudMcdMadLZdLtaabaabdMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdKLdKLdKLdKLdKLdKLdLPdLPdKLdKLdKLdKLdLPdLPdLPdLPdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLaaaaaaaaadMedMfcKJcKJcKJdMgdMhdKLdKLdKLdKLdLRdLRdMidMjdLRdMkdMkdMkdMkdMldLWdMmdMndModLHdLHePtdLHdMpdMqdMrdMrdMrdMrdMrdMsdMtdMuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMvdMwdMvaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdKLdKLdKLdLPdLPdKLdLPdLPdLPdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdLPaaaaaadMxdMhaabaabaabaabaabdKLdKLdKLdKLdLRdMydMzdMAdMBdMCdMDdMEdMFdMGdMHdMIdMJdMKdLHdMLdMMePtdMNdMOdMPdMQdMRdMSdMTdMUdMVdMWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMXdMYdMXaabaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaadLxaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdLRdMZdNadNbdLRciMdNddMCdNedNfdNgdNhdNidNjdNkdNldNmdNndNodNpdMrdNqdNrdNsdNtdNudNvdMWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNwdNxdNydNzaabaaaaaadKLdKLdKLdKLdKLdKLdKLdLPdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaadLxaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdLRdMZdNadNAdLReRZdMCchRdNDdNEdNFdNGdNFdNHdNFdNFdNFdNFdNIdNJdMrdNKdNrdNLdNMdNNdMVdMWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNOdNOdNPdNQdNRdMXaabaaaaaadKLdKLdKLdKLdLPdLPdLPdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdNSaabdLxaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdLRdMZdNTdNUdLReSadNWdNXdNYdNZdOadObdOcdOddOedOfdOgdNFdOhdOidMrdOjdOkdOldOmdMrdOndOoaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOpdOqdOrdOsdOtdOudOvaabaabdLPdLPdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdOwdOwdOxaabdLxaaaaabaabaabaabaabdKLdLtdLtdLtdLtdLtdOydOzdLtdMkdMkdOAdOBdOCdNFdODdOEdOFdOGdOHdOIdNFdOJdOKdOLdOMdONdOOdOPdMrdOQdKLaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMaaadKMdKMdKMdKMdKMaaadKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadORdNOdOSdOTdOUdNRdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdOwdOwdOwaaaaaadLxdOWdOWdOWdOWdOWdOWdOWdLHdOXdOYdOZdPadPbdPcdPddPedPfdPgdPhdPidNFdPjdPkdPldPmdPndPodPpdPqdPrdPsdPsdPsdPtdPudPvdPwdPxdPxdPyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMaaadKMdKMdKMdKMdKMaaadKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdPzdPAdPBdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdOwaaaaaadLxdOWdOWdOWdOWdOWdOWdOWdPCdPDdPEdPFdPGdPHdPIdPJdPKdPLdPMdPNdPOdPPdPQdPRdPSdPTdPUdPVdPWdPXdPYdPsdPZdQadQbdQcdPsdQddKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdQedQfdQgdQhdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaadLxdOWdOWdOWdOWdOWdOWdOWdQidQjdOYdQkdQldQmdQndQodQpdQqdLtdQrdQsdQtdQudQvdQwdQxdQydQzdNFdQAdQBdQCdQDdQDdQEdQFdQGdQHdQIdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdQJdQKdQLdOVdQMdQNdOVdOVdOVdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaadLxdOWdOWdOWdOWdOWdOWdOWdQOdQjdOYdQkdQldQPdQQdQodQRdQSdLtdQTdQUdNFdQVdNFdNFdNFdNFdQWdNFdQXdQYdPsdQZdRadRbdRcdRddOQdRedKNdKNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdRfdRgdRhdRidRjdRkdMvdOudRldOVdRmdRndOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaadLxdOWdOWdOWdOWdOWdOWdOWdLHdQjdOYdRodQldRpdRqdQodRrdRsdLtdRtdRudRvdRwdRxdRydRzdNFdRAdRBdRCdRDdREdRFdRGdRHdRIdRJdOQdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdRKdSydRgdRMdRNdROdRPdRQdRldRRdRndRndRmdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaadRSdRTdRUdRVdRWdRXdRUdRYdRZdSadSbdLHdScdSddLtdLtdLtdLtdLtdSedSfdSgdRwdShdRydSidNFdSjdSkdSldSmdSndSodSpdSqdSrdSsdStdSudLtdSvdMfcKJcKJcKJcKJcKJcKJdLjdSwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadSxdRKdSydRKdRhdRhdQMdSzdRNdOVdQhdSAdOVdRndSBdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaadSCdSDdSEdSFdSGdSGdSHdSIdSJdSKdSLdSMdSNdSOdSPdSQdSRdSSdSTdSUdSVdSWdSXdSYdSZdTadNFdTbdTcdTddTedPsdPsdTfdPsdPsdPsdTgdThdTidTjdTkdTldTldTmdTldTldTldTncLbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdTodTpdRhdTqdTrdRhdPBdTsdROdTtdTudTvdOVdOVdOVdOVdOVdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaadTwdTxdSGdSGdSGdSGdTydTzdTAdTBdTCdTDdTEdTFdSPdTGdTHdTIdTJdTKdTLdTMdTNdTOdTPdTQdTRdTSdTPdTTdTUdTVdTWdTXdTYdTVdTZdTVdTPdUadUbdUcdUddUedUfdUgdUhdUidTldMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdUjdUkdUldRhdTrdUmdRMdUndRNdUodOVdUpdUqdOVdUrdRldUsdUtdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaadUudUvdSGdSGdUwdSGdUxdUydUzdUAdUBdUCdUDdUEdSPdUFdUGdUHdUIdUJdUKdULdUMdUNdUOdUPdUQdURdUSdUPdUTdUQdUUdUPdUQdUVdUWdUXdUYdUZdVadVbdVcdVddVedVfdVfdVgdTldMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabdLPdLPdOVdRkdVhdVidVjdUldVkdRNdROdVldMvdOudVmdOVdUrdQhdRldUtdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdVndVndVndVndVndVndKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaadVodVpdSGdVqdVrdVsdVtdVudVvdVwdVxdVydVzdVAdSPdVBdVCdVDdVEdVEdVEdVEdVFdVGdVHdVIdVGdVJdVKdVLdVJdVMdVNdVOdVMdVMdVPdVQdVRdVSdTldVTdVUdTldVVdVfdVfdVWdTldMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdOVdOVdOVdOVdOVdOVdRjdRNdVXdVhdRNdTsdVYdVldVldRQdRldUpdOVdUrdPBdVZdUtdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdVndVndVndWadWadWadWadVndVndVndKLdKLdKLdKLdWbdWcaaaaaaaaadWddWedRUdWfdWgdWgdWgdWgdWhdWidWjdLHdWkdWkdSPdWldVEdWmdVEdWndWodWpdWqdVGdWrdWsdWtdVJdWudWvdWwdVMdWxdWydWzdVMdWAdWBdVRdWCdWDdTldTldTldWEdWFdWGdUidTldMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdOVdWHdOueHhdWIdOVdWJdWKdWLdOVdTtdOVdWMdWNdWOdOVdOudWPdMYdWQdPBdQgdMYdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdVndVndWadWadWadWadWadWadWadWadVndVndKLdKLdWRdWScKJcKJdKQcKJdMgdMhaabaabdWTdWUdWVdWWdWXdWYdWZdXadXbdXcdXddXedXfdXgdXhdXidXjdXkdXldVGdXmdXndXodVJdXpdXqdXrdVMdXsdXtdXudVMdXvdXwdXxdXydXzdXAdXBdTldTldTldTldTldXCdLQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLOaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdKLdKLdLPdLPdLPdLPdKLdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaadKOdLQdKLdKLdKLdKLdLRdLRdLRdLRdLRdLSdLTdLUdMtdLWdLWdLWdLXdLYdLHdLZdMadMBdLudLudMudMadLZdLtaabaabdMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdKLdKLdKLdKLdKLdKLdLPdLPdKLdKLdKLdKLdLPdLPdLPdLPdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLaaaaaaaaadMedMfcKJcKJcKJdMgdMhdKLdKLdKLdKLdLRdLRdMidMjdLRdMkdMkdMkdMkdMldLWdMmdMndModLHdLHePtdLHdMpdMqdMrdMrdMrdMrdMrdNHdNndMWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMvdMwdMvaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdKLdKLdKLdLPdLPdKLdLPdLPdLPdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdLPaaaaaadMxdMhaabaabaabaabaabdKLdKLdKLdKLdLRdMydMzdMAdOadMCdMDdMEdMFdMGdMHdMIdMJdMKdLHdMLdMMePtdMNdMOdMPdMQdMRdMSdMTdMUdMVdOhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMXdMYdMXaabaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaadLxaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdLRdMZdNadNbdLRciMdNddMCdNedNfdNgdNhdNidNjdNkdNldNmdOidNodNpdMrdNqdNrdNsdNtdNudNvdOhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNwdNxdNydNzaabaaaaaadKLdKLdKLdKLdKLdKLdKLdLPdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaadLxaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdLRdMZdNadNAdLReRZdMCchRdNDdNEdNFdNGdNFdOndNFdNFdNFdNFdNIdNJdMrdNKdNrdNLdNMdNNdMVdOhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNOdNOdNPdNQdNRdMXaabaaaaaadKLdKLdKLdKLdLPdLPdLPdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdNSaabdLxaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdLRdMZdNTdNUdLReSadNWdNXdNYdNZdOodObdOcdOddOedOfdOgdNFdOBdOzdMrdOjdOkdOldOmdMrdPgdOLaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOpdOqdOrdOsdOtdOudOvaabaabdLPdLPdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdOwdOwdOxaabdLxaaaaabaabaabaabaabdKLdLtdLtdLtdLtdLtdOydPtdLtdMkdMkdOAdPCdOCdNFdODdOEdOFdOGdOHdOIdNFdOJdOKdPMdOMdONdOOdOPdMrdOQdKLaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMaaadKMdKMdKMdKMdKMaaadKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadORdNOdOSdOTdOUdNRdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdOwdOwdOwaaaaaadLxdOWdOWdOWdOWdOWdOWdOWdLHdOXdOYdOZdPadPbdPcdPddPedPfdPPdPhdPidNFdPjdPkdPldPmdPndPodPpdPqdPrdPsdPsdPsdPWdPudPvdPwdPxdPxdPyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMaaadKMdKMdKMdKMdKMaaadKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdPzdPAdPBdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdOwaaaaaadLxdOWdOWdOWdOWdOWdOWdOWdQidPDdPEdPFdPGdPHdPIdPJdPKdPLdQOdPNdPOdQCdPQdPRdPSdPTdPUdPVdQTdPXdPYdPsdPZdQadQbdQcdPsdQddKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaadKMdKMdKMdKMdKMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdQedQfdQgdQhdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaadLxdOWdOWdOWdOWdOWdOWdOWdQUdQjdOYdQkdQldQmdQndQodQpdQqdLtdQrdQsdQtdQudQvdQwdQxdQydQzdNFdQAdQBdQVdQDdQDdQEdQFdQGdQHdQIdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdQJdQKdQLdOVdQMdQNdOVdOVdOVdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaadLxdOWdOWdOWdOWdOWdOWdOWdQWdQjdOYdQkdQldQPdQQdQodQRdQSdLtdRTdRJdNFdRddNFdNFdNFdNFdRUdNFdQXdQYdPsdQZdRadRbdRcdRVdOQdRedKNdKNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdRfdRgdRhdRidRjdRkdMvdOudRldOVdRmdRndOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaadLxdOWdOWdOWdOWdOWdOWdOWdLHdQjdOYdRodQldRpdRqdQodRrdRsdLtdRtdRudRvdRwdRxdRydRzdNFdRAdRBdRCdRDdREdRFdRGdRHdRIdRXdOQdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdRKdSydRgdRMdRNdROdRPdRQdRldRRdRndRndRmdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaadRSdStdRYdSCdRWdSadRYdSbdRZdTedTddLHdScdSddLtdLtdLtdLtdLtdSedSfdSgdRwdShdRydSidNFdSjdSkdSldSmdSndSodSpdSqdSrdSsdTfdSudLtdSvdMfcKJcKJcKJcKJcKJcKJdLjdSwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadSxdRKdSydRKdRhdRhdQMdSzdRNdOVdQhdSAdOVdRndSBdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaadTmdSDdSEdSFdSGdSGdSHdSIdSJdSKdSLdSMdSNdSOdSPdSQdSRdSSdSTdSUdSVdSWdSXdSYdSZdTadNFdTbdTcdTzdTwdPsdPsdTDdPsdPsdPsdTgdThdTidTjdTkdTldTldTJdTldTldTldTncLbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdTodTpdRhdTqdTrdRhdPBdTsdROdTtdTudTvdOVdOVdOVdOVdOVdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaadTMdTxdSGdSGdSGdSGdTydTZdTAdTBdTCdUudTEdTFdSPdTGdTHdTIdUWdTKdTLdULdTNdTOdTPdTQdTRdTSdTPdTTdTUdTVdTWdTXdTYdTVdVadTVdTPdUadUbdUcdUddUedUfdUgdUhdUidTldMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdUjdUkdUldRhdTrdUmdRMdUndRNdUodOVdUpdUqdOVdUrdRldUsdUtdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaaaaadVddUvdSGdSGdUwdSGdUxdUydUzdUAdUBdUCdUDdUEdSPdUFdUGdUHdUIdUJdUKdVodUMdUNdUOdUPdUQdURdUSdUPdUTdUQdUUdUPdUQdUVdVPdUXdUYdUZdVFdVbdVcdVSdVedVfdVfdVgdTldMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabdLPdLPdOVdRkdVhdVidVjdUldVkdRNdROdVldMvdOudVmdOVdUrdQhdRldUtdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdVndVndVndVndVndVndKLdKLdKLdKLdKLdKLdKLaaaaaaaaaaaadWedVpdSGdVqdVrdVsdVtdVudVvdVwdVxdVydVzdVAdSPdVBdVCdVDdVEdVEdVEdVEdWfdVGdVHdVIdVGdVJdVKdVLdVJdVMdVNdVOdVMdVMdWldVQdVRdWidTldVTdVUdTldVVdVfdVfdVWdTldMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdOVdOVdOVdOVdOVdOVdRjdRNdVXdVhdRNdTsdVYdVldVldRQdRldUpdOVdUrdPBdVZdUtdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdVndVndVndWadWadWadWadVndVndVndKLdKLdKLdKLdWbdWcaaaaaaaaadWddXbdRYdXfdWgdWgdWgdWgdWhealdWjdLHdWkdWkdSPdYwdVEdWmdVEdWndWodWpdWqdVGdWrdWsdWtdVJdWudWvdWwdVMdWxdWydWzdVMdWAdWBdVRdWCdWDdTldTldTldWEdWFdWGdUidTldMdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdOVdWHdOueHhdWIdOVdWJdWKdWLdOVdTtdOVdWMdWNdWOdOVdOudWPdMYdWQdPBdQgdMYdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdVndVndWadWadWadWadWadWadWadWadVndVndKLdKLdWRdWScKJcKJdKQcKJdMgdMhaabaabdWTdWUdWVdWWdWXdWYdWZdXaegQdXcdXddXeeamdXgdXhdXidXjdXkdXldVGdXmdXndXodVJdXpdXqdXrdVMdXsdXtdXudVMdXvdXwdXxdXydXzdXAdXBdTldTldTldTldTldXCdLQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdOVdWHdPBdOudRMdTtdWPdVhdOudVhdQgdOudOudXDdRldOudPBdPBdOVdMYdXEdPBdOudOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdVndVndWadWadWadWadWadWadWadWadWadWadVndVndXFdXGdXHdKLaaaaaaaaaaaaaaaaaaaabdWTdXIdXJdXKdXLdXMdXNdXOdWkdXPdXQdSPdVEdWmdVEdXRdVEdXSdXTdVGdXUdXVdXWdVJdXXdXYdXZdVMdYadYbdYcdVMdYddYedYfdYgdYhdYhdYidWDdYjdKPcKJcKJdYkdYlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdOVdWHdYmdPBdPBdTtdPBdVZdQMdPBdYndQgdVZdVmdMYdPBdYodQhdOVdVhdMYdWPdOudOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdVndYpdWadWadWadWadWadWadWadWadWadWadWadYqdVndYrdYsdVndVnaaaaaaaaaaaaaaaaaaaabdWTdYtdYudYvdYwdYvdYxdYydWkdWkdYzdSPdYAdYBdYCdYDdVEdYEdYFdVGdYGdYHdYIdVJdYJdYKdYLdVMdYMdYNdYOdVMdYPdYQdWDdYRdYSdYTdYSdWDdYUdYVdLPaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdOVdWHdYmdPBdPBdTtdPBdVZdQMdPBdYndQgdVZdVmdMYdPBdYodQhdOVdVhdMYdWPdOudOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdVndYpdWadWadWadWadWadWadWadWadWadWadWadYqdVndYrdYsdVndVnaaaaaaaaaaaaaaaaaaaabdWTdYtdYudYvegZdYvdYxdYydWkdWkdYzdSPdYAdYBdYCdYDdVEdYEdYFdVGdYGdYHdYIdVJdYJdYKdYLdVMdYMdYNdYOdVMdYPdYQdWDdYRdYSdYTdYSdWDdYUdYVdLPaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdOVdWHdYWdRMdRjdOVdYXdOVdYYdYZdOVdROdOVdYYdYZdOVdRNdWPdOVdXDdTvdMYdUpdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdVndZadWadWadWadWadWadWadWadWadWadWadWadZbdYpdZcdYpdVnaaaaaaaaaaaaaaaaaaaaaaabdWTdZddYydYydZedZfdZgdYydZhdWkdZidSPdZjdZjdZjdZjdVEdZkdXkdVGdZldZmdZndVJdZodZpdZqdVMdZrdZsdZtdVMdZudZvdZwdWDdWDdWDdWDdZxdZydKLdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdOVdOVdOVdOVdOVdOVdYXdOVdZzdRldROdUpdQhdRNdVkdRNdTvdRMdOVdYYdZAdZBdZCdOVdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdVndYqdWadWadWadWadWadWadWadWadWadWadWadWadZDdZEdZFaaaaaaaaaaaaaaaaaaaaaaabaabdWTdZGdZGdZHdZIdZJdZKdZLdZMdWkdZNdSPdWadWadWadWadVEdZOdZPdVGdZQdZRdZSdVJdZTdZUdZVdVMdZWdZXdZYdVMdZZeaadZwdKLdLPdKLeabeaceaddKLdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdOVdYXdOVdRldUpeaedTsdNRdRMdRldOVdRNdQhdOVeafeageageahdOVdKNdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdVndVndWadWadWadWadWadWadWadWadWadWadWadWaeaieajeakaaaaaaaaaaaaaaaaaaaabaabaabdWTdWTealeamdWTdWTeaneaoeandWTeapdWadWadWadWadWadVEdVEdVEdVGdVGdVGdVGdVJdVJdVJdVJdVMdVMdVMdVMdVMdZwdZweaqeardKRdKReasdYVdKLdKLdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdOVdYXdOVdRldUpeaedTsdNRdRMdRldOVdRNdQhdOVeafeageageahdOVdKNdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdVndVndWadWadWadWadWadWadWadWadWadWadWadWaeaieajeakaaaaaaaaaaaaaaaaaaaabaabaabdWTdWTehgehjdWTdWTeaneaoeandWTeapdWadWadWadWadWadVEdVEdVEdVGdVGdVGdVGdVJdVJdVJdVJdVMdVMdVMdVMdVMdZwdZweaqeardKRdKReasdYVdKLdKLdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdOVdYXdOVdUpdOudTvdRldRNdQhdTvdOVdYXdOVdOVdUrdMYeageateaudKNdKNdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdVndVndWadWadWadWadWadWadWadWadWadWadWadWaeaveaweaxaaaaaaaaaaaaaaaaabeayeazeaAeaBeaCeaDeaEeaFdWTeaGeaHeaIdWTeapdWadWadWadWadWaeaJeaKeaLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLeaMeaNdYVeaOdKLdKLdKLdKLdKLdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdOVdYXdOVdOVdOVdOVdOVdOVdOVdOVdOVdYXdOVdUrdMYdUsdMYeaheaPdKNdKNdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdVndWadWadWadWadWadWadWadWadWadWadWadWadWaeaQeaReaSeaTeaTeaTeaTeaTeaTeaUeaVeaWeaXeaXeaYeaZebadWTebbebcebddWTeapdWadWadWadWadWaeaieawebedKLdKLdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLeaMeaNdYVebfdKNebfdKLdKLdKLdKLdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSaaaaaaaaaaaaaaadNSdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdOVdYXdYXdYXdYXeFreFidYXdYXdYXdYXdYXdOVdUrdUsdUsdUsdUtdOVdKNdKNdKNdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdVndWadWadWadWadWadWadWadWadWadWadWadWadWadWaebgebhebhebhebhebhebhebhebhebgdWadWadWadWadWadWadWTeanebieandWTebjdWadWadWadWadWaebkeblebmdKRdKRdKRdKRebndKRdKRdKRdKRdKReboebpebqebrdYVdKNdKNdKNebfdWbdKLdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -14375,32 +14369,32 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSebMebMebMebMeb aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdWadWaeaQeaWefyefyefyefyefyefyefyefzegsegudNSdNSdNSdNSdNSdNSdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPegvegvegvegvegvegvegvdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdKLdVndWadWadWadWaebJdZbdYpdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdWadWadWadWaegqegwegwegwegwegwegwegwegxegyegudNSdNSdNSdNSdNSdNSdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPegvegzegAegBegCegDegvdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdKLdVndVndWadWadWaebJdWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdVndWadWadWaeaQegEebuebuebuebuebuebuegFegsegGegHdNSdNSdNSdNSdNSdVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPegvegIegJegKegLegMegvdLPdLPdLPdLPdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdKLdKLdVndWadWadWaebJdWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMdNSebMebMebMdNSdNSdNSdNSdNSdNSdVndVndVndWadWadWadWadNSdNSdNSdNSdNSdNSegregsegudNSdNSdNSdWadWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdZjegNegOdLPegPegvegvegvegQegvegvegvdLPdLPdLPdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdVndWadWadWaebJdWadVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMdNSebMebMebMdNSdNSdNSdNSdNSdNSdVndVndVndWadWadWadWadNSdNSdNSdNSdNSdNSegregsegudNSdNSdNSdWadWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdZjegNegOdLPegPegvegvegvehkegvegvegvdLPdLPdLPdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdVndWadWadWaebJdWadVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdKLdKLdVndVndWadWadWadNSdNSdNSdNSdNSdNSdNSegregsegudNSdWadWadWadWadWadVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPegRegOegSdLPegPegTegUegPegVegPdVndVndKLdKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdVndVndWadWaebJdWadWadVndVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMdKLdKLdVndVndVndWadWadNSdNSdNSdNSdNSdNSdNSegWegsegudWadWadWadWadWadWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdZjdYpdKLegPegXegYegZehaegPdWadVndVndKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdVndWadWaebJdWadWadWadWadVndVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMdKLdKLdVndVndVndWadWadNSdNSdNSdNSdNSdNSdNSegWegsegudWadWadWadWadWadWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdZjdYpdKLegPegXegYehtehaegPdWadVndVndKLdKLdKLdKLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdVndWadWaebJdWadWadWadWadVndVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMdKLdKLdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSegoegqegodWadWadWadWadWadWadWadVndVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPehbdLPdKLegPegPegPegPehcegPdWadWadVndVndYpdVndVnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdVndVndWaebJdWadWadWadWadWadWadVndVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMdKLdKLdNSdNSdNSdNSdNSdNSdNSdNSdNSdWadWaegpdZjegpdWadWadWadWadWadWadWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPehddLPdLPegPegTeheegPehfehgdWadWadWadWaehhdWadVndVnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdYpdYpdYpdYpdYpdYpdVndWaebJdWadWadWadWadWadWadWadVndVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSebMebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdWadWadWadWadZjdZjdZjdZjehiehiehidWadWadWadVndKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPehddLPdLPegPegXegYehjegVehkdWadWadWadWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdYpehlehmehnehnehodWadWaebJdWadWadWadWadWadWadWadWadKNdVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSebMebMebMebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSebMebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdWadWadWadWadWadWadWadWaehpehqehrdWadWadWadVndKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdVndVndVndVndVndVndVndKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPegPehsegPegPegPegPegPegPegVehtdWadWadWadWadWadWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdYpehuehvehwehwehxdWaedcebzebAdWadWadWadWadWadWadWadKNdKNdVndKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSebMebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSebMebMebMebMebMebMdNSdNSdNSdNSdWadWaehyehyehyehyehyehyehzehAehBehyehyehyehyehydWadWadWadVndKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdVndVndWadWadWadWadWadVndVndVndVndVndKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPegPegPegPegPehCehDehEegPegTehFegPehGegPegPegPehHehIehJegPdWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdVndYpehKehLehMehMehNdWaebvebFebxdWadWadWadWadWadWadWadWadWadVndVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSebMebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSebMebMebMebMebMdNSdNSdVndWadWadWaehyehOehPehQehRehSehTehUehVehWehXehYehZeiaebAdWadWadVndVndVndVndKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdVndVndWadWadWadWadWadWadWadWadWadWadVndVndVndVndVndKLdKLdKLdKLdLPdLPdLPegPeibeiceideieeiceicegPegXegYeifegVegPeigeiheiieiieiiehgdWadWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaadVndVndVndWadWadWadWadWadWadWadWaeijeikeileimeikeikdWadWadWadWadWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMdNSdNSdKLdVndWadWadWaehyeineioeipeiqeioeireioeioeiseiteiuehZeiveiwdWadWadWadWadWadVndVndVndKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdVndVndYpdWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadVndVndKLdKLdKLdKLdKLdKLegPeixeiceiyeizeiAeiBegPegPegPegPegVegPeigeiCeiCeiCeiDehkdWadWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWadWadWadWadWadWadWadWadWadWaeijeiEeiFeiFeiGeikdWaeiHdWadWadWadZbdYpdVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdKLdVndWadWadWaehyeiIeioeioeiJeioeireiKeioeioeiLeiMeiNeiaebxdWadWadWadWadWadWadWadVndVndVndVndKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdVndVndWaehhdWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadVndVndVndVndKLdKLdKLegPeiOeiPeiQeiceiReiSeiTeiDeiUeiVeiWegPeiXeiCeiYeiZejaehtdWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWadWadWadWaejbejbejcejdeijejeejfejgejheikeikeikeikdWadWadWadWadVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdLPdLPdVndVndWadWaehyejieioejjejkejlejmejneioehyehyehyehyehyehyedcebAdWadWadWadWadWadWadWadWadVndVndVndKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdVndWadWadWadWadWadWadWadWadWadWadWaedcebAdWadWadWadWadWadWadWadWadWadVndVndKLdKLegPegPegPegPePuegPegPejoejpejqejoejpegPegPegPegPegPejregPegPejsejtdWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWaejuejdejvejwejxejyejzejAejAejBejCejDejEejFebAdWadWadWadYqdVndKLdKLdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdLPdLPdKLdVndWadWaehyejGejHejIeiqejJejKejLejMejNejOejPejQejRejSefhefieczeczeczeczeczebTdWadWadWadWadVndVndVndKLdKLdKLdKLdKLdLPdLPdLPdKLdKLdKLdKLdVndVndWadWaeffeczeczeczeczeczeczeczeczefhefieczeczeczeczebTdWadWadWadWadWadVndKLdKLdKLdKLdKLePuejTejUejVeiCejaejWeiDejaeiTejXejYejZeiDejaeiCekaekbekcehIehJekdekdekdekdekdekdekdekdekeekeekeekeekeekeekeejcekfekgekhejwekiekjekkeklejAejAekmeknekoekpekqekrdWadWadWadYqdVndKLdKLdLPdLPdLPdLPdLPdLPdKLdKLdKLdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdLPdLPdKLdVndWadWaehyehyehyehyehyeksektekuehyehyekvehyehyehyehyebvebxdWadWadWadWadWaebJdWadWadWadWadVndWadVndVndKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdVndVndWadWadWaebJdWadWadWadWadWadWadWadWaebvebxdWadWadWadWaebJdWadWadWadWadWadVndVndYpdVndVndKLegPegPegPegPeiCejaekwekxekyeiVekzekAekAekBekBekCekAekDekEekAekEekFekFekFekFekFekFekFekFekGekGekGekGekGekGekGekHekIekHekJekIekKekLekMekNekOekPekQejFekRekSejFebxdWadWadWadWadVndVndKLdKLdLPdLPdLPdLPdLPdKLdKLdKLdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdLPdLPdKLdVndVndWadWadWadWadWaehyekTekUekVekWehyekXekYdZjdWadWadWadWadWaebLdWadWadWaebSeczeczebTdWadWadWadWadVndKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdVndWadWaeffeczefgdWadWadWadWadVndWadWaebLdWadWadWadWadWadWaebJdWadWadWadWadWadWadWaehhdWadVndVndVndVndVnegPeiCekZelaelbelbelaelceldeleelbelbelfelaelgelhelieljelkelkelkelkelkelkelkelkellellellellellellelmelneloelpelqelrelselteluejbejbejbejbejbejbejbejbelvelwelxelwdZjdYqdVndKLdKLdLPdLPdLPdLPdKLdKLdKLdKLdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdKLdVndVndWadWadWadWaehyelyelzelAelBehydWadWadWadWadWadWadVndVndYpdVndWadWadWadWadWaebJdWadWadWadWadWadVndKLdKLdKLdKLdKLdVndVndVndVndVndWaeffefgdWadWadWadVndVndVndVndVndVndYpdWadWadWadWadWadWaebJdWadWadWadWadWadWadWadWadWadWadWadVndVnegPegPelCelDelCegPegPelEelFecmegPegPegPelHelCegPelIdWadWadWaaaaaaaaaaaaaaabaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaelJejdejwelKelLelMelNelOelOelPejbelQelRelSelTelTelUelTdZjdWadVndKLdKLdLPdLPdLPdLPdKLdKLdKLdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMdKLdKLdNSdNSdNSdNSdNSdNSdNSdNSdNSdWadWaegpdZjegpdWadWadWadWadWadWadWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPehddLPdLPegPegTeheegPehfehzdWadWadWadWaehhdWadVndVnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdKLdYpdYpdYpdYpdYpdYpdVndWaebJdWadWadWadWadWadWadWadVndVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSebMebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdWadWadWadWadZjdZjdZjdZjehiehiehidWadWadWadVndKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPehddLPdLPegPegXegYehAegVehBdWadWadWadWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdKLdYpehlehmehnehnehodWadWaebJdWadWadWadWadWadWadWadWadKNdVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSebMebMebMebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSebMebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdWadWadWadWadWadWadWadWaehpehqehrdWadWadWadVndKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdVndVndVndVndVndVndVndKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPegPehsegPegPegPegPegPegPegVehHdWadWadWadWadWadWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdKLdKLdYpehuehvehwehwehxdWaedcebzebAdWadWadWadWadWadWadWadKNdKNdVndKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSebMebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSebMebMebMebMebMebMdNSdNSdNSdNSdWadWaehyehyehyehyehyehyehJehIeifehyehyehyehyehydWadWadWadVndKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdVndVndWadWadWadWadWadVndVndVndVndVndKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPegPegPegPegPehCehDehEegPegTehFegPehGegPegPegPeiJeimeilegPdWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaadKLdKLdKLdVndYpehKehLehMehMehNdWaebvebFebxdWadWadWadWadWadWadWadWadWadVndVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSebMebMebMebMebMebMdNSdNSdNSdNSdNSdNSdNSebMebMebMebMebMdNSdNSdVndWadWadWaehyehOehPehQehRehSehTehUehVehWehXehYehZeiaebAdWadWadVndVndVndVndKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdVndVndWadWadWadWadWadWadWadWadWadWadVndVndVndVndVndKLdKLdKLdKLdLPdLPdLPegPeibeiceideieeiceicegPegXegYejcegVegPeigeiheiieiieiiehzdWadWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaadVndVndVndWadWadWadWadWadWadWadWaeijeikejqejdeikeikdWadWadWadWadWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSebMebMebMdNSdNSdKLdVndWadWadWaehyeineioeipeiqeioeireioeioeiseiteiuehZeiveiwdWadWadWadWadWadVndVndVndKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdVndVndYpdWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadVndVndKLdKLdKLdKLdKLdKLegPeixeiceiyeizeiAeiBegPegPegPegPegVegPeigeiCeiCeiCeiDehBdWadWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWadWadWadWadWadWadWadWadWadWaeijeiEeiFeiFeiGeikdWaeiHdWadWadWadZbdYpdVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSebMebMebMdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdKLdVndWadWadWaehyeiIeioeioejreioeireiKeioeioeiLeiMeiNeiaebxdWadWadWadWadWadWadWadVndVndVndVndKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdVndVndWaehhdWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadVndVndVndVndKLdKLdKLegPeiOeiPeiQeiceiReiSeiTeiDeiUeiVeiWegPeiXeiCeiYeiZejaehHdWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWadWadWadWaejbejbejtejseijejeejfejgejheikeikeikeikdWadWadWadWadVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdLPdLPdVndVndWadWaehyejieioejjejkejlejmejneioehyehyehyehyehyehyedcebAdWadWadWadWadWadWadWadWadVndVndVndKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdVndWadWadWadWadWadWadWadWadWadWadWaedcebAdWadWadWadWadWadWadWadWadWadVndVndKLdKLegPegPegPegPePuegPegPejoejpejuejoejpegPegPegPegPegPejSegPegPekcejVdWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWaekfejsejvejwejxejyejzejAejAejBejCejDejEejFebAdWadWadWadYqdVndKLdKLdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdNSdLPdLPdKLdVndWadWaehyejGejHejIeiqejJejKejLejMejNejOejPejQejRekgefhefieczeczeczeczeczebTdWadWadWadWadVndVndVndKLdKLdKLdKLdKLdLPdLPdLPdKLdKLdKLdKLdVndVndWadWaeffeczeczeczeczeczeczeczeczefhefieczeczeczeczebTdWadWadWadWadWadVndKLdKLdKLdKLdKLePuejTejUekkeiCejaejWeiDejaeiTejXejYejZeiDejaeiCekaekbekueimeilekdekdekdekdekdekdekdekdekeekeekeekeekeekeekeejtekHekEekhejwekiekjelheklejAejAekmeknekoekpekqekrdWadWadWadYqdVndKLdKLdLPdLPdLPdLPdLPdLPdKLdKLdKLdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdNSdNSdLPdLPdKLdVndWadWaehyehyehyehyehyeksekteliehyehyekvehyehyehyehyebvebxdWadWadWadWadWaebJdWadWadWadWadVndWadVndVndKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdVndVndWadWadWaebJdWadWadWadWadWadWadWadWaebvebxdWadWadWadWaebJdWadWadWadWadWadVndVndYpdVndVndKLegPegPegPegPeiCejaekwekxekyeiVekzekAekAekBekBekCekAekDeljekAeljekFekFekFekFekFekFekFekFekGekGekGekGekGekGekGelnekIelnekJekIekKekLekMekNekOekPekQejFekRekSejFebxdWadWadWadWadVndVndKLdKLdLPdLPdLPdLPdLPdKLdKLdKLdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNSdNSdLPdLPdKLdVndVndWadWadWadWadWaehyekTekUekVekWehyekXekYdZjdWadWadWadWadWaebLdWadWadWaebSeczeczebTdWadWadWadWadVndKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdVndWadWaeffeczefgdWadWadWadWadVndWadWaebLdWadWadWadWadWadWaebJdWadWadWadWadWadWadWaehhdWadVndVndVndVndVnegPeiCekZelaelbelbelaelceldeleelbelbelfelaelgeloelDelpelkelkelkelkelkelkelkelkellellellellellellelmelJelIelFelqelrelselteluejbejbejbejbejbejbejbejbelvelwelxelwdZjdYqdVndKLdKLdLPdLPdLPdLPdKLdKLdKLdKLdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdKLdVndVndWadWadWadWaehyelyelzelAelBehydWadWadWadWadWadWadVndVndYpdVndWadWadWadWadWaebJdWadWadWadWadWadVndKLdKLdKLdKLdKLdVndVndVndVndVndWaeffefgdWadWadWadVndVndVndVndVndVndYpdWadWadWadWadWadWaebJdWadWadWadWadWadWadWadWadWadWadWadVndVnegPegPelCemRelCegPegPelEemSecmegPegPegPelHelCegPenodWadWadWaaaaaaaaaaaaaaabaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaeqBejsejwelKelLelMelNelOelOelPejbelQelRelSelTelTelUelTdZjdWadVndKLdKLdLPdLPdLPdLPdKLdKLdKLdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdKLdVndVndWadWadWaehyehyehyehyehyehydWadWadVndVndVndVndVndKLdKLdVndVndWadWadWadWaebJdWadWadWadWadWadWadVndVndVndVndVndVndWadWadWadWadWaebJdWadWadVndVndVndKLdKLdKLdKLdKLdVndWadWadWadWadWadWaebJdWadWadWaedcebAdWadWadWadWadWadWadWadVnegPelVelWelXelYegPelZemaembemcemdegPegPemeemfegPdWadWadWadWadWadWaaaaaaaaabaaaaaaaaaaabaabaabaabaabaabaabaabaabejbemgemhekLejbejbejbejbemiejbemjejbejbdZjdZjemkdZjdZjdWadVndKLdKLdLPdLPdLPdKLdKLdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdKLdKLdVndWadWadWadWadWadWadWadWadWadWadWadVndKLdKLdKLdKLdKLdKLdKLdVndVndWadWadWaebSeczeczeczebTdWadWadWadWadWadWadWadWadWadWadWadWadWaebJdWadVndVndKLdKLdKLdKLdKLdKLdKLdVndVndWadWadWadWadWaebSeczeczeczefhefieczeczeczebTdWadWadWadWaegPemlemmemnemoegPempemqemqemremsegPegPemtemuegPdWadWadWadWadWadWaaabaabaabaabaabaabaabemvemvemvemvemvaabaaaaaaejbemwemxekLemyemzemAelOelOemBelOelPejbdWadWaemCdWadWadVndVndKLdKLdLPdLPdKLdKLdKLdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdKLdVndWadWadWadWadWadWadWadWadWadVndVndVndKLdKLdKLdKLdKLdKLdKLdKLdVndVndVndWadWadWadWadWaebSebTdWadWaedcebAdWadWaeffeczeczeczeczeczefgdWadVndKLdKLdKLdKLdLPdLPdLPdKLdKLdVndVndVndWadWadWadWadWadWadWaebvebxdWadWadWaebJdWadWadWadWaegPegPegPegPegPegPemDemEemFemGemsegPegPemHelCegPdWadWadWadWadWadWaaaaaaaaabaaaaaaaaaaabemvemvemvemvemvaabaaaejuejdemIemJemKejbejbejbejbejbejbemLemMejbdWadWadWadWadWadVndKLdKLdLPdLPdLPdKLdKLdKLdKLdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdVndVndVndVndWadWadWadWadVndVndVndKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdVndVndVndWaebLdWadWaebSeczeczefhefieczeczefgdWadWadWadWadWadWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdKLdKLdKLdVndVndVndVndWadWadWadWadWadWadWadWadWaebSeczeczebTdWadWadWadWadWadWaegPegPegPegPegPegPegPemNemOemPemQdWadWadWadWadWaaaaaaaaaaaabaaaaaaaaaaabemvemvemvemvemvemRekfemSemTeHiemUekLemVemWemXemYemZenaenbemMejbdWadWadWadWadVndVndKLdKLdLPdLPdKLdKLdKLdKLdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdKLdVndWadWadWadWadWadWadWadWadWadVndVndVndKLdKLdKLdKLdKLdKLdKLdKLdVndVndVndWadWadWadWadWaebSebTdWadWaedcebAdWadWaeffeczeczeczeczeczefgdWadVndKLdKLdKLdKLdLPdLPdLPdKLdKLdVndVndVndWadWadWadWadWadWadWaebvebxdWadWadWaebJdWadWadWadWaegPegPegPegPegPegPemDemEemFemGemsegPegPemHelCegPdWadWadWadWadWadWaaaaaaaaabaaaaaaaaaaabemvemvemvemvemvaabaaaekfejsemIemJemKejbejbejbejbejbejbemLemMejbdWadWadWadWadWadVndKLdKLdLPdLPdLPdKLdKLdKLdKLdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdVndVndVndVndWadWadWadWadVndVndVndKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdVndVndVndWaebLdWadWaebSeczeczefhefieczeczefgdWadWadWadWadWadWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdKLdKLdKLdVndVndVndVndWadWadWadWadWadWadWadWadWaebSeczeczebTdWadWadWadWadWadWaegPegPegPegPegPegPegPemNemOemPemQdWadWadWadWadWaaaaaaaaaaaabaaaaaaaaaaabemvemvemvemvemveyKekHeqHemTeHiemUekLemVemWemXemYemZenaenbemMejbdWadWadWadWadVndVndKLdKLdLPdLPdKLdKLdKLdKLdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdKLdVndVndVndVndVndVndKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdKLdKLdKLdKLdKLdVndVndYpdVndWadWadWadWaebvebxdWadWadWadWaebLdWadVndVndVndVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdVndVndVndVndVndVndVndVndWadWadWadWadWaebJdWadWadWadWadWadWadWadWaebvencendendendendeneebxdWadWadWadWadWadWaaabaabaabaabaabaabaabaabemvemvemvemvemvenfengenheniejwemUekLejwejwenjejwenkenlenmennejbdWadWadWadWadVndKLdKLdKLdLPdLPdKLdKLdKLdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdVndVndWadWadWadWadWadWadWadWadWadYpdVndVndKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdVndVndWadWadWadWaebJdWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaabemvemvemvemvemvejcekfenoenpejwemUenqelrelrenrelrelrensentenuejbdWadWadWaecJdYpdKLdKLdKLdLPdKLdKLdKLdKLdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdKLdLPdLPdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdVndVndVndWadWadWadVndVndVndVndVndKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdVndWadWadWadWaebSeczeczeczeczeczeczeczeczeczeczeczeczeczeczeczeczeczebTdWadWadWadWadWadWaaaaaaaaaaaaaaaaaabemvemvemvemvemvenvaaaelJejdenwemUekLejwejwenxenyejwejwemLenzejbdWadWadWadWadVndKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdVndVndWadWadWadWadWadWadWadWadWadYpdVndVndKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdVndVndWadWadWadWaebJdWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWaaaaaaaaaaaaaaaaaaaaabemvemvemvemvemvejtekHeyNenpejwemUenqelrelrenrelrelrensentenuejbdWadWadWaecJdYpdKLdKLdKLdLPdKLdKLdKLdKLdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdKLdLPdLPdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdVndVndVndWadWadWadVndVndVndVndVndKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdVndWadWadWadWaebSeczeczeczeczeczeczeczeczeczeczeczeczeczeczeczeczeczebTdWadWadWadWadWadWaaaaaaaaaaaaaaaaaabemvemvemvemvemvenvaaaeqBejsenwemUekLejwejwenxenyejwejwemLenzejbdWadWadWadWadVndKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdVndVndVndVndVndKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdVndVndVndWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWaebJdWaedcebAdWadWadWaeaLeaLaaaaaaaaaaabemvemvemvemvemvaabaaaaaaenAenAemUenBelrenCenDenEenFenGenmemMejbdWadWadWadWadVndKLdKLdKLdKLdLPdKLdKLdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdVndVndVndWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWadWaebSeczefhefieczeczeczenHenIenJenJenJenJenJenJenJenJenJenJenJenJenKenLenMejwejwejwenNenOenPenQenRenSejbdWadWadVndVndVndKLdKLdLPdLPdLPdKLdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdVndVndVndWadWadWadWadWadWadWadVndVndWadWadWadWadWadWadWadWadWaebvebxdWadWadWaeaLeaLaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaenAenAejbejcejdejbejbejbejbejbejbejbejbdWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdVndVndVndWadWadWadWadWadWadWadVndVndWadWadWadWadWadWadWadWadWaebvebxdWadWadWaeaLeaLaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaenAenAejbejtejsejbejbejbejbejbejbejbejbdWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdVndVndVndVndVndVndVndVndVndVndYpefedWadWadWadWadWadWadWadWadWadWadWadWadWadWaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWadWadWadWadWadWadWadWadWadWadWadWadWadVndKLdKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdVndWadWadWadWadWadWadWadWadWadWadWadWadWaebLdWadWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWadWadWadWadWadWadWadWadWadWadWadWadVndVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdLPdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdKLdVndWadWadWadWadWadWadWadWadWadWadWadWadVndYpdVndVnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadWadWadWadWadWadWadWadWadWadWadZbdYpdVndKLdKLdLPdLPdLPdLPdLPdLPdLPdLPdLPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -14537,9 +14531,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeqgeqjeqjeqkeqleHjeqmeqgeqneqjeqjeqgeqjeqjeqgaaaaaaepAepIepCaaaepAepIepCaaadyqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeqgeqjeqjeqoeqpeqpeqqeqreqseqjeqjeqgeqgeqieqgaaaaaaepAeqtepCaaaepAeqtepCaaadyqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeqgeqjeqjeqneqjeqjequeqgeqveqjeqweqgeqjeqjeqgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadyqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaabaacaacaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeqgeqxeqxeqyeqzeqAeqgeqgeqjeqjeqveqgeqgeqBeqgaaadyqdyqdyqdyqdyqdyqdyqdyqdyqdyqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaabaacaacaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeqgeqxeqxeqyeqzeqAeqgeqgeqjeqjeqveqgeqgeBseqgaaadyqdyqdyqdyqdyqdyqdyqdyqdyqdyqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaaiaaaaaaaabaacaacaaceqCaabaabaabaaaaaiaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeqgeqjeqjeqneqjeqjeqgeqgeqveqjeqjeqjeqjeqjeqgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaieqDaabaabeqDaacaacaacaacaaceqDaabaabeqDaaiaabaabaabaaaaaaaaaaaaaaaaaaaaaeqEeqEaaiaaiaaieqgeqFeqjeqGeqjeqjeqHeqIeqjeqjeqjeqjeqjeqjeqgdyqdyqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaieqDaabaabeqDaacaacaacaacaaceqDaabaabeqDaaiaabaabaabaaaaaaaaaaaaaaaaaaaaaeqEeqEaaiaaiaaieqgeqFeqjeqGeqjeqjeBweqIeqjeqjeqjeqjeqjeqjeqgdyqdyqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabeqJeqJeqJeqJaaceqCaacaacaaceqJeqJeqJeqJaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaeqEaaiaaieqgeqKeqLeqMeqKeqKeqgeqgeqgeqgeqgeqgeqgeqgeqgeqNdyqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeqJeqJeqJeqJeqOeqJeqPeqJeqQeqReqSeqJeqJeqJeqJeqJeqJaabaabaaaaaaaaaaaaaaaeqEaaaaaaaaaaaiaaiaaieqgeqjeqjeqneqjeqjeqTeqUeqVeqWeqXeqYeqZeqWeraerbdyqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeqJeqJeqJercerdereerferceqRergergerhergercereerceqJeqJeqJaabaaaaaaaaaaaaaaaaaaaaaeqEaaaaaaaaaaaaeqgeqFeqjeqGeqjeqjeqTerierierjerierierierierkerldyqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -14596,8 +14590,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabeyieyceyceyceyjeyceyceyceyceyceyceykeyleymeyneyoeypeyqeyreyceyceyceyceyceyceyceyceyceyceyceyseyteyueyieyceycexZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeyieyieyieyceyceyceyceyceyceyceyceyveyweyxeyyeyzeyAeyBeyCeyceyceyceyceyceyceyceyceyceyceyceyaeyceyceyceyceycexZaaaaaaaaaaaaaaaexXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabeyDeyEeyFeyFeyFexLeyFeyFeyFeyFeyFexLeyFeyFeyFeyFeyFexLeyFeyFeyFeyFeyFexLeyFeyFeyFeyFexLeyaeyieyieyceyceyceyGcLVcLVcLVaaaaaaaaaevhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdyqdyqdyqdyqdyqdyqdyqdyqdyqdyqaaqdyqdyqdyqdyqdyqeryeryerydyqdyqdyqaaidyqdyqdyqdyqeyHeyIeyHeyieyceyceyieyJeyKeyLeyMeyiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaeyHeyNeyHeyOeyOexNeyPexNeyPexNcMpcMpcMpaaaaaaaaaexXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdyqdyqdyqdyqdyqdyqdyqdyqdyqdyqaaqdyqdyqdyqdyqdyqeryeryerydyqdyqdyqaaidyqdyqdyqdyqeyHeyIeyHeyieyceyceyieyJeBHeyLeyMeyiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiaaaaaaaaaaaaeyHeBLeyHeyOeyOexNeyPexNeyPexNcMpcMpcMpaaaaaaaaaexXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeoMaacaaceyHeyQeyReySeyHeyTeyTexNeyUexNeyUexNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaceyHeyVeyHeyWeyXeyYeyYexNeyUexNeyUexNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaacaaceyHeyZezaeyWeyYezbeyYexNeyUexNeyUexNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -14863,31 +14857,31 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadvVeATeAUeAVdvVeAWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadvVeAUeAUeAXdCadAdeBaeAZeAYdCadCaelGdDYdCgdCgdCgeBbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeCkeCjeCjeBleBceBceBceBceAReBdeARdCaeBeeBfeBgeBheBidCaeBjeBkeBkeBkeBkeClaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeCmeBCeBneBoeBpeBqeBreBseBteBueBveBweBxeByeBzeBgczBdCaeBBeBkeBkeBkeBkeClaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeCmeSPeBDeBEeBFeBGeBGeBHeBIeBJeBKeBLeBMeBNeBOeBPeBQeBReBSeBkeBkeBkeBkeClaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeCmeBTeBUeBVeBWeBXeBYeBZeCaeCbeCceCdeCeeCfeCgeBgeChdCaeCieBkeBkeBkeBkeDlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeCmeBCeBneBoeBpeBqeBreBZeBteBueBveBReBxeByeBzeBgczBdCaeBBeBkeBkeBkeBkeClaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeCmeSPeBDeBEeBFeBGeBGeDGeBIeBJeBKeCdeBMeBNeBOeBPeBQeEHeBSeBkeBkeBkeBkeClaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeCmeBTeBUeBVeBWeBXeBYeFfeCaeCbeCceFbeCeeCfeCgeBgeChdCaeCieBkeBkeBkeBkeDlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeDCeDteDteDseBceBceBceBceCneCoeCpdCaeCqeCreCseCteCudCaeBkeCveCweCxeBkelGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadvVeCneCoeCydCadCaeBaeAZeAYdCadCaelGdDYdCgeDNelGelGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeEeeEdeEdeEdeEdeDWeEzeEzeEzeCneCzeCAeDdeCBeCCeCCeCCeCCeCDeCCeCCeCCeCEeCFeDdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeFoeCGeCGeCGeCGeCHeCIeCJeEzeCKeCLeCMeDdeCCeCNeCNeCOeCOeCCeCPeCQeCReCSeCTeFpeCVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeFoeCGeCGeCGeCGeCGeCGeCWeEzeCneCoeCXeDdeCYeCNeCNeCOeCOeCCeCZeDaeDbeDceCCeFqaaaeDdeDdeDdeDdeDdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeFoeCGeCHeDeeCHeDfeDgeDgeDgeDieDjeDkeFQeDmeDneDneDneDneDoeCPeDpeDbeDqeDreGseGreDueDveDweDxeDdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeFoeCGeCHeDeeCHeDfeDgeDgeGteDieDjeDkeFQeDmeDneDneDneDneDoeCPeDpeDbeDqeDreGseGreDueDveDweDxeDdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeFoeCGeDyeDeeCHeDzeDAeDBeGveDDeDEeDFeGueDHeCCeDIeCUeDKeCCeCCeCCeDLeCCeDMeGWaaaeDOeDPeDQeDxeDRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeFoeCGeCGeCGeCGeCGeCGeDSeEzeDTeDUeDVeHgeDXeDYeDYeDYeDYeDZeCQeCPeEaeDJeEceHEeHDeEfeEgeEheDxeDdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeFoeCGeCGeCGeCGeCGeEieEjeHHeBteEkeEleDdeEmeEneEoeEpeEpeCCeEqeDKeEreDreEseFqaaaeDdeDdeDdeDdeDdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHKeHJeHJeHJeHJeHIeEzeEzeEzeEteEueEveDdeEweEneEoeEpeEpeCCeDpeCPeAieDreEyeHLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadvVeEAeCoeEBeDdeCCeECeCCeCCeCCeCCeCCeCCeCCeECeCCeDdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHOeHNeHNeHMdvVdvVdvVdvVeDTeEDeEBeDdeDdeDdeDdeDdeHReHQeHQeHQeHPeDdeDdeDdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHSeEEeEEeEEeDTeDTeDTeEFeDTeCzeDVeEGeBIeEHeEIeEJeEKeEKeELeEMeENeEOeEPeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHSeEEeEQeEReBIeBIeBIeBIeBIeESeETeEUeEUeDGeEVeEWeEVeEVeEVeEVeEXeEYeEZeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHSeEEeEEeFaeFbeDheDheDheFceFdeFeeDheDheFfeFgeFheEbeFjeEbeFkeFleFmeFneHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHXeHWeHWeHVeHUeHUeHUeHUeIaeHZeHYeHUeHUeHUeHUeExeFseFteEbeFueFveFweFxeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHSeEEeEEeEEeDTeDTeDTeEFeDTeCzeDVeEGeBIeHYeEIeEJeEKeEKeELeEMeENeEOeEPeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHSeEEeEQeEReBIeBIeBIeBIeBIeESeETeEUeEUeHZeEVeEWeEVeEVeEVeEVeEXeEYeEZeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHSeEEeEEeFaeDheDheDheDheFceFdeFeeDheDheHYeFgeFheEbeFjeEbeFkeFleFmeFneHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHXeHWeHWeHVeHUeHUeHUeHUeIeeIdeIaeHUeHUeHUeHUeExeFseFteEbeFueFveFweFxeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHUeFyeFzeFAeFBeFCeFDeFEeFFeFGeHUeFmeFHeFmeFIeFmeFveFmeFmeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHUeFJeFzeFKeFLeFMeFNeFOeFzeFPeHUeHTeIbeHTeHTeHTeIbeHTeHTeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHUeFReFzeFSeFTeFUeFVeFWeFzeFXeHUeFYeFZeFYeHTeFYeFZeFYeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHUeGaeGbeGceGdeGeeGfeGceGbeGgeHUeFYeGheFYeHTeFYeGieFYeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeHUeGjeGkeGleGleGmeGneGoeGpeGqeHUeFYeFYeFYeHTeFYeFYeFYeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeIceIceIceIceIfeIeeHUeHUeGteHUeHUeIdeIgeHUeIceIceIceHTeHTeHTeHTeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeIceIceIceIceLzeLieHUeHUeIgeHUeHUeIfeLAeHUeIceIceIceHTeHTeHTeHTeHTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeIceGweGxeGyeGzeGAeHUeGBeGCeGDeHUeGEeGFeGGeGHeGIeIcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeIceGJeGKeGKeGKeGKeHUeGLeGMeGNeHUeGOeGPeGPeGPeGPeIcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeIceGQeGReGSeGReGKeHUeGNeGTeGNeHUeGPeGPeGUeGPeGVeIcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/paradise.dme b/paradise.dme index ba458be8dd2..1ee4f4c642c 100644 --- a/paradise.dme +++ b/paradise.dme @@ -135,6 +135,7 @@ #include "code\datums\computerfiles.dm" #include "code\datums\datacore.dm" #include "code\datums\datumvars.dm" +#include "code\datums\gas_mixture.dm" #include "code\datums\martial.dm" #include "code\datums\medical_effects.dm" #include "code\datums\mind.dm" @@ -817,6 +818,9 @@ #include "code\game\verbs\who.dm" #include "code\js\byjax.dm" #include "code\js\menus.dm" +#include "code\LINDA\LINDA_fire.dm" +#include "code\LINDA\LINDA_system.dm" +#include "code\LINDA\LINDA_turf_tile.dm" #include "code\modules\admin\admin.dm" #include "code\modules\admin\admin_investigate.dm" #include "code\modules\admin\admin_memo.dm" @@ -914,6 +918,7 @@ #include "code\modules\clothing\gloves\boxing.dm" #include "code\modules\clothing\gloves\color.dm" #include "code\modules\clothing\gloves\miscellaneous.dm" +#include "code\modules\clothing\gloves\rings.dm" #include "code\modules\clothing\head\collectable.dm" #include "code\modules\clothing\head\hardhat.dm" #include "code\modules\clothing\head\helmet.dm" @@ -1579,11 +1584,6 @@ #include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_dnaswitch.dm" #include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_emp.dm" #include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_forcefield.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gasco2.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gasnitro.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gasoxy.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gasplasma.dm" -#include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_gassleeping.dm" #include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_goodfeeling.dm" #include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_heal.dm" #include "code\modules\research\xenoarchaeology\artifact\effects\unknown_effect_heat.dm" @@ -1697,21 +1697,6 @@ #include "code\modules\virus2\helpers.dm" #include "code\modules\virus2\isolator.dm" #include "code\modules\virus2\items_devices.dm" -#include "code\ZAS\_docs.dm" -#include "code\ZAS\_gas_mixture.dm" -#include "code\ZAS\Airflow.dm" -#include "code\ZAS\Atom.dm" -#include "code\ZAS\Connection.dm" -#include "code\ZAS\ConnectionGroup.dm" -#include "code\ZAS\ConnectionManager.dm" -#include "code\ZAS\Controller.dm" -#include "code\ZAS\Debug.dm" -#include "code\ZAS\Diagnostic.dm" -#include "code\ZAS\Fire.dm" -#include "code\ZAS\Plasma.dm" -#include "code\ZAS\Turf.dm" -#include "code\ZAS\Variable Settings.dm" -#include "code\ZAS\Zone.dm" #include "interface\interface.dm" #include "interface\skin.dmf" #include "maps\cyberiad.dmm" diff --git a/sound/music/THUNDERDOME.ogg b/sound/music/THUNDERDOME.ogg new file mode 100644 index 00000000000..0a36b251b79 Binary files /dev/null and b/sound/music/THUNDERDOME.ogg differ diff --git a/sound/serversound_list.txt b/sound/serversound_list.txt index bb7e5f2950a..007ece25ae7 100644 --- a/sound/serversound_list.txt +++ b/sound/serversound_list.txt @@ -1,5 +1,6 @@ sound/music/b12_combined_start.ogg sound/music/main.ogg +sound/music/THUNDERDOME.ogg sound/music/space.ogg sound/music/title1.ogg sound/music/title2.ogg