diff --git a/README.md b/README.md index 2b54e78..d10449b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ # Pre Open-SS13 Host Files and Source -SS13 host files and source from before Open SS13. These are the oldest available versions of SS13 that I could find, and it took me a hell of a lot of digging, so I'm posting them here in the hope that anyone with an interest in the history of SS13 can check this stuff out without having to dig through forum archives or the wayback machine. +SS13 host files and source from before Open SS13. These are the oldest available versions of SS13 that I could find, and it took me a hell of a lot of digging, so I'm posting them here in the hope that anyone with an interest in the history of SS13 can check this stuff out without having to dig through forum archives or the wayback machine. Credit goes to the original SS13 devs, and Hobnob for doing the work on this, decompiling the source and making it available, even after all these years. Think of this repo as an educational resource for anyone interested in the early history of SS13. -There's 5 things here, each is explained in their respective readmes. Enjoy! +There's 5 things here, each is explained in their respective readmes. Check this reddit thread out for more details: http://www.reddit.com/r/SS13/comments/2vrcap/a_look_into_the_early_history_of_ss13/ +Have anything else from this period? Set up a pull request and I'd be glad to merge it. + +Enjoy! diff --git a/SS13_map_files_src/README.md b/SS13_map_files_src/README.md new file mode 100644 index 0000000..5e11e92 --- /dev/null +++ b/SS13_map_files_src/README.md @@ -0,0 +1 @@ +Map files dating from around 2006/2007. You can't host the game with these, but you can view and edit the map as it was back then. \ No newline at end of file diff --git a/SS13_map_files_src/SS13_map_files/Icons/Cryogenic2.dmi b/SS13_map_files_src/SS13_map_files/Icons/Cryogenic2.dmi new file mode 100644 index 0000000..10d989a Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/Cryogenic2.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/Door1.dmi b/SS13_map_files_src/SS13_map_files/Icons/Door1.dmi new file mode 100644 index 0000000..319a1e3 Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/Door1.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/Doorf.dmi b/SS13_map_files_src/SS13_map_files/Icons/Doorf.dmi new file mode 100644 index 0000000..9bac2b4 Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/Doorf.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/Icons.dmi b/SS13_map_files_src/SS13_map_files/Icons/Icons.dmi new file mode 100644 index 0000000..f093bd6 Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/Icons.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/aircontrol.dmi b/SS13_map_files_src/SS13_map_files/Icons/aircontrol.dmi new file mode 100644 index 0000000..11bea3f Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/aircontrol.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/airtunnel.dmi b/SS13_map_files_src/SS13_map_files/Icons/airtunnel.dmi new file mode 100644 index 0000000..c6f96d4 Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/airtunnel.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/airtunnelcomputer.dmi b/SS13_map_files_src/SS13_map_files/Icons/airtunnelcomputer.dmi new file mode 100644 index 0000000..383e6ce Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/airtunnelcomputer.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/ammo.dmi b/SS13_map_files_src/SS13_map_files/Icons/ammo.dmi new file mode 100644 index 0000000..f8e70c8 Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/ammo.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/canister.dmi b/SS13_map_files_src/SS13_map_files/Icons/canister.dmi new file mode 100644 index 0000000..2346c2b Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/canister.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/doors.dmi b/SS13_map_files_src/SS13_map_files/Icons/doors.dmi new file mode 100644 index 0000000..6266003 Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/doors.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/engine.dmi b/SS13_map_files_src/SS13_map_files/Icons/engine.dmi new file mode 100644 index 0000000..aa3ca0f Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/engine.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/enginecomputer.dmi b/SS13_map_files_src/SS13_map_files/Icons/enginecomputer.dmi new file mode 100644 index 0000000..bef0693 Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/enginecomputer.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/escapepod.dmi b/SS13_map_files_src/SS13_map_files/Icons/escapepod.dmi new file mode 100644 index 0000000..9e76c44 Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/escapepod.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/hi_pipe.dmi b/SS13_map_files_src/SS13_map_files/Icons/hi_pipe.dmi new file mode 100644 index 0000000..77fb29e Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/hi_pipe.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/human.dmi b/SS13_map_files_src/SS13_map_files/Icons/human.dmi new file mode 100644 index 0000000..1c03266 Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/human.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/items.dmi b/SS13_map_files_src/SS13_map_files/Icons/items.dmi new file mode 100644 index 0000000..61af7bb Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/items.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/monkey.dmi b/SS13_map_files_src/SS13_map_files/Icons/monkey.dmi new file mode 100644 index 0000000..74c1f6c Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/monkey.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/pipes.dmi b/SS13_map_files_src/SS13_map_files/Icons/pipes.dmi new file mode 100644 index 0000000..b61dd6b Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/pipes.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/screen1.dmi b/SS13_map_files_src/SS13_map_files/Icons/screen1.dmi new file mode 100644 index 0000000..68343bb Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/screen1.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/security.dmi b/SS13_map_files_src/SS13_map_files/Icons/security.dmi new file mode 100644 index 0000000..acea1c9 Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/security.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/shards.dmi b/SS13_map_files_src/SS13_map_files/Icons/shards.dmi new file mode 100644 index 0000000..fa5140b Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/shards.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/shuttle.dmi b/SS13_map_files_src/SS13_map_files/Icons/shuttle.dmi new file mode 100644 index 0000000..eb09b97 Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/shuttle.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/stationobjs.dmi b/SS13_map_files_src/SS13_map_files/Icons/stationobjs.dmi new file mode 100644 index 0000000..765455f Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/stationobjs.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/table.dmi b/SS13_map_files_src/SS13_map_files/Icons/table.dmi new file mode 100644 index 0000000..b3d2952 Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/table.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/turfs.dmi b/SS13_map_files_src/SS13_map_files/Icons/turfs.dmi new file mode 100644 index 0000000..6cbe1d0 Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/turfs.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/turfs2.dmi b/SS13_map_files_src/SS13_map_files/Icons/turfs2.dmi new file mode 100644 index 0000000..5b89f02 Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/turfs2.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/wall.dmi b/SS13_map_files_src/SS13_map_files/Icons/wall.dmi new file mode 100644 index 0000000..7f7c4f5 Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/wall.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/weap_sat.dmi b/SS13_map_files_src/SS13_map_files/Icons/weap_sat.dmi new file mode 100644 index 0000000..411149c Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/weap_sat.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/windoor.dmi b/SS13_map_files_src/SS13_map_files/Icons/windoor.dmi new file mode 100644 index 0000000..c2dbad8 Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/windoor.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/Icons/wire.dmi b/SS13_map_files_src/SS13_map_files/Icons/wire.dmi new file mode 100644 index 0000000..5a50db6 Binary files /dev/null and b/SS13_map_files_src/SS13_map_files/Icons/wire.dmi differ diff --git a/SS13_map_files_src/SS13_map_files/SS13_map_files.dm b/SS13_map_files_src/SS13_map_files/SS13_map_files.dm new file mode 100644 index 0000000..985c7fc --- /dev/null +++ b/SS13_map_files_src/SS13_map_files/SS13_map_files.dm @@ -0,0 +1,1056 @@ +/* +SS13 Map Making Files v. 1 +Applicable up to SS13 version + +Disclaimer: +By using the files you automatically agree: +A. Not to use the icons in any way except for the SS13 map making tools +B. Not distribute the files to anyone. +C. To agree automatically to any changes in this contract. + +Instructions: +Basically what you have here is the stripped down SS13 files. +Your main file is main.dmp + NEVER DELETE THIS! + THIS IS the SS13 map in its entirety. + You may wish to uncheck it though + however, you probably will never need to compile. +Also look at areas.dm as it has a few mroe instructions on dealing with areas. + +To use these files jsut create a enw map file. You can adjust the dimensions to anything! +However for now try to keep the z levels the same. +As in so that the prison station is on its current level and so is SS13 as well as CC. + All the other sats can be moved, deleted, etc. You can even add some. + +Once you are done adding everything, send me ONLY the *.dmp and the areas.dm file. + +Post on general under new map + if you need access to any more variables to customize the map. +*/ + +//Don't touch +#define AVER_OXY 756000 //cubic meters +#define AVER_PLAS 0 +#define AVER_NO2 0 +#define AVER_N2 2844000 //cubic meters +#define AVER_CO2 0 +/turf + var + oxygen = AVER_OXY + poison = AVER_PLAS//plasma + co2 = AVER_CO2 + sl_gas = AVER_NO2 + n2 = AVER_N2 +/turf/space + icon = 'turfs.dmi' + icon_state = "space" +/turf/station/r_wall + icon = 'wall.dmi' + icon_state = "r_wall" +/turf/station/wall + icon = 'wall.dmi' + icon_state = "" +/turf/station/floor/plasma_test +//This was used for beta-testing fire effects +//Igniter+THIS=Instant incinerator until the floor burns away that is +//Don't place this on SS13... use a custom designed floor instead + icon = 'Icons.dmi' + icon_state = "Floor" +/turf/station/floor + icon = 'Icons.dmi' + icon_state = "Floor" +/turf/station/floor/grid + icon = 'weap_sat.dmi' + icon_state = "grid" +/turf/station/engine/floor + icon = 'engine.dmi' + icon_state = "floor" +/turf/station/engine + icon = 'engine.dmi' + icon_state = "" +/turf/station/command/floor/other + icon = 'Icons.dmi' + icon_state = "Floor" +/turf/station/command/floor + icon = 'Icons.dmi' + icon_state = "Floor3" +/turf/station/command/wall/other + icon = 'wall.dmi' + icon_state = "r_wall" +/turf/station/command/wall + icon = 'wall.dmi' + icon_state = "CCWall" +/turf/station/shuttle/wall + icon = 'shuttle.dmi' + icon_state = "wall" +/turf/station/shuttle/floor + icon = 'shuttle.dmi' + icon_state = "floor" + +/mob/monkey + icon = 'monkey.dmi' + icon_state = "monkey1" + +/obj/move/airtunnel/connector/wall + icon = 'airtunnel.dmi' + icon_state = "wall-c" +/obj/move/airtunnel/connector + icon = 'airtunnel.dmi' + icon_state = "floor-c" +/obj/move/airtunnel/wall + icon = 'airtunnel.dmi' + icon_state = "wall" + +/obj/move/floor + icon = 'shuttle.dmi' + icon_state = "floor" +/obj/move/wall + icon = 'shuttle.dmi' + icon_state = "wall" + +/obj/machinery/at_indicator + icon = 'airtunnel.dmi' + icon_state = "reader00" +/obj/machinery/computer/airtunnel + icon = 'airtunnelcomputer.dmi' + icon_state = "console00" +/obj/machinery/computer/security + icon = 'stationobjs.dmi' + icon_state = "sec_computer" + var/network +/obj/machinery/computer/communications + icon = 'stationobjs.dmi' + icon_state = "comm_computer" +/obj/machinery/computer/card + icon = 'stationobjs.dmi' + icon_state = "id_computer" +/obj/machinery/computer/pod + icon = 'escapepod.dmi' + icon_state = "computer" + var/id = 1//For synchronization with the other pod launch stuff +/obj/machinery/computer/med_data + icon = 'weap_sat.dmi' + icon_state = "computer" +/obj/machinery/computer/secure_data + icon = 'weap_sat.dmi' + icon_state = "computer" +/obj/machinery/computer/sleep_console + icon = 'Cryogenic2.dmi' + icon_state = "sleeperconsole" +/obj/machinery/computer/atmosphere/siphonswitch/mastersiphonswitch + icon = 'turfs.dmi' + icon_state = "switch" +/obj/machinery/computer/atmosphere/siphonswitch + icon = 'turfs.dmi' + icon_state = "switch" +/obj/machinery/computer/dna + icon = 'Cryogenic2.dmi' + icon_state = "dna_computer" +/obj/machinery/computer/engine + icon = 'enginecomputer.dmi' + icon_state = "" +/obj/machinery/computer/hologram_comp + icon = 'stationobjs.dmi' + icon_state = "holo_console0" +/obj/machinery/computer/prison_shuttle + icon = 'shuttle.dmi' + icon_state = "shuttlecom" +/obj/machinery/computer/shuttle + icon = 'shuttle.dmi' + icon_state = "shuttlecom" +/obj/machinery/computer/teleporter + icon = 'stationobjs.dmi' + icon_state = "tele_computer" +/obj/machinery/computer/data/weapon/log + icon = 'weap_sat.dmi' + icon_state = "computer" +/obj/machinery/computer/data/weapon/info + icon = 'weap_sat.dmi' + icon_state = "computer" +/obj/machinery/computer/data + icon = 'weap_sat.dmi' + icon_state = "computer" + +/obj/machinery/camera + icon = 'stationobjs.dmi' + icon_state = "camera" + var/network //Set this as same with a computer to allow multiple camera names + //Default ones sued are SS13 and PS13 but you can use other strings + //YOU CANNOT merge networks! + var/c_tag //Name shown on security computer. +/obj/machinery/sec_lock + icon = 'stationobjs.dmi' + icon_state = "sec_lock" + var/a_type = 0//See map for better info: + //0 means the doors are lcoated S/SE,1=SW/Knight's move SW (prison),2=NW/Knight's move NW (prison) +/obj/machinery/injector + icon = 'stationobjs.dmi' + icon_state = "injector" +/obj/machinery/alarm/indicator + icon = 'airtunnel.dmi' + icon_state = "indicator" +/obj/machinery/alarm + icon = 'stationobjs.dmi' + icon_state = "alarm:0" +/obj/machinery/meter + icon = 'pipes.dmi' + icon_state = "meter" +/obj/machinery/connector + icon = 'pipes.dmi' + icon_state = "connector" +/obj/machinery/mass_driver + icon = 'stationobjs.dmi' + icon_state = "mass_driver" + var/id = 1 + +/obj/machinery/pipes/flexipipe + icon = 'wire.dmi' + icon_state = "12" +/obj/machinery/pipes/high_capacity + icon = 'hi_pipe.dmi' + icon_state = "12" +/obj/machinery/pipes + var/p_dir = 12 + //used internally, make it the same as the icon_state + //FYI its a bit flag variable + +/obj/machinery/atmoalter/siphs/fullairsiphon/port + icon = 'stationobjs.dmi' + icon_state = "siphon:0" +/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent + icon = 'aircontrol.dmi' + icon_state = "vent2" +/obj/machinery/atmoalter/siphs/fullairsiphon + icon = 'turfs.dmi' + icon_state = "siphon:0" +/obj/machinery/atmoalter/siphs/scrubbers/air_filter + icon = 'aircontrol.dmi' + icon_state = "vent2" +/obj/machinery/atmoalter/siphs/scrubbers/port + icon = 'stationobjs.dmi' + icon_state = "scrubber:0" +/obj/machinery/atmoalter/siphs/scrubbers + icon = 'turfs2.dmi' + icon_state = "siphon:0" + +/obj/machinery/atmoalter/heater + icon = 'stationobjs.dmi' + icon_state = "heater1" +/obj/machinery/atmoalter/canister/poisoncanister + icon = 'canister.dmi' + icon_state = "0orange" +/obj/machinery/atmoalter/canister/oxygencanister + icon = 'canister.dmi' + icon_state = "blue" +/obj/machinery/atmoalter/canister/anesthcanister + icon = 'canister.dmi' + icon_state = "red" +/obj/machinery/atmoalter/canister/n2canister + icon = 'canister.dmi' + icon_state = "red" + +/obj/machinery/door/poddoor + icon = 'Door1.dmi' + icon_state = "door1" + var/id = 1 +/obj/machinery/door/window + icon = 'windoor.dmi' + icon_state = "door1" +/obj/machinery/door/false_wall + icon = 'Doorf.dmi' + icon_state = "door1" +/obj/machinery/door/airlock + icon = 'Door1.dmi' + icon_state = "door1" +/obj/machinery/door/firedoor + icon = 'Door1.dmi' + icon_state = "door0" +/obj/machinery/door + icon = 'doors.dmi' + icon_state = "door1" + var + r_access;r_lab;r_engine;r_air + + +/obj/machinery/pod + icon = 'escapepod.dmi' + icon_state = "pod" + var/id = 1//For synchronization with computer commands +/obj/machinery/recon + icon = 'escapepod.dmi' + icon_state = "recon" + var/id = 1//For synchronization with computer commands +/obj/machinery/freezer + icon = 'Cryogenic2.dmi' + icon_state = "freezer_0" +/obj/machinery/sleeper + icon = 'Cryogenic2.dmi' + icon_state = "sleeper_0" +/obj/machinery/cryo_cell + icon = 'Cryogenic2.dmi' + icon_state = "celltop" +/obj/machinery/igniter + icon = 'stationobjs.dmi' + icon_state = "igniter1" +/obj/machinery/firealarm + icon = 'items.dmi' + icon_state = "firealarm" +/obj/machinery/dispenser + icon = 'turfs2.dmi' + icon_state = "dispenser" + var //if you have to ask, I have to ask, have you played the game? + pltanks = 10 + o2tanks = 10 +/obj/machinery/dna_scanner + icon = 'Cryogenic2.dmi' + icon_state = "scanner_0" +/obj/machinery/scan_console + icon = 'Cryogenic2.dmi' + icon_state = "scannerconsole" +/obj/machinery/restruct + icon = 'Cryogenic2.dmi' + icon_state = "restruct_0" +/obj/machinery/hologram_proj + icon = 'stationobjs.dmi' + icon_state = "hologram0" +/obj/machinery/recharger + icon = 'stationobjs.dmi' + icon_state = "recharger0" +/obj/machinery/shuttle/engine/propulsion/burst/left + icon = 'shuttle.dmi' + icon_state = "burst_l" +/obj/machinery/shuttle/engine/propulsion/burst/right + icon = 'shuttle.dmi' + icon_state = "burst_r" +/obj/machinery/shuttle/engine/propulsion/burst + icon = 'shuttle.dmi' + icon_state = "propulsion" +/obj/machinery/shuttle/engine/propulsion + icon = 'shuttle.dmi' + icon_state = "propulsion" +/obj/machinery/shuttle/engine/router + icon = 'shuttle.dmi' + icon_state = "router" +/obj/machinery/shuttle/engine/platform + icon = 'shuttle.dmi' + icon_state = "platform" +/obj/machinery/shuttle/engine/heater + icon = 'shuttle.dmi' + icon_state = "heater" + +/obj/machinery/shuttle + icon = 'shuttle.dmi' + icon_state = "" +/obj/machinery/teleport/hub + icon = 'stationobjs.dmi' + icon_state = "tele0" +/obj/machinery/teleport/station + icon = 'stationobjs.dmi' + icon_state = "controller" +/obj/machinery/teleport + icon = 'stationobjs.dmi' + icon_state = "" +/obj/machinery/nuclearbomb + icon = 'stationobjs.dmi' + icon_state = "nuclearbomb0" + var/extended = 0 //make this 1 to have it frozen in place + +/obj/landmark//This is a pretty complicated object used mainly for CTF and nuclear mode + //Just consult the map and sue it as a guide for placing the stuff. + //It's a good thing you've played the game! + icon = 'screen1.dmi' + icon_state = "x2" +/obj/landmark/alterations + icon = 'screen1.dmi' + icon_state = "x2" +/obj/start + icon = 'screen1.dmi' + icon_state = "x" +/obj/sp_start + icon = 'human.dmi' + icon_state = "male" + var/special + //2 means remvoe all tiems frmo character,3 means make character a monkey + //FYI if you ahven't noticed the name is the ckey of the user + +//Not sure what you want to do with these but I just decided... +//Why not jsut toss em in. +/obj/item/weapon/organ/external/head + icon = 'human.dmi' + icon_state = "head" +/obj/item/weapon/organ/external/chest + icon = 'human.dmi' + icon_state = "chest" +/obj/item/weapon/organ/external/diaper + icon = 'human.dmi' + icon_state = "diaper" +/obj/item/weapon/organ/external/l_leg + icon = 'human.dmi' + icon_state = "l_leg" +/obj/item/weapon/organ/external/r_leg + icon = 'human.dmi' + icon_state = "r_leg" +/obj/item/weapon/organ/external/l_foot + icon = 'human.dmi' + icon_state = "l_foot" +/obj/item/weapon/organ/external/r_foot + icon = 'human.dmi' + icon_state = "r_foot" +/obj/item/weapon/organ/external/l_arm + icon = 'human.dmi' + icon_state = "l_arm" +/obj/item/weapon/organ/external/r_arm + icon = 'human.dmi' + icon_state = "r_arm" +/obj/item/weapon/organ/external/l_hand + icon = 'human.dmi' + icon_state = "l_hand" +/obj/item/weapon/organ/external/r_hand + icon = 'human.dmi' + icon_state = "r_hand" + +/obj/item/weapon/flasks/oxygen + icon = 'Cryogenic2.dmi' + icon_state = "oxygen-c" +/obj/item/weapon/flasks/plasma + icon = 'Cryogenic2.dmi' + icon_state = "plasma-c" +/obj/item/weapon/flasks/coolant + icon = 'Cryogenic2.dmi' + icon_state = "coolant-c" +/obj/item/weapon/clothing/head/helmet + icon = 'items.dmi' + icon_state = "helmet" +/obj/item/weapon/clothing/head/bio_hood + icon = 'items.dmi' + icon_state = "bio_hood" +/obj/item/weapon/clothing/head/swat_hel + icon = 'items.dmi' + icon_state = "swat_hel" +/obj/item/weapon/clothing/head/s_helmet + icon = 'items.dmi' + icon_state = "s_helmet" +/obj/item/weapon/clothing/head + icon = 'items.dmi' + icon_state = "" +/obj/item/weapon/clothing/gloves/latex + icon = 'items.dmi' + icon_state = "lgloves" +/obj/item/weapon/clothing/gloves/robot + icon = 'items.dmi' + icon_state = "r_hands" +/obj/item/weapon/clothing/gloves/swat + icon = 'items.dmi' + icon_state = "swat_gl" +/obj/item/weapon/clothing/gloves/black + icon = 'items.dmi' + icon_state = "bgloves" +/obj/item/weapon/clothing/gloves + icon = 'items.dmi' + icon_state = "" +/obj/item/weapon/clothing/ears/earmuffs + icon = 'items.dmi' + icon_state = "earmuffs" +/obj/item/weapon/clothing/ears + icon = 'items.dmi' + icon_state = "" +/obj/item/weapon/clothing/glasses/meson + icon = 'items.dmi' + icon_state = "m_glasses" +/obj/item/weapon/clothing/glasses/thermal + icon = 'items.dmi' + icon_state = "t_glasses" +/obj/item/weapon/clothing/glasses/sunglasses + icon = 'items.dmi' + icon_state = "s_glasses" +/obj/item/weapon/clothing/glasses/regular + icon = 'items.dmi' + icon_state = "p_glasses" +/obj/item/weapon/clothing/glasses/blindfold + icon = 'items.dmi' + icon_state = "blindfold" +/obj/item/weapon/clothing/glasses + icon = 'items.dmi' + icon_state = "" +/obj/item/weapon/clothing/shoes/orange + icon = 'items.dmi' + icon_state = "o_shoes" +/obj/item/weapon/clothing/shoes/black + icon = 'items.dmi' + icon_state = "bl_shoes" +/obj/item/weapon/clothing/shoes/brown + icon = 'items.dmi' + icon_state = "b_shoes" +/obj/item/weapon/clothing/shoes/white + icon = 'items.dmi' + icon_state = "w_shoes" +/obj/item/weapon/clothing/shoes/robot + icon = 'items.dmi' + icon_state = "r_feet" +/obj/item/weapon/clothing/shoes/swat + icon = 'items.dmi' + icon_state = "swat_sh" +/obj/item/weapon/clothing/shoes + icon = 'items.dmi' + icon_state = "" +/obj/item/weapon/clothing/under/orange + icon = 'items.dmi' + icon_state = "o_suit" +/obj/item/weapon/clothing/under/yellow + icon = 'items.dmi' + icon_state = "y_suit" +/obj/item/weapon/clothing/under/blue + icon = 'items.dmi' + icon_state = "b_suit" +/obj/item/weapon/clothing/under/red + icon = 'items.dmi' + icon_state = "r_suit" +/obj/item/weapon/clothing/under/pink + icon = 'items.dmi' + icon_state = "p_suit" +/obj/item/weapon/clothing/under/black + icon = 'items.dmi' + icon_state = "bl_suit" +/obj/item/weapon/clothing/under/white + icon = 'items.dmi' + icon_state = "w_suit" +/obj/item/weapon/clothing/under/green + icon = 'items.dmi' + icon_state = "g_suit" +/obj/item/weapon/clothing/under + icon = 'items.dmi' + icon_state = "" +/obj/item/weapon/clothing/suit/firesuit + icon = 'items.dmi' + icon_state = "firesuit" +/obj/item/weapon/clothing/suit/straight_jacket + icon = 'items.dmi' + icon_state = "straight_jacket" +/obj/item/weapon/clothing/suit/armor + icon = 'items.dmi' + icon_state = "armor" +/obj/item/weapon/clothing/suit/robot_suit + icon = 'items.dmi' + icon_state = "ro_suit" +/obj/item/weapon/clothing/suit/bio_suit + icon = 'items.dmi' + icon_state = "bio_suit" +/obj/item/weapon/clothing/suit/swat_suit + icon = 'items.dmi' + icon_state = "swat_suit" +/obj/item/weapon/clothing/suit/sp_suit + icon = 'items.dmi' + icon_state = "s_suit" +/obj/item/weapon/clothing/suit + icon = 'items.dmi' + icon_state = "" +/obj/item/weapon/clothing/mask/robot/swat + icon = 'items.dmi' + icon_state = "r_head" +/obj/item/weapon/clothing/mask/robot + icon = 'items.dmi' + icon_state = "r_head" +/obj/item/weapon/clothing/mask/gasmask + icon = 'items.dmi' + icon_state = "mask" +/obj/item/weapon/clothing/mask/m_mask + icon = 'items.dmi' + icon_state = "m_mask" +/obj/item/weapon/clothing/mask/muzzle + icon = 'items.dmi' + icon_state = "muzzle" +/obj/item/weapon/clothing/mask/surgical + icon = 'items.dmi' + icon_state = "s_mask" +/obj/item/weapon/clothing/mask + icon = 'items.dmi' + icon_state = "" +/obj/item/weapon/clothing + icon = 'items.dmi' + icon_state = "" +/obj/item/weapon/tank/oxygentank + icon = 'items.dmi' + icon_state = "oxygen" +/obj/item/weapon/tank/jetpack + icon = 'items.dmi' + icon_state = "jetpack0" +/obj/item/weapon/tank/anesthetic + icon = 'items.dmi' + icon_state = "an_tank" +/obj/item/weapon/tank/plasmatank + icon = 'items.dmi' + icon_state = "plasma" +/obj/item/weapon/tank + icon = 'items.dmi' + icon_state = "" +/obj/item/weapon/table_parts + icon = 'items.dmi' + icon_state = "table_parts" +/obj/item/weapon/rack_parts + icon = 'items.dmi' + icon_state = "rack_parts" +/obj/item/weapon/paper_bin + icon = 'stationobjs.dmi' + icon_state = "paper_bin1" + var/amount = 30//Amount of paper in the bin... dont bother adjusting +/obj/item/weapon/game_kit + icon = 'items.dmi' + icon_state = "game_kit" +/obj/item/weapon/bedsheet + icon = 'Icons.dmi' + icon_state = "sheet" +/obj/item/weapon/wrapping_paper + icon = 'items.dmi' + icon_state = "wrap_paper" +/obj/item/weapon/c_tube + icon = 'items.dmi' + icon_state = "c_tube" +/obj/item/weapon/a_gift + icon = 'items.dmi' + icon_state = "gift" +/obj/item/weapon/flashbang + icon = 'items.dmi' + icon_state = "flashbang" +/obj/item/weapon/flash + icon = 'items.dmi' + icon_state = "flash" +/obj/item/weapon/locator + icon = 'items.dmi' + icon_state = "locator" +/obj/item/weapon/syndicate_uplink + icon = 'items.dmi' + icon_state = "radio" +/obj/item/weapon/sword + icon = 'items.dmi' + icon_state = "sword0" +/obj/item/weapon/shield + icon = 'items.dmi' + icon_state = "shield0" +/obj/item/weapon/cloaking_device + icon = 'items.dmi' + icon_state = "shield0" +/obj/item/weapon/ammo/a357 + icon = 'ammo.dmi' + icon_state = "357-7" +/obj/item/weapon/gun/revolver + icon = 'items.dmi' + icon_state = "revolver" +/obj/item/weapon/gun/energy/laser_gun + icon = 'items.dmi' + icon_state = "gun" +/obj/item/weapon/gun/energy/taser_gun + icon = 'items.dmi' + icon_state = "t_gun" +/obj/item/weapon/pill_canister/placebo + icon = 'items.dmi' + icon_state = "pill_canister" +/obj/item/weapon/pill_canister/antitoxin + icon = 'items.dmi' + icon_state = "pill_canister" +/obj/item/weapon/pill_canister/Tourette + icon = 'items.dmi' + icon_state = "pill_canister" +/obj/item/weapon/pill_canister/sleep + icon = 'items.dmi' + icon_state = "pill_canister" +/obj/item/weapon/pill_canister/epilepsy + icon = 'items.dmi' + icon_state = "pill_canister" +/obj/item/weapon/pill_canister/cough + icon = 'items.dmi' + icon_state = "pill_canister" +/obj/item/weapon/m_pill/superpill + icon = 'items.dmi' + icon_state = "pill" +/obj/item/weapon/m_pill/sleep + icon = 'items.dmi' + icon_state = "pill" +/obj/item/weapon/m_pill/cyanide + icon = 'items.dmi' + icon_state = "pill5" +/obj/item/weapon/m_pill/antitoxin + icon = 'items.dmi' + icon_state = "pill" +/obj/item/weapon/m_pill/cough + icon = 'items.dmi' + icon_state = "pill4" +/obj/item/weapon/m_pill/epilepsy + icon = 'items.dmi' + icon_state = "pill3" +/obj/item/weapon/m_pill/Tourette + icon = 'items.dmi' + icon_state = "pill2" +/obj/item/weapon/handcuffs + icon = 'items.dmi' + icon_state = "handcuff" +/obj/item/weapon/card/data + icon = 'items.dmi' + icon_state = "card-data" + var/function = "storage" + var/data = "null" + var/special = null +/obj/item/weapon/card/emag + icon = 'items.dmi' + icon_state = "emag-card" +/obj/item/weapon/card/id + icon = 'items.dmi' + icon_state = "card-id" + var/access_level //general level of access + var/lab_access //level of lab access + var/engine_access //level of engine access + var/air_access //level of systems access + var/registered //name registered to + var/assignment //like pilot,captain,researcher +/obj/item/weapon/rods + icon = 'items.dmi' + icon_state = "rods" +/obj/item/weapon/sheet/r_metal + icon = 'items.dmi' + icon_state = "sheet-r_metal" +/obj/item/weapon/sheet/metal + icon = 'items.dmi' + icon_state = "sheet-metal" +/obj/item/weapon/sheet/glass + icon = 'items.dmi' + icon_state = "sheet-glass" +/obj/item/weapon/sheet + var/amount = 1 +/obj/item/weapon/wirecutters + icon = 'items.dmi' + icon_state = "cutters" +/obj/item/weapon/clipboard + icon = 'items.dmi' + icon_state = "clipboard00" +/obj/item/weapon/fcardholder + icon = 'items.dmi' + icon_state = "fcardholder0" +/obj/item/weapon/extinguisher + icon = 'items.dmi' + icon_state = "fire_extinguisher0" +/obj/item/weapon/pen/sleepypen + icon = 'items.dmi' + icon_state = "pen" +/obj/item/weapon/pen + icon = 'items.dmi' + icon_state = "pen" +/obj/item/weapon/paint + icon = 'items.dmi' + icon_state = "paint_neutral" +/obj/item/weapon/camera + icon = 'items.dmi' + icon_state = "camera" +/obj/item/weapon/paper/flag + icon = 'items.dmi' + icon_state = "flag_neutral"//Whatever... +/obj/item/weapon/paper/jobs + icon = 'items.dmi' + icon_state = "paper" +/obj/item/weapon/paper/sop + icon = 'items.dmi' + icon_state = "paper" +/obj/item/weapon/paper/courtroom + icon = 'items.dmi' + icon_state = "paper" +/obj/item/weapon/paper/Toxin + icon = 'items.dmi' + icon_state = "paper" +/obj/item/weapon/paper/Internal + icon = 'items.dmi' + icon_state = "paper" +/obj/item/weapon/paper/Map + icon = 'items.dmi' + icon_state = "paper" +/obj/item/weapon/paper + icon = 'items.dmi' + icon_state = "paper" + var/info//If you want to create some customized HTML message go ahead. +/obj/item/weapon/f_card + icon = 'items.dmi' + icon_state = "f_print_card0" +/obj/item/weapon/f_print_scanner + icon = 'items.dmi' + icon_state = "f_print_scanner0" +/obj/item/weapon/healthanalyzer + icon = 'items.dmi' + icon_state = "healthanalyzer" +/obj/item/weapon/analyzer + icon = 'items.dmi' + icon_state = "analyzer" +/obj/item/weapon/storage/lglo_kit + icon = 'items.dmi' + icon_state = "lglo_kit" +/obj/item/weapon/storage/flashbang_kit + icon = 'items.dmi' + icon_state = "flashbang_kit" +/obj/item/weapon/storage/stma_kit + icon = 'items.dmi' + icon_state = "lglo_kit" +/obj/item/weapon/storage/gl_kit + icon = 'items.dmi' + icon_state = "id_kit" +/obj/item/weapon/storage/trackimp_kit + icon = 'items.dmi' + icon_state = "imp_kit" +/obj/item/weapon/storage/fcard_kit + icon = 'items.dmi' + icon_state = "id_kit" +/obj/item/weapon/storage/id_kit + icon = 'items.dmi' + icon_state = "id_kit" +/obj/item/weapon/storage/box + icon = 'items.dmi' + icon_state = "box" +/obj/item/weapon/storage/handcuff_kit + icon = 'items.dmi' + icon_state = "handcuff_kit" +/obj/item/weapon/storage/disk_kit/disks + icon = 'items.dmi' + icon_state = "id_kit" +/obj/item/weapon/storage/disk_kit/disks2 + icon = 'items.dmi' + icon_state = "id_kit" +/obj/item/weapon/storage/disk_kit + icon = 'items.dmi' + icon_state = "id_kit" +/obj/item/weapon/storage/backpack + icon = 'items.dmi' + icon_state = "backpack" +/obj/item/weapon/storage/toolbox + icon = 'items.dmi' + icon_state = "toolbox" +/obj/item/weapon/storage/firstaid/fire + icon = 'items.dmi' + icon_state = "firstaid-ointment" +/obj/item/weapon/storage/firstaid/syringes + icon = 'items.dmi' + icon_state = "syringe_kit" +/obj/item/weapon/storage/firstaid/regular + icon = 'items.dmi' + icon_state = "firstaid" +/obj/item/weapon/storage/firstaid/toxin + icon = 'items.dmi' + icon_state = "firstaid-toxin" +/obj/item/weapon/tile + icon = 'items.dmi' + icon_state = "tile" +/obj/item/weapon/igniter + icon = 'items.dmi' + icon_state = "igniter" +/obj/item/weapon/radio/electropack + icon = 'items.dmi' + icon_state = "electropack0" +/obj/item/weapon/radio/headset + icon = 'items.dmi' + icon_state = "headset" +/obj/item/weapon/radio/beacon + icon = 'items.dmi' + icon_state = "beacon" +/obj/item/weapon/radio/signaler + icon = 'items.dmi' + icon_state = "signaler" +/obj/item/weapon/radio/intercom + icon = 'items.dmi' + icon_state = "intercom" +/obj/item/weapon/radio + icon = 'items.dmi' + icon_state = "radio" + var/freq = 145.1//Please don't make me explain this. +//In theory you can go beyond the default ranges for really private things but +//The player could easily ruin that, +/obj/item/weapon/shard + icon = 'shards.dmi' + icon_state = "small" +/obj/item/weapon/crowbar + icon = 'items.dmi' + icon_state = "crowbar" +/obj/item/weapon/wrench + icon = 'items.dmi' + icon_state = "wrench" +/obj/item/weapon/screwdriver + icon = 'items.dmi' + icon_state = "screwdriver" +/obj/item/weapon/dropper + icon = 'items.dmi' + icon_state = "dropper_0" +/obj/item/weapon/implantcase/tracking + icon = 'items.dmi' + icon_state = "implantcase-b" +/obj/item/weapon/implantcase + icon = 'items.dmi' + icon_state = "implantcase-0" +/obj/item/weapon/implantpad + icon = 'items.dmi' + icon_state = "implantpad-0" +/obj/item/weapon/implanter + icon = 'items.dmi' + icon_state = "implanter0" +/obj/item/weapon/syringe + icon = 'items.dmi' + icon_state = "syringe_0" +/obj/item/weapon/brutepack + icon = 'items.dmi' + icon_state = "brutepack" +/obj/item/weapon/hand_tele + icon = 'items.dmi' + icon_state = "hand_tele" +/obj/item/weapon/ointment + icon = 'items.dmi' + icon_state = "ointment" +/obj/item/weapon/bottle/toxins + icon = 'items.dmi' + icon_state = "toxinbottle" +/obj/item/weapon/bottle/antitoxins + icon = 'items.dmi' + icon_state = "atoxinbottle" +/obj/item/weapon/bottle/r_epil + icon = 'items.dmi' + icon_state = "medibottle" +/obj/item/weapon/bottle/r_ch_cough + icon = 'items.dmi' + icon_state = "medibottle" +/obj/item/weapon/bottle/rejuvenators + icon = 'items.dmi' + icon_state = "rejuvbottle" +/obj/item/weapon/bottle/s_tox + icon = 'items.dmi' + icon_state = "toxinbottle" +/obj/item/weapon/bottle + icon = 'items.dmi' + icon_state = "" +/obj/item/weapon/weldingtool + icon = 'items.dmi' + icon_state = "welder" +/obj/item/weapon/disk/nuclear + icon = 'items.dmi' + icon_state = "nucleardisk" +/obj/item/weapon/disk + icon = 'items.dmi' + icon_state = "" +/obj/item/weapon/infra_sensor + icon = 'items.dmi' + icon_state = "infra_sensor" +/obj/item/weapon/prox_sensor + icon = 'items.dmi' + icon_state = "motion0" +/obj/item/weapon/infra + icon = 'items.dmi' + icon_state = "infrared0" +/obj/item/weapon/timer + icon = 'items.dmi' + icon_state = "timer" + +/obj/secloset/personal + icon = 'stationobjs.dmi' + icon_state = "0secloset0" +/obj/secloset/security2 + icon = 'stationobjs.dmi' + icon_state = "1secloset0" +/obj/secloset/security1 + icon = 'stationobjs.dmi' + icon_state = "1secloset0" +/obj/secloset/highsec + icon = 'stationobjs.dmi' + icon_state = "1secloset0" +/obj/secloset/animal + icon = 'stationobjs.dmi' + icon_state = "1secloset0" +/obj/secloset/medical1 + icon = 'stationobjs.dmi' + icon_state = "1secloset0" +/obj/secloset/medical2 + icon = 'stationobjs.dmi' + icon_state = "1secloset0" +/obj/secloset + icon = 'stationobjs.dmi' + icon_state = "1secloset0" + var/allowed //it may be best you examine the map if you override these. +/obj/morgue + icon = 'stationobjs.dmi' + icon_state = "morgue1" +/obj/closet/syndicate/nuclear + icon = 'stationobjs.dmi' + icon_state = "syndicate0" +/obj/closet/emcloset + icon = 'stationobjs.dmi' + icon_state = "emcloset0" +/obj/closet/l3closet + icon = 'stationobjs.dmi' + icon_state = "l3closet0" +/obj/closet/wardrobe/red + icon = 'stationobjs.dmi' + icon_state = "wardrobe-r" +/obj/closet/wardrobe/pink + icon = 'stationobjs.dmi' + icon_state = "wardrobe-p" +/obj/closet/wardrobe/black + icon = 'stationobjs.dmi' + icon_state = "wardrobe-bl" +/obj/closet/wardrobe/green + icon = 'stationobjs.dmi' + icon_state = "wardrobe-g" +/obj/closet/wardrobe/orange + icon = 'stationobjs.dmi' + icon_state = "wardrobe-o" +/obj/closet/wardrobe/yellow + icon = 'stationobjs.dmi' + icon_state = "wardrobe-y" +/obj/closet/wardrobe/mixed + icon = 'stationobjs.dmi' + icon_state = "wardrobe-bp" +/obj/closet/wardrobe/white + icon = 'stationobjs.dmi' + icon_state = "wardrobe-w" +/obj/closet/wardrobe + icon = 'stationobjs.dmi' + icon_state = "wardrobe-b" +/obj/closet + icon = 'stationobjs.dmi' + icon_state = "closet" +/obj/stool/bed + icon = 'Icons.dmi' + icon_state = "bed" +/obj/stool/chair + icon = 'Icons.dmi' + icon_state = "chair" +/obj/stool + icon = 'Icons.dmi' + icon_state = "stool" +/obj/grille + icon = 'turfs2.dmi' + icon_state = "grille" +/obj/window + icon = 'turfs2.dmi' + icon_state = "window" +/obj/begin + icon = 'stationobjs.dmi' + icon_state = "begin" +/obj/manifest + icon = 'screen1.dmi' + icon_state = "x" +/obj/bedsheetbin + icon = 'Icons.dmi' + icon_state = "bedbin" +/obj/table + icon = 'table.dmi' + icon_state = "alone" +/obj/rack + icon = 'Icons.dmi' + icon_state = "rack" +/obj/weldfueltank + icon = 'items.dmi' + icon_state = "weldtank" +/obj/watertank + icon = 'stationobjs.dmi' + icon_state = "watertank" +/obj/d_girders + icon = 'stationobjs.dmi' + icon_state = "d_girders" +/obj/barrier + icon = 'stationobjs.dmi' + icon_state = "barrier" +/obj/shuttle/door + icon = 'shuttle.dmi' + icon_state = "door1" + +/atom/movable/var/anchored //use with caution +//Basically if it is 1, it is immobile. \ No newline at end of file diff --git a/SS13_map_files_src/SS13_map_files/SS13_map_files.dme b/SS13_map_files_src/SS13_map_files/SS13_map_files.dme new file mode 100644 index 0000000..88c3601 --- /dev/null +++ b/SS13_map_files_src/SS13_map_files/SS13_map_files.dme @@ -0,0 +1,23 @@ +// DM Environment file for SS13_map_files.dme. +// All manual changes should be made outside the BEGIN_ and END_ blocks. +// New source code should be placed in .dm files: choose File/New --> Code File. + +// BEGIN_INTERNALS +/* +FILE: +*/ +// END_INTERNALS +// BEGIN_FILE_DIR +#define FILE_DIR . +#define FILE_DIR "Icons" +// END_FILE_DIR + +// BEGIN_PREFERENCES +// END_PREFERENCES + +// BEGIN_INCLUDE +#include "areas.dm" +#include "SS13_map_files.dm" +#include "main.dmp" +// END_INCLUDE + diff --git a/SS13_map_files_src/SS13_map_files/areas.dm b/SS13_map_files_src/SS13_map_files/areas.dm new file mode 100644 index 0000000..6214b95 --- /dev/null +++ b/SS13_map_files_src/SS13_map_files/areas.dm @@ -0,0 +1,48 @@ +/*Why is this a seperate file you may ask? + +Well areas are very map depedant. +They basically are the zones for the firealarams with the exception of some of the start +areas such as /area/start, /area/sleep_area, and /area/shuttle +Those must stay in because the code references them. +Now you can add, remove, change any others. just make sure you include this file if you do. +*/ +//REQUIRED AREAS- Reference example map for placement instructions. +/area/start +/area/shuttle_prison +/area/shuttle +/area/sleep_area + +//ALTERABLE AREAS- Please place a small comment next to an area you alter for my reference. +/area/escapezone +/area/dummy +/area/vehicles/shuttle1 +/area/vehicles/shuttle2 +/area/vehicles/shuttle3 +/area/vehicles +/area/security +/area/aircontrol +/area/shuttle_airlock +/area/toxinlab +/area/engine +/area/decontamination +/area/medical +/area/airintake +/area/engine_access +/area/oxygen_storage +/area/testlab1 +/area/testlab2 +/area/testlab3 +/area/testlab4 +/area/toolstorage +/area/medicalstorage +/area/control_room +/area/controlaccess +/area/crew_quarters +/area/lounge +/area/airtunnel1 +/area/hallways/loungehall +/area/hallways/eastairlock +/area/hallways/labaccess +/area/hallways/centralhall +/area/hallways +/area/supply_station diff --git a/SS13_map_files_src/SS13_map_files/main.dmp b/SS13_map_files_src/SS13_map_files/main.dmp new file mode 100644 index 0000000..e5450ca --- /dev/null +++ b/SS13_map_files_src/SS13_map_files/main.dmp @@ -0,0 +1,2432 @@ +"aa" = (/turf/space,/area) +"ab" = (/obj/item/weapon/tank/oxygentank,/turf/space,/area) +"ac" = (/turf/station/wall,/area/engine_access) +"ad" = (/obj/window{dir = 1},/obj/window,/turf/station/floor,/area/engine_access) +"ae" = (/turf/station/r_wall,/area/engine) +"af" = (/obj/move/airtunnel/connector/wall,/turf/space,/area/airtunnel1) +"ag" = (/obj/machinery/camera{dir = 4; c_tag = "Northern Airlock"},/obj/machinery/at_indicator{pixel_x = -32; pixel_y = 0},/turf/station/floor,/area/engine_access) +"ah" = (/turf/station/floor,/area/engine_access) +"ai" = (/obj/machinery/door/airlock{r_access = 3},/turf/station/floor,/area/engine_access) +"aj" = (/obj/move/airtunnel/connector,/obj/machinery/alarm/indicator,/turf/space,/area/airtunnel1) +"ak" = (/obj/window{dir = 8},/obj/window{dir = 4},/turf/station/floor,/area/engine_access) +"al" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/engine_access) +"am" = (/obj/machinery/firealarm{pixel_y = -32},/turf/station/floor,/area/engine_access) +"an" = (/obj/window{dir = 4},/turf/station/floor,/area/engine_access) +"ao" = (/obj/window{dir = 4},/obj/window{dir = 8},/obj/grille,/turf/station/floor,/area/engine_access) +"ap" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/at_indicator{pixel_y = 32},/turf/station/floor,/area/engine) +"aq" = (/obj/machinery/door/airlock{r_access = 2},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/engine) +"ar" = (/obj/move/airtunnel/connector,/turf/space,/area/airtunnel1) +"as" = (/obj/machinery/door/airlock,/turf/station/floor,/area/engine_access) +"at" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/engine_access) +"au" = (/obj/window{dir = 10},/obj/item/weapon/extinguisher,/turf/station/floor,/area/engine_access) +"av" = (/obj/grille,/turf/station/floor,/area) +"aw" = (/turf/station/floor,/area/engine) +"ax" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/turf/station/floor,/area/engine_access) +"ay" = (/turf/station/r_wall,/area/airtunnel1) +"az" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/turf/station/floor,/area/airtunnel1) +"aA" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/floor,/area/airtunnel1) +"aB" = (/turf/station/wall,/area) +"aC" = (/obj/machinery/door/false_wall,/turf/station/floor,/area) +"aD" = (/turf/station/wall,/area/airtunnel1) +"aE" = (/turf/station/r_wall,/area) +"aF" = (/turf/station/floor,/area) +"aG" = (/obj/machinery/at_indicator{pixel_y = 32},/turf/station/floor,/area) +"aH" = (/turf/station/wall,/area/control_room) +"aI" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/engine_access) +"aJ" = (/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/engine) +"aK" = (/obj/machinery/atmoalter/canister/poisoncanister,/obj/machinery/firealarm,/turf/station/floor,/area/engine) +"aL" = (/obj/machinery/atmoalter/heater,/turf/station/floor,/area/engine) +"aM" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/turf/station/floor,/area) +"aN" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/floor,/area) +"aO" = (/obj/item/weapon/gun/revolver,/turf/station/floor,/area) +"aP" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/dispenser,/turf/station/floor,/area/control_room) +"aQ" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/dispenser,/turf/station/floor,/area/control_room) +"aR" = (/obj/rack,/obj/item/weapon/clothing/suit/sp_suit,/obj/item/weapon/clothing/head/s_helmet,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/tank/jetpack,/turf/station/floor,/area/control_room) +"aS" = (/obj/machinery/door/airlock{r_access = 2},/turf/station/floor,/area/engine) +"aT" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/engine) +"aU" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/engine) +"aV" = (/obj/machinery/camera{dir = 8; c_tag = "Plasma Storage"},/turf/station/floor,/area/engine) +"aW" = (/turf/station/r_wall,/area/testlab4) +"aX" = (/turf/station/r_wall,/area/control_room) +"aY" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/control_room) +"aZ" = (/turf/station/floor,/area/control_room) +"ba" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/control_room) +"bb" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/at_indicator{pixel_y = 32},/turf/station/floor,/area/engine_access) +"bc" = (/obj/machinery/firealarm{pixel_x = -32},/turf/station/floor,/area/engine) +"bd" = (/obj/machinery/atmoalter/canister/poisoncanister,/obj/item/weapon/extinguisher,/turf/station/floor,/area/engine) +"be" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/engine/floor,/area/testlab4) +"bf" = (/turf/station/engine/floor,/area/testlab4) +"bg" = (/obj/machinery/door/window,/turf/station/engine/floor,/area/testlab4) +"bh" = (/obj/machinery/igniter,/turf/station/engine/floor{poison = 5000},/area/testlab4) +"bi" = (/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/clothing/mask/m_mask,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/control_room) +"bj" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/engine) +"bk" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; r_engine = 3; r_access = 2; r_lab = 0},/turf/station/floor,/area/engine) +"bl" = (/obj/window{dir = 10},/turf/station/engine/floor,/area/testlab4) +"bm" = (/obj/window,/turf/station/engine/floor,/area/testlab4) +"bn" = (/obj/grille,/obj/window,/obj/window{dir = 1},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/control_room) +"bo" = (/obj/grille,/obj/window,/obj/window{dir = 1},/obj/window{dir = 4},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/control_room) +"bp" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; r_engine = 0; r_access = 2; r_lab = 1},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/control_room) +"bq" = (/obj/landmark/alterations{name = "barrier"},/turf/station/wall,/area/control_room) +"br" = (/obj/machinery/firealarm{pixel_x = 32},/turf/station/floor,/area/engine_access) +"bs" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/engine_access) +"bt" = (/turf/station/wall,/area/engine) +"bu" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/landmark/alterations{name = "id computer"},/turf/station/floor,/area/engine) +"bv" = (/obj/machinery/firealarm{pixel_x = 32},/turf/station/floor,/area/engine) +"bw" = (/obj/machinery/computer/engine,/turf/station/floor,/area/engine) +"bx" = (/obj/closet/emcloset,/turf/station/floor,/area/engine) +"by" = (/obj/table,/obj/item/weapon/storage/firstaid/fire,/turf/station/floor,/area/engine) +"bz" = (/obj/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/pill_canister/antitoxin,/turf/station/floor,/area/engine) +"bA" = (/obj/table,/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/obj/item/weapon/clothing/glasses/sunglasses,/turf/station/floor,/area/engine) +"bB" = (/obj/rack,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/radio/headset,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/sunglasses,/turf/station/floor,/area/engine) +"bC" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/floor,/area/engine) +"bD" = (/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/engine/floor,/area/testlab4) +"bE" = (/turf/station/floor,/area/testlab4) +"bF" = (/obj/machinery/camera{dir = 4; c_tag = "CR- Prep Room"},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/control_room) +"bG" = (/obj/machinery/door,/turf/station/floor,/area/engine) +"bH" = (/obj/window{dir = 8},/turf/station/floor,/area/testlab4) +"bI" = (/obj/machinery/firealarm{pixel_x = -32},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/control_room) +"bJ" = (/obj/machinery/door/firedoor,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/control_room) +"bK" = (/obj/machinery/door,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/engine_access) +"bL" = (/obj/landmark{name = "CTF-base-Engine"},/turf/station/floor,/area/engine) +"bM" = (/obj/machinery/door/window,/turf/station/floor,/area/engine) +"bN" = (/obj/item/weapon/radio,/turf/station/floor,/area/engine) +"bO" = (/obj/window{dir = 4},/turf/station/engine/floor,/area/testlab4) +"bP" = (/obj/machinery/door/firedoor,/turf/station/engine/floor,/area/testlab4) +"bQ" = (/obj/machinery/computer/atmosphere/siphonswitch,/turf/station/floor,/area/testlab4) +"bR" = (/obj/window,/turf/station/floor,/area/control_room) +"bS" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/control_room) +"bT" = (/obj/window{dir = 4},/turf/station/wall,/area) +"bU" = (/obj/window{dir = 8},/obj/window{dir = 4},/obj/grille,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area) +"bV" = (/obj/machinery/door/airlock,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/engine) +"bW" = (/obj/machinery/door/airlock{r_engine = 3; r_access = 2; r_lab = 0},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/testlab4) +"bX" = (/obj/window{dir = 1},/turf/station/floor,/area/testlab4) +"bY" = (/obj/window{dir = 10},/turf/station/floor,/area/testlab4) +"bZ" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/testlab4) +"ca" = (/obj/grille,/turf/station/floor,/area/testlab4) +"cb" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark{name = "CTF-wardrobe-CR"},/turf/station/floor,/area/control_room) +"cc" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/control_room) +"cd" = (/obj/machinery/computer/secure_data,/turf/station/floor,/area/control_room) +"ce" = (/obj/machinery/computer/card,/turf/station/floor,/area/control_room) +"cf" = (/obj/table,/obj/item/weapon/paper/Map,/obj/item/weapon/radio/intercom,/turf/station/floor,/area/control_room) +"cg" = (/obj/machinery/computer/communications,/turf/station/floor,/area/control_room) +"ch" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/paper/jobs,/obj/item/weapon/infra_sensor,/obj/machinery/camera{c_tag = "Control Room"},/turf/station/floor,/area/control_room) +"ci" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/paper/jobs,/obj/item/weapon/infra_sensor,/turf/station/floor,/area/control_room) +"cj" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/radio,/turf/station/floor,/area/control_room) +"ck" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/paper_bin,/turf/station/floor,/area/control_room) +"cl" = (/obj/table{icon_state = "corners"; dir = 5},/obj/window{dir = 4},/turf/station/floor,/area/control_room) +"cm" = (/obj/window{dir = 4},/obj/window{dir = 8},/obj/grille,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/control_room) +"cn" = (/obj/machinery/door/window{dir = 8},/turf/station/floor,/area/engine) +"co" = (/obj/watertank,/turf/station/floor,/area/engine) +"cp" = (/obj/landmark/alterations{name = "Experimental Technology"},/turf/station/floor,/area/engine) +"cq" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark/alterations{name = "Experimental Technology"},/turf/station/floor,/area/engine) +"cr" = (/obj/item/weapon/extinguisher,/turf/station/floor,/area/engine) +"cs" = (/obj/landmark{name = "CTF-wardrobe-Engine"},/turf/station/floor,/area/engine) +"ct" = (/obj/weldfueltank,/turf/station/floor,/area/engine) +"cu" = (/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor,/area/engine) +"cv" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor,/area/engine) +"cw" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark{name = "CTF-wardrobe-Engine"},/turf/station/floor,/area/engine) +"cx" = (/obj/item/weapon/radio/intercom{pixel_x = -32},/turf/station/floor,/area/testlab4) +"cy" = (/obj/machinery/door/window,/turf/station/floor,/area/testlab4) +"cz" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/floor,/area/testlab4) +"cA" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/landmark{name = "CTF-wardrobe-CR"},/turf/station/floor,/area/control_room) +"cB" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/control_room) +"cC" = (/obj/stool/chair{dir = 1},/turf/station/floor,/area/control_room) +"cD" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/pill_canister/antitoxin,/turf/station/floor,/area/control_room) +"cE" = (/obj/table{icon_state = "corners"; dir = 6},/obj/window{dir = 4},/obj/item/weapon/pen,/turf/station/floor,/area/control_room) +"cF" = (/obj/rack,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/radio/headset,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/meson,/obj/item/weapon/clothing/glasses/sunglasses,/turf/station/floor,/area/engine) +"cG" = (/obj/landmark{name = "CTF-supply-Engine"},/turf/station/floor,/area/engine) +"cH" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/floor,/area/engine) +"cI" = (/obj/table,/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/turf/station/floor,/area/testlab4) +"cJ" = (/obj/window{dir = 4},/obj/item/weapon/extinguisher,/turf/station/floor,/area/testlab4) +"cK" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/turf/station/floor,/area/testlab4) +"cL" = (/obj/machinery/door/window{dir = 8},/turf/station/floor,/area/control_room) +"cM" = (/obj/window{dir = 10},/obj/item/weapon/extinguisher,/turf/station/floor,/area/control_room) +"cN" = (/obj/stool/chair{dir = 4},/obj/start{name = "Head of Research"},/turf/station/floor,/area/control_room) +"cO" = (/obj/table,/obj/window{dir = 4},/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/clipboard,/turf/station/floor,/area/control_room) +"cP" = (/obj/machinery/door/window{icon = 'security.dmi'; r_engine = 2; r_access = 2},/turf/station/floor,/area/engine) +"cQ" = (/obj/item/weapon/radio/intercom{pixel_y = 32},/turf/station/floor,/area/engine) +"cR" = (/obj/machinery/injector{dir = 8},/turf/station/wall,/area/engine) +"cS" = (/turf/station/engine/floor{poison = 5000},/area/engine) +"cT" = (/obj/machinery/firealarm{pixel_y = -32},/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/testlab4) +"cU" = (/obj/weldfueltank,/turf/station/floor,/area/testlab4) +"cV" = (/obj/machinery/door/window,/turf/station/floor,/area/control_room) +"cW" = (/obj/landmark{name = "CTF-base-CR"},/turf/station/floor,/area/control_room) +"cX" = (/obj/table,/obj/item/weapon/paper/jobs,/obj/item/weapon/storage/id_kit,/turf/station/floor,/area/control_room) +"cY" = (/obj/table,/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/obj/item/weapon/clothing/glasses/sunglasses,/turf/station/floor,/area/control_room) +"cZ" = (/obj/table,/turf/station/floor,/area/control_room) +"da" = (/obj/stool/chair{dir = 4},/obj/start{name = "Captain"},/turf/station/floor,/area/control_room) +"db" = (/obj/table,/obj/window{dir = 4},/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/beacon,/obj/item/weapon/clipboard,/turf/station/floor,/area/control_room) +"dc" = (/obj/item/weapon/radio/intercom{pixel_x = -32},/turf/station/floor,/area/engine) +"dd" = (/obj/start{name = "Engineer"},/turf/station/floor,/area/engine) +"de" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/engine) +"df" = (/turf/station/r_wall,/area/medicalstorage) +"dg" = (/obj/watertank,/turf/station/floor,/area/control_room) +"dh" = (/obj/window{dir = 4},/turf/station/floor,/area/control_room) +"di" = (/obj/stool/chair{dir = 4},/obj/start{name = "Head of Personnel"},/turf/station/floor,/area/control_room) +"dj" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/engine) +"dk" = (/obj/machinery/camera{dir = 4; c_tag = "Engine Hallway"},/turf/station/floor,/area/engine) +"dl" = (/obj/window{dir = 4},/turf/station/floor,/area/engine) +"dm" = (/turf/station/wall,/area/medicalstorage) +"dn" = (/obj/closet/emcloset,/turf/station/floor,/area/medicalstorage) +"do" = (/obj/closet/wardrobe/yellow,/turf/station/floor,/area/medicalstorage) +"dp" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/storage/toolbox,/obj/item/weapon/clothing/glasses/meson,/turf/station/floor,/area/medicalstorage) +"dq" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/toolbox,/obj/item/weapon/clothing/glasses/meson,/turf/station/floor,/area/medicalstorage) +"dr" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/sunglasses,/obj/item/weapon/clothing/ears/earmuffs,/turf/station/floor,/area/medicalstorage) +"ds" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/sunglasses,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/clothing/ears/earmuffs,/turf/station/floor,/area/medicalstorage) +"dt" = (/obj/machinery/alarm{pixel_y = -32},/turf/station/floor,/area/control_room) +"du" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/paper/sop,/obj/item/weapon/paper/Internal,/obj/item/weapon/infra,/turf/station/floor,/area/control_room) +"dv" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/paper/Internal,/obj/item/weapon/radio/signaler,/turf/station/floor,/area/control_room) +"dw" = (/obj/stool/chair,/turf/station/floor,/area/control_room) +"dx" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/syringe,/turf/station/floor,/area/control_room) +"dy" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/bottle/s_tox,/obj/window{dir = 4},/turf/station/floor,/area/control_room) +"dz" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/weldfueltank,/turf/station/floor,/area/engine) +"dA" = (/obj/item/weapon/storage/backpack,/turf/station/floor,/area/engine) +"dB" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/engine) +"dC" = (/obj/machinery/dispenser,/turf/station/floor,/area/engine) +"dD" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/engine) +"dE" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/camera{dir = 4; c_tag = "Technician Office"},/turf/station/floor,/area/medicalstorage) +"dF" = (/obj/start{name = "Station Technician"},/turf/station/floor,/area/medicalstorage) +"dG" = (/turf/station/floor,/area/medicalstorage) +"dH" = (/obj/stool,/turf/station/floor,/area/medicalstorage) +"dI" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/radio/intercom{pixel_x = 32},/turf/station/floor,/area/medicalstorage) +"dJ" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/paper/courtroom,/turf/station/floor,/area/control_room) +"dK" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/paper/Toxin,/obj/item/weapon/paper/Map,/obj/item/weapon/timer,/turf/station/floor,/area/control_room) +"dL" = (/obj/landmark{name = "CTF-supply-CR"},/turf/station/floor,/area/control_room) +"dM" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/paper/jobs,/obj/manifest,/turf/station/floor,/area/control_room) +"dN" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/card/id,/obj/machinery/firealarm{pixel_y = -32},/turf/station/floor,/area/control_room) +"dO" = (/obj/machinery/computer/airtunnel,/turf/station/floor,/area/control_room) +"dP" = (/obj/machinery/computer/engine,/turf/station/floor,/area/control_room) +"dQ" = (/obj/table{icon_state = "corners"; dir = 10},/obj/machinery/recharger,/turf/station/floor,/area/control_room) +"dR" = (/obj/table{icon_state = "corners"; dir = 6},/obj/window{dir = 4},/turf/station/floor,/area/control_room) +"dS" = (/turf/station/wall,/area/escapezone) +"dT" = (/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/storage/toolbox,/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/crowbar,/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/engine) +"dU" = (/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/storage/toolbox,/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/crowbar,/turf/station/floor,/area/engine) +"dV" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/storage/toolbox,/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/crowbar,/obj/item/weapon/clipboard,/turf/station/floor,/area/engine) +"dW" = (/obj/machinery/alarm{pixel_y = -32},/obj/item/weapon/paper_bin{pixel_y = -32},/turf/station/floor,/area/engine) +"dX" = (/obj/item/weapon/clipboard,/turf/station/floor,/area/engine) +"dY" = (/obj/item/weapon/radio,/obj/machinery/firealarm{pixel_y = -32},/turf/station/floor,/area/engine) +"dZ" = (/obj/closet/wardrobe/yellow,/turf/station/floor,/area/engine) +"ea" = (/obj/machinery/door{r_engine = 3; r_access = 2},/obj/window,/obj/machinery/firealarm,/obj/window{dir = 8},/turf/station/floor,/area/engine) +"eb" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/medicalstorage) +"ec" = (/obj/start{name = "Technical Assistant"},/turf/station/floor,/area/medicalstorage) +"ed" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/medicalstorage) +"ee" = (/obj/weldfueltank,/turf/station/floor,/area/medicalstorage) +"ef" = (/turf/station/wall,/area/controlaccess) +"eg" = (/obj/machinery/door/window{dir = 4},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/controlaccess) +"eh" = (/turf/station/r_wall,/area/controlaccess) +"ei" = (/turf/station/r_wall,/area/testlab2) +"ej" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; r_engine = 0; r_access = 4; r_lab = 4},/turf/station/floor,/area/testlab2) +"ek" = (/obj/grille,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area) +"el" = (/obj/machinery/door/poddoor,/turf/station/engine/floor,/area/escapezone) +"em" = (/obj/machinery/mass_driver,/obj/item/weapon/tank/oxygentank,/turf/station/engine/floor,/area/escapezone) +"en" = (/obj/machinery/door/window,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/engine/floor,/area/escapezone) +"eo" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/escapezone) +"ep" = (/obj/machinery/computer/pod{name = "Mass Driver"},/turf/station/floor,/area/escapezone) +"eq" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/engine/floor,/area/engine) +"er" = (/obj/window{dir = 10},/turf/station/floor,/area/engine) +"es" = (/obj/machinery/injector,/turf/station/wall,/area/engine) +"et" = (/obj/window{dir = 10},/obj/item/weapon/extinguisher,/turf/station/floor,/area/engine) +"eu" = (/obj/machinery/igniter,/turf/station/engine/floor{poison = 5000},/area/engine) +"ev" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/medicalstorage) +"ew" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/floor,/area/medicalstorage) +"ex" = (/obj/machinery/alarm{pixel_y = 32},/turf/station/floor,/area/controlaccess) +"ey" = (/turf/station/floor,/area/controlaccess) +"ez" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/controlaccess) +"eA" = (/turf/station/floor,/area/escapezone) +"eB" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/escapezone) +"eC" = (/obj/grille,/turf/station/engine/floor,/area/engine) +"eD" = (/obj/machinery/alarm,/turf/station/floor,/area/controlaccess) +"eE" = (/obj/machinery/door/window,/turf/station/floor,/area/controlaccess) +"eF" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/computer/security,/turf/station/floor,/area/testlab2) +"eG" = (/turf/station/floor,/area/testlab2) +"eH" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/stool/bed,/obj/item/weapon/bedsheet,/turf/station/floor,/area/testlab2) +"eI" = (/obj/item/weapon/ammo/a357,/turf/station/floor,/area) +"eJ" = (/obj/machinery/door/poddoor{id = 2},/turf/station/engine/floor,/area/escapezone) +"eK" = (/obj/machinery/mass_driver{dir = 8; id = 2},/obj/machinery/pod,/turf/station/engine/floor,/area/escapezone) +"eL" = (/obj/machinery/computer/pod{id = 2},/turf/station/floor,/area/escapezone) +"eM" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area) +"eN" = (/obj/machinery/computer/engine,/turf/station/floor,/area) +"eO" = (/obj/machinery/computer/communications,/turf/station/floor,/area) +"eP" = (/obj/item/weapon/hand_tele,/turf/station/engine/floor,/area/engine) +"eQ" = (/turf/station/engine/floor,/area/engine) +"eR" = (/obj/machinery/alarm{pixel_y = 32},/turf/station/engine/floor,/area/engine) +"eS" = (/obj/machinery/door{r_engine = 3; r_access = 2},/turf/station/floor,/area/engine) +"eT" = (/turf/station/wall,/area/hallways/labaccess) +"eU" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/controlaccess) +"eV" = (/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor,/area/testlab2) +"eW" = (/obj/secloset/highsec,/turf/station/floor,/area/testlab2) +"eX" = (/obj/machinery/camera{dir = 4; c_tag = "Escape Pod Bay"},/turf/station/floor,/area/escapezone) +"eY" = (/obj/machinery/door/window,/turf/station/floor,/area/escapezone) +"eZ" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area) +"fa" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area) +"fb" = (/obj/machinery/door/airlock,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area) +"fc" = (/obj/watertank,/turf/station/floor,/area/hallways/labaccess) +"fd" = (/turf/station/floor,/area/hallways/labaccess) +"fe" = (/obj/machinery/door/window,/turf/station/floor,/area/hallways/labaccess) +"ff" = (/obj/machinery/camera{dir = 4; c_tag = "Emergency Room"},/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor,/area/testlab2) +"fg" = (/obj/landmark{name = "Nuclear-Disk"},/turf/station/floor,/area/testlab2) +"fh" = (/obj/machinery/door/poddoor{id = 3},/turf/station/engine/floor,/area/escapezone) +"fi" = (/obj/machinery/mass_driver{dir = 8; id = 3},/obj/machinery/pod,/turf/station/engine/floor,/area/escapezone) +"fj" = (/obj/machinery/computer/pod{id = 3},/turf/station/floor,/area/escapezone) +"fk" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/radio/intercom{pixel_x = -32},/turf/station/floor,/area) +"fl" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/turf/station/engine/floor,/area/engine) +"fm" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/hallways/labaccess) +"fn" = (/obj/machinery/firealarm{pixel_x = 32},/turf/station/floor,/area/hallways/labaccess) +"fo" = (/obj/weldfueltank,/turf/station/floor,/area/toolstorage) +"fp" = (/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/storage/backpack,/obj/item/weapon/crowbar,/obj/item/weapon/clothing/gloves/black,/turf/station/floor,/area/toolstorage) +"fq" = (/obj/item/weapon/infra,/obj/item/weapon/timer,/turf/station/floor,/area/toolstorage) +"fr" = (/turf/station/wall,/area/toolstorage) +"fs" = (/obj/table{icon_state = "sides"; dir = 2},/obj/bedsheetbin,/turf/station/floor,/area/toolstorage) +"ft" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/paper_bin{amount = 50},/obj/item/weapon/wrapping_paper,/turf/station/floor,/area/toolstorage) +"fu" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/storage/gl_kit,/turf/station/floor,/area/toolstorage) +"fv" = (/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/turf/station/floor,/area/toolstorage) +"fw" = (/obj/item/weapon/sheet/metal{amount = 5},/turf/station/floor,/area/toolstorage) +"fx" = (/obj/item/weapon/radio/intercom{pixel_x = -32},/turf/station/floor,/area/testlab2) +"fy" = (/obj/item/weapon/storage/handcuff_kit,/turf/station/floor,/area/testlab2) +"fz" = (/obj/machinery/door/poddoor{id = 4},/turf/station/engine/floor,/area/escapezone) +"fA" = (/obj/machinery/mass_driver{dir = 8; id = 4},/obj/machinery/pod,/turf/station/engine/floor,/area/escapezone) +"fB" = (/obj/machinery/computer/pod{id = 4},/turf/station/floor,/area/escapezone) +"fC" = (/obj/item/weapon/extinguisher,/turf/station/floor,/area) +"fD" = (/obj/machinery/computer/atmosphere/siphonswitch,/turf/station/floor,/area/engine) +"fE" = (/obj/table,/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/obj/item/weapon/clothing/glasses/meson,/obj/item/weapon/clothing/glasses/sunglasses,/obj/item/weapon/clothing/ears/earmuffs,/turf/station/floor,/area/toolstorage) +"fF" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/infra_sensor,/turf/station/floor,/area/toolstorage) +"fG" = (/obj/item/weapon/timer,/obj/item/weapon/radio/beacon,/turf/station/floor,/area/toolstorage) +"fH" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/camera{c_tag = "Supply Room"},/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/toolstorage) +"fI" = (/obj/item/weapon/timer,/obj/item/weapon/crowbar,/turf/station/floor,/area/toolstorage) +"fJ" = (/obj/item/weapon/radio/signaler,/turf/station/floor,/area/toolstorage) +"fK" = (/obj/item/weapon/crowbar,/turf/station/floor,/area/toolstorage) +"fL" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/infra,/obj/item/weapon/radio/signaler,/turf/station/floor,/area/toolstorage) +"fM" = (/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/turf/station/floor,/area/toolstorage) +"fN" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/turf/station/floor,/area/toolstorage) +"fO" = (/obj/item/weapon/igniter,/obj/item/weapon/crowbar,/turf/station/floor,/area/toolstorage) +"fP" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/infra,/obj/item/weapon/radio/beacon,/turf/station/floor,/area/toolstorage) +"fQ" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/closet/emcloset,/turf/station/floor,/area/testlab2) +"fR" = (/obj/closet/emcloset,/turf/station/floor,/area/testlab2) +"fS" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/closet/emcloset,/turf/station/floor,/area/testlab2) +"fT" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/hallways/labaccess) +"fU" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/toolstorage) +"fV" = (/obj/item/weapon/infra_sensor,/turf/station/floor,/area/toolstorage) +"fW" = (/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/obj/item/weapon/igniter,/obj/item/weapon/storage/backpack,/turf/station/floor,/area/toolstorage) +"fX" = (/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/turf/station/floor,/area/toolstorage) +"fY" = (/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/beacon,/turf/station/floor,/area/toolstorage) +"fZ" = (/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/turf/station/floor,/area/toolstorage) +"ga" = (/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/timer,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/turf/station/floor,/area/toolstorage) +"gb" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/toolstorage) +"gc" = (/turf/station/wall,/area/oxygen_storage) +"gd" = (/turf/station/wall,/area/hallways/eastairlock) +"ge" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table{icon_state = "corners"; dir = 5},/turf/station/floor,/area/hallways/eastairlock) +"gf" = (/obj/stool/chair,/turf/station/floor,/area/hallways/eastairlock) +"gg" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/hallways/eastairlock) +"gh" = (/turf/station/floor,/area/hallways/eastairlock) +"gi" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/hallways/eastairlock) +"gj" = (/obj/stool/chair{dir = 8},/turf/station/floor,/area/hallways/eastairlock) +"gk" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/stool/chair{dir = 8},/turf/station/floor,/area/hallways/eastairlock) +"gl" = (/obj/grille,/turf/station/floor{oxygen = 0},/area) +"gm" = (/turf/station/wall,/area/medical) +"gn" = (/obj/window{dir = 1},/obj/window,/obj/grille,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/medical) +"go" = (/turf/station/wall,/area/toxinlab) +"gp" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/hallways/labaccess) +"gq" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/hallways/centralhall) +"gr" = (/turf/station/floor,/area/hallways/centralhall) +"gs" = (/obj/machinery/alarm{pixel_y = 32},/turf/station/floor,/area/hallways/centralhall) +"gt" = (/turf/station/wall,/area/hallways/centralhall) +"gu" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/hallways/centralhall) +"gv" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/hallways/eastairlock) +"gw" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/paper/courtroom,/turf/station/floor,/area/hallways/eastairlock) +"gx" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/radio,/turf/station/floor,/area/hallways/eastairlock) +"gy" = (/obj/landmark/alterations{name = "Experimental Technology"},/turf/station/floor,/area/medical) +"gz" = (/obj/item/weapon/flasks/coolant,/obj/item/weapon/flasks/oxygen,/obj/item/weapon/flasks/plasma,/turf/station/floor,/area/medical) +"gA" = (/obj/window{dir = 4},/obj/closet/wardrobe/white,/turf/station/floor,/area/medical) +"gB" = (/obj/secloset/medical1,/turf/station/floor,/area/medical) +"gC" = (/obj/machinery/computer/med_data,/turf/station/floor,/area/medical) +"gD" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/paper/Toxin,/obj/item/weapon/pen,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/dropper,/obj/item/weapon/pill_canister/cough,/obj/item/weapon/pill_canister/epilepsy,/turf/station/floor,/area/medical) +"gE" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/syringe,/obj/item/weapon/clipboard,/turf/station/floor,/area/medical) +"gF" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/syringe,/obj/item/weapon/bottle/rejuvenators,/obj/machinery/camera{c_tag = "Medical Bay"},/turf/station/floor,/area/medical) +"gG" = (/obj/table{icon_state = "alone"},/obj/item/weapon/healthanalyzer,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/bottle/antitoxins,/turf/station/floor,/area/medical) +"gH" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/storage/firstaid/toxin,/turf/station/floor,/area/medical) +"gI" = (/obj/table{icon_state = "sides"},/obj/item/weapon/storage/firstaid/fire,/turf/station/floor,/area/medical) +"gJ" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/medical) +"gK" = (/obj/machinery/alarm{pixel_y = 32},/obj/closet/wardrobe/white,/turf/station/floor,/area/toxinlab) +"gL" = (/obj/closet/l3closet,/turf/station/floor,/area/toxinlab) +"gM" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/toxinlab) +"gN" = (/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area/toxinlab) +"gO" = (/obj/machinery/computer/med_data,/turf/station/floor,/area/toxinlab) +"gP" = (/obj/machinery/firealarm{pixel_y = 32},/turf/station/floor,/area/toxinlab) +"gQ" = (/obj/machinery/computer/atmosphere/siphonswitch,/obj/machinery/camera{c_tag = "Medical Lab"},/turf/station/floor,/area/toxinlab) +"gR" = (/obj/secloset/medical1,/turf/station/floor,/area/toxinlab) +"gS" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/paper/Toxin,/obj/item/weapon/clothing/gloves/latex,/obj/item/weapon/clothing/mask/surgical,/obj/item/weapon/pen,/obj/item/weapon/clipboard,/turf/station/floor,/area/toxinlab) +"gT" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/bottle/s_tox,/obj/item/weapon/bottle/r_epil,/obj/item/weapon/bottle/r_ch_cough,/obj/item/weapon/dropper,/turf/station/floor,/area/toxinlab) +"gU" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/syringe,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/bottle/s_tox,/obj/item/weapon/pill_canister/Tourette,/obj/item/weapon/pill_canister/epilepsy,/turf/station/floor,/area/toxinlab) +"gV" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/firstaid/toxin,/turf/station/floor,/area/toxinlab) +"gW" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/toxinlab) +"gX" = (/obj/machinery/alarm,/turf/station/floor,/area/hallways/labaccess) +"gY" = (/obj/machinery/door/window,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/hallways/labaccess) +"gZ" = (/obj/machinery/door/window,/turf/station/floor,/area/hallways/centralhall) +"ha" = (/obj/machinery/door/firedoor,/obj/machinery/door/window,/turf/station/floor,/area/hallways/eastairlock) +"hb" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/stool/chair{dir = 8},/turf/station/floor,/area/hallways/eastairlock) +"hc" = (/obj/morgue,/turf/station/floor,/area) +"hd" = (/obj/machinery/freezer,/turf/station/floor,/area/medical) +"he" = (/obj/machinery/pipes/flexipipe,/turf/station/floor,/area/medical) +"hf" = (/obj/machinery/cryo_cell,/turf/station/floor,/area/medical) +"hg" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor,/area/medical) +"hh" = (/obj/landmark/alterations{name = "recharger"},/turf/station/floor,/area/medical) +"hi" = (/turf/station/floor,/area/medical) +"hj" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/medical) +"hk" = (/obj/stool/chair,/turf/station/floor,/area/medical) +"hl" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/medical) +"hm" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/turf/station/floor,/area/toxinlab) +"hn" = (/turf/station/floor,/area/toxinlab) +"ho" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/toxinlab) +"hp" = (/obj/stool/chair,/turf/station/floor,/area/toxinlab) +"hq" = (/obj/machinery/camera{dir = 4; c_tag = "Central Hallway"},/turf/station/floor,/area/hallways/labaccess) +"hr" = (/turf/station/r_wall,/area/hallways/centralhall) +"hs" = (/turf/station/r_wall,/area/hallways/eastairlock) +"ht" = (/obj/machinery/camera{dir = 8; c_tag = "Assembly Room"},/obj/item/weapon/radio/intercom{pixel_x = 32},/turf/station/floor,/area/hallways/eastairlock) +"hu" = (/obj/window{dir = 4},/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor,/area/medical) +"hv" = (/obj/item/weapon/radio,/turf/station/floor,/area/medical) +"hw" = (/obj/item/weapon/ointment,/turf/station/floor,/area/medical) +"hx" = (/obj/stool/chair{dir = 8},/turf/station/floor,/area/medical) +"hy" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/hallways/centralhall) +"hz" = (/obj/machinery/alarm{pixel_y = 32},/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/oxygen_storage) +"hA" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/oxygen_storage) +"hB" = (/obj/machinery/dispenser,/turf/station/floor,/area/oxygen_storage) +"hC" = (/obj/machinery/dispenser,/obj/machinery/camera{c_tag = "Toxin Gas Storage"},/turf/station/floor,/area/oxygen_storage) +"hD" = (/turf/station/floor,/area/oxygen_storage) +"hE" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/oxygen_storage) +"hF" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/oxygen_storage) +"hG" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table{icon_state = "corners"; dir = 9},/turf/station/floor,/area/hallways/eastairlock) +"hH" = (/obj/table{icon_state = "corners"; dir = 5},/turf/station/floor,/area/hallways/eastairlock) +"hI" = (/obj/table{icon_state = "corners"; dir = 9},/turf/station/floor,/area/hallways/eastairlock) +"hJ" = (/obj/window{dir = 8},/turf/station/floor,/area/hallways/eastairlock) +"hK" = (/obj/machinery/sleeper,/turf/station/floor,/area/medical) +"hL" = (/obj/machinery/computer/sleep_console,/turf/station/floor,/area/medical) +"hM" = (/obj/start{name = "Medical Doctor"},/turf/station/floor,/area/medical) +"hN" = (/obj/item/weapon/brutepack,/turf/station/floor,/area/medical) +"hO" = (/obj/machinery/firealarm{pixel_x = 32},/obj/stool/chair{dir = 8},/turf/station/floor,/area/medical) +"hP" = (/obj/machinery/firealarm{pixel_y = -32},/turf/station/floor,/area/toxinlab) +"hQ" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/radio/intercom{pixel_y = -32},/turf/station/floor,/area/toxinlab) +"hR" = (/obj/window,/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/toxinlab) +"hS" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/toxinlab) +"hT" = (/obj/machinery/door/window{dir = 8},/turf/station/floor,/area/toxinlab) +"hU" = (/obj/window,/obj/secloset/medical2,/turf/station/floor,/area/toxinlab) +"hV" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/window,/turf/station/floor,/area/toxinlab) +"hW" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/turf/station/floor,/area/toxinlab) +"hX" = (/obj/item/weapon/paper_bin,/turf/station/floor,/area/toxinlab) +"hY" = (/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/oxygen_storage) +"hZ" = (/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area/oxygen_storage) +"ia" = (/obj/stool/chair{dir = 1},/obj/machinery/firealarm{pixel_x = -32},/turf/station/floor,/area/hallways/eastairlock) +"ib" = (/obj/stool/chair{dir = 1},/turf/station/floor,/area/hallways/eastairlock) +"ic" = (/obj/landmark{name = "CTF-supply-Medical"},/turf/station/floor,/area/medical) +"id" = (/obj/machinery/door/window,/turf/station/floor,/area/medical) +"ie" = (/obj/landmark{name = "CTF-base-Medical"},/turf/station/floor,/area/medical) +"if" = (/obj/window{dir = 1},/turf/station/floor,/area/toxinlab) +"ig" = (/obj/window{dir = 4},/obj/secloset/animal,/turf/station/floor,/area/toxinlab) +"ih" = (/obj/window{dir = 1},/obj/window{dir = 8},/obj/machinery/dna_scanner,/turf/station/floor,/area/toxinlab) +"ii" = (/obj/window{dir = 1},/obj/machinery/scan_console,/turf/station/floor,/area/toxinlab) +"ij" = (/obj/window{dir = 1},/obj/machinery/computer/dna,/turf/station/floor,/area/toxinlab) +"ik" = (/obj/window{dir = 1},/obj/machinery/restruct,/turf/station/floor,/area/toxinlab) +"il" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/card/data{name = "SE-Scan"; function = "dna_scan"; special = "SE"},/obj/item/weapon/card/data{name = "SI-Scan"; function = "dna_scan"; special = "SI"},/obj/item/weapon/card/data{name = "UE-Scan"; function = "dna_scan"; special = "UE"},/obj/item/weapon/card/data{name = "UI-Scan"; function = "dna_scan"; special = "UI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Scan"},/obj/window{dir = 1},/turf/station/floor,/area/toxinlab) +"im" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area/oxygen_storage) +"in" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area/oxygen_storage) +"io" = (/obj/table{icon_state = "corners"; dir = 9},/obj/window{dir = 8},/turf/station/floor,/area/hallways/eastairlock) +"ip" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table{icon_state = "sides"; dir = 1},/turf/station/floor,/area/hallways/eastairlock) +"iq" = (/obj/landmark/alterations{name = "Experimental Technology"},/obj/window{dir = 4},/turf/station/floor,/area/medical) +"ir" = (/obj/start{name = "Medical Assistant"},/turf/station/floor,/area/medical) +"is" = (/obj/item/weapon/storage/toolbox,/turf/station/floor,/area/medical) +"it" = (/obj/machinery/door/window{icon = 'security.dmi'; r_access = 1; r_lab = 3},/turf/station/floor,/area/medical) +"iu" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/door/window{icon = 'security.dmi'; r_access = 1; r_lab = 3},/turf/station/floor,/area/toxinlab) +"iv" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/toxinlab) +"iw" = (/obj/window,/turf/station/floor,/area/toxinlab) +"ix" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; r_engine = 0; r_access = 1; r_lab = 1},/turf/station/floor,/area/toxinlab) +"iy" = (/obj/start{name = "Medical Researcher"},/obj/window,/turf/station/floor,/area/toxinlab) +"iz" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/window,/turf/station/floor,/area/toxinlab) +"iA" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/toxinlab) +"iB" = (/obj/machinery/door/window,/turf/station/floor,/area/toxinlab) +"iC" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/card/data{name = "Data-Trunicate"; function = "data_trun"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Add"; function = "data_add"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Scramble"; function = "data_scramble"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Input"; function = "data_input"; data = "12"; special = null},/obj/item/weapon/storage/disk_kit/disks2{name = "Data-Controllers"},/turf/station/floor,/area/toxinlab) +"iD" = (/obj/machinery/firealarm{pixel_x = 32},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/hallways/labaccess) +"iE" = (/obj/watertank,/turf/station/floor,/area/oxygen_storage) +"iF" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/hallways/eastairlock) +"iG" = (/obj/machinery/door/window{dir = 8},/turf/station/floor,/area/hallways/eastairlock) +"iH" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/medical) +"iI" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/landmark/alterations{name = "id computer"},/turf/station/floor,/area/medical) +"iJ" = (/obj/machinery/alarm{pixel_y = -32},/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area/medical) +"iK" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/medical) +"iL" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/floor,/area/toxinlab) +"iM" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/mob/monkey,/turf/station/floor,/area/toxinlab) +"iN" = (/obj/window{dir = 8},/obj/window{dir = 1},/obj/machinery/atmoalter/canister/anesthcanister,/turf/station/floor,/area/toxinlab) +"iO" = (/obj/item/weapon/card/data{name = "M-conv-H"; function = "worthless"; data = "SBSWAVVWFWVAZSFBS"; special = "human"},/obj/item/weapon/card/data{name = "H-conv-M"; function = "worthless"; data = "CDAFNSDHE"; special = "monkey"},/obj/window{dir = 1},/turf/station/floor,/area/toxinlab) +"iP" = (/obj/item/weapon/storage/disk_kit/disks,/turf/station/floor,/area/toxinlab) +"iQ" = (/obj/machinery/firealarm{pixel_x = -32},/turf/station/floor,/area/hallways/centralhall) +"iR" = (/obj/start{name = "Research Technician"},/turf/station/floor,/area/hallways/centralhall) +"iS" = (/obj/machinery/door/airlock,/turf/station/floor,/area) +"iT" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/hallways/eastairlock) +"iU" = (/obj/closet,/turf/station/floor,/area/hallways/eastairlock) +"iV" = (/obj/landmark{name = "CTF-wardrobe-Medical"},/turf/station/floor,/area/medical) +"iW" = (/obj/window{dir = 4},/turf/station/floor,/area/medical) +"iX" = (/obj/stool/bed,/turf/station/floor,/area/medical) +"iY" = (/obj/stool/bed,/obj/item/weapon/radio/intercom{pixel_y = -32},/turf/station/floor,/area/medical) +"iZ" = (/obj/machinery/atmoalter/siphs/scrubbers/port,/turf/station/floor,/area/medical) +"ja" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/medical) +"jb" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/sp_start{name = "gooddoggytreat"; desc = "Monkey in Med. Lab."; special = 3},/turf/station/floor,/area/toxinlab) +"jc" = (/obj/window{dir = 8},/obj/machinery/firealarm{pixel_y = -32},/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/toxinlab) +"jd" = (/obj/item/weapon/card/data{name = "DNA-help"; function = "dna_seq"},/turf/station/floor,/area/toxinlab) +"je" = (/obj/item/weapon/card/data{name = "C-Help"; function = "dna_help"},/turf/station/floor,/area/toxinlab) +"jf" = (/obj/item/weapon/card/data{name = "M-Mutate"; function = "data_mutate"; data = "14A"; special = ""},/obj/item/weapon/card/data{name = "S-Mutate"; function = "data_mutate"; data = "CDE"; special = ""},/obj/item/weapon/card/data{name = "A-Mutate"; function = "data_mutate"; data = "AEC"; special = ""},/turf/station/floor,/area/toxinlab) +"jg" = (/obj/start{name = "Research Assistant"},/turf/station/floor,/area/hallways/centralhall) +"jh" = (/turf/station/wall,/area/testlab1) +"ji" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/closet/l3closet,/turf/station/floor,/area/testlab1) +"jj" = (/turf/station/floor,/area/testlab1) +"jk" = (/obj/table,/obj/item/weapon/storage/toolbox,/obj/item/weapon/clothing/glasses/sunglasses,/turf/station/floor,/area/testlab1) +"jl" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/pen,/turf/station/floor,/area/testlab1) +"jm" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/pill_canister/antitoxin,/turf/station/floor,/area/testlab1) +"jn" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/atmoalter/heater,/turf/station/floor,/area/testlab1) +"jo" = (/obj/landmark/alterations{name = "barrier"},/turf/station/wall,/area) +"jp" = (/obj/machinery/door/window{dir = 4},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/medical) +"jq" = (/obj/machinery/door/window{dir = 8},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/medical) +"jr" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "UI-Replace"; function = "dna_replace"; special = "UI"},/obj/item/weapon/card/data{name = "UE-Replace"; function = "dna_replace"; special = "UE"},/obj/item/weapon/card/data{name = "SE-Replace"; function = "dna_replace"; special = "SE"},/obj/item/weapon/card/data{name = "SI-Replace"; function = "dna_replace"; special = "SI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Replace"},/turf/station/floor,/area/toxinlab) +"js" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "Disk-Display"; function = "disk_dis"; data = ""; special = null},/obj/item/weapon/card/data{name = "Disk-Erase"; function = "disk_erase"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Disk-Copy"; function = "disk_copy"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Clear"; function = "data_clear"; data = "12"; special = null},/obj/item/weapon/storage/disk_kit/disks2{name = "Disk-Controllers"},/turf/station/floor,/area/toxinlab) +"jt" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "UE-Human"; data = "493DB249EB6D13236100A37000800AB71"},/obj/item/weapon/card/data{name = "SI-Human"; data = "5BDFE293BA5500F9FFFD500AAFFE"},/obj/item/weapon/card/data{name = "SE-Human"; data = "CDE375C9A6C25A7DBDA50EC05AC6CEB63"},/obj/item/weapon/storage/disk_kit/disks2{name = "Human DNA"},/turf/station/floor,/area/toxinlab) +"ju" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "SE-Monkey"; data = "CDEAF5B90AADBC6BA8033DB0A7FD613FA"},/obj/item/weapon/card/data{name = "SI-Monkey"; data = "2B6696D2B127E5A4"},/obj/item/weapon/card/data{name = "UE-Monkey"; data = "C8FFFE7EC09D80AEDEDB9A5A0B4085B61"},/obj/item/weapon/storage/disk_kit/disks2{name = "Monkey DNA"},/turf/station/floor,/area/toxinlab) +"jv" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "SE-Add"; function = "dna_add"; special = "SE"},/obj/item/weapon/card/data{name = "SI-Add"; function = "dna_add"; special = "SI"},/obj/item/weapon/card/data{name = "UE-Add"; function = "dna_add"; special = "UE"},/obj/item/weapon/card/data{name = "UI-Add"; function = "dna_add"; special = "UI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Add"},/turf/station/floor,/area/toxinlab) +"jw" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "UE-Trunicate"; function = "dna_trun"; data = "32"; special = "UE"},/obj/item/weapon/card/data{name = "SI-Trunicate"; function = "dna_trun"; data = "16"; special = "SI"},/obj/item/weapon/card/data{name = "SE-Trunicate"; function = "dna_trun"; data = "32"; special = "SE"},/obj/item/weapon/card/data{name = "UI-Trunicate"; function = "dna_trun"; data = "12"; special = "UI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Trunicate"},/turf/station/floor,/area/toxinlab) +"jx" = (/obj/machinery/door/window,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/hallways/centralhall) +"jy" = (/obj/machinery/door/airlock{r_access = 1; r_lab = 3},/turf/station/floor,/area/hallways/centralhall) +"jz" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/testlab1) +"jA" = (/obj/item/weapon/clipboard,/turf/station/floor,/area/testlab1) +"jB" = (/obj/machinery/firealarm{pixel_x = -32},/turf/station/floor,/area/hallways/eastairlock) +"jC" = (/obj/secloset/personal,/turf/station/floor,/area/crew_quarters) +"jD" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/secloset/personal,/turf/station/floor,/area/crew_quarters) +"jE" = (/obj/machinery/alarm{pixel_y = 32},/obj/secloset/personal,/turf/station/floor,/area/crew_quarters) +"jF" = (/obj/machinery/computer/card,/turf/station/floor,/area/hallways/loungehall) +"jG" = (/turf/station/floor,/area/hallways/loungehall) +"jH" = (/obj/closet/emcloset,/turf/station/floor,/area/hallways/loungehall) +"jI" = (/turf/station/wall,/area/hallways/loungehall) +"jJ" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/floor,/area/hallways/loungehall) +"jK" = (/obj/machinery/alarm{pixel_y = 32},/turf/station/floor,/area/hallways/loungehall) +"jL" = (/obj/machinery/firealarm{pixel_x = -32},/turf/station/floor,/area/testlab1) +"jM" = (/obj/item/weapon/radio/intercom{pixel_x = 32},/turf/station/floor,/area/testlab1) +"jN" = (/obj/machinery/atmoalter/siphs/scrubbers/port,/turf/station/floor,/area/hallways/eastairlock) +"jO" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/crew_quarters) +"jP" = (/turf/station/floor,/area/crew_quarters) +"jQ" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/crew_quarters) +"jR" = (/obj/machinery/firealarm{pixel_x = 32},/turf/station/floor,/area/crew_quarters) +"jS" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/hallways/loungehall) +"jT" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/hallways/loungehall) +"jU" = (/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area/hallways/loungehall) +"jV" = (/obj/machinery/firealarm{pixel_y = 32},/turf/station/floor,/area/hallways/loungehall) +"jW" = (/obj/item/weapon/storage/toolbox,/turf/station/floor,/area/hallways/loungehall) +"jX" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/turf/station/floor,/area/hallways/loungehall) +"jY" = (/obj/machinery/atmoalter/siphs/fullairsiphon/port,/turf/station/floor,/area/hallways/loungehall) +"jZ" = (/obj/machinery/firealarm{pixel_x = 0; pixel_y = 32},/turf/station/floor,/area/hallways/loungehall) +"ka" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/hallways/loungehall) +"kb" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/testlab1) +"kc" = (/obj/start{name = "Toxin Researcher"},/turf/station/floor,/area/testlab1) +"kd" = (/obj/machinery/door/airlock{r_access = 1; r_lab = 3},/turf/station/floor,/area/hallways/eastairlock) +"ke" = (/obj/machinery/door/firedoor,/obj/machinery/door/window,/turf/station/floor,/area/crew_quarters) +"kf" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/hallways/loungehall) +"kg" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/atmoalter/siphs/scrubbers/port,/turf/station/floor,/area/hallways/loungehall) +"kh" = (/obj/machinery/camera{dir = 8; c_tag = "Toxin Research Lab"},/turf/station/floor,/area/testlab1) +"ki" = (/obj/machinery/atmoalter/siphs/fullairsiphon/port,/turf/station/floor,/area/hallways/eastairlock) +"kj" = (/turf/station/wall,/area/crew_quarters) +"kk" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; r_engine = 0; r_access = 4; r_lab = 4},/turf/station/floor,/area/crew_quarters) +"kl" = (/obj/machinery/door/window,/turf/station/floor,/area/hallways/loungehall) +"km" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/hallways/labaccess) +"kn" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/watertank,/turf/station/floor,/area/testlab1) +"ko" = (/obj/stool/bed,/obj/item/weapon/bedsheet,/turf/station/floor,/area/crew_quarters) +"kp" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/floor,/area/hallways/loungehall) +"kq" = (/turf/station/r_wall,/area/hallways/labaccess) +"kr" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/security) +"ks" = (/obj/item/weapon/extinguisher,/turf/station/floor,/area/testlab1) +"kt" = (/obj/machinery/computer/atmosphere/siphonswitch,/turf/station/floor,/area/testlab1) +"ku" = (/turf/station/r_wall,/area/testlab1) +"kv" = (/obj/table{icon_state = "alone"},/turf/station/floor,/area/crew_quarters) +"kw" = (/obj/rack,/obj/item/weapon/clothing/under/blue,/obj/item/weapon/radio/headset,/turf/station/floor,/area/crew_quarters) +"kx" = (/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor,/area/lounge) +"ky" = (/turf/station/floor,/area/lounge) +"kz" = (/obj/watertank,/turf/station/floor,/area/lounge) +"kA" = (/obj/secloset/security1,/turf/station/floor,/area/security) +"kB" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/clipboard,/obj/item/weapon/paper/courtroom,/turf/station/floor,/area/security) +"kC" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/table,/obj/machinery/recharger,/obj/item/weapon/clothing/glasses/thermal,/turf/station/floor,/area/security) +"kD" = (/obj/secloset/security2,/turf/station/floor,/area/security) +"kE" = (/obj/window{dir = 4},/turf/station/floor,/area/security) +"kF" = (/turf/station/floor,/area/security) +"kG" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/security) +"kH" = (/obj/machinery/firealarm{pixel_x = 32},/obj/window{dir = 4},/turf/station/floor,/area/security) +"kI" = (/turf/station/r_wall,/area/security) +"kJ" = (/obj/machinery/injector{dir = 1},/turf/station/wall,/area/testlab1) +"kK" = (/obj/grille,/obj/window{dir = 8},/obj/window,/obj/window{dir = 1},/turf/station/floor,/area/testlab1) +"kL" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/floor,/area/testlab1) +"kM" = (/obj/closet/emcloset,/turf/station/floor,/area/shuttle_airlock) +"kN" = (/turf/station/floor,/area/shuttle_airlock) +"kO" = (/obj/landmark{name = "Nuclear-Closet"},/turf/station/floor,/area/shuttle_airlock) +"kP" = (/obj/landmark/alterations{name = "prison shuttle"},/turf/station/floor,/area/shuttle_airlock) +"kQ" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/crew_quarters) +"kR" = (/obj/machinery/door/window{dir = 8},/turf/station/floor,/area/crew_quarters) +"kS" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/lounge) +"kT" = (/obj/stool,/turf/station/floor,/area/lounge) +"kU" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/lounge) +"kV" = (/obj/landmark{name = "CTF-wardrobe-Lounge"},/turf/station/floor,/area/lounge) +"kW" = (/turf/station/wall,/area/aircontrol) +"kX" = (/obj/machinery/door/airlock{r_air = 1},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/aircontrol) +"kY" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/secloset/security1,/turf/station/floor,/area/security) +"kZ" = (/obj/machinery/firealarm{pixel_y = 32},/turf/station/floor,/area/security) +"la" = (/obj/start{name = "Forensic Technician"},/turf/station/floor,/area/security) +"lb" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/security) +"lc" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/security) +"ld" = (/obj/table,/obj/item/weapon/game_kit,/turf/station/floor,/area/security) +"le" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/closet/wardrobe/orange,/turf/station/floor,/area/security) +"lf" = (/obj/machinery/door/airlock{r_access = 1; r_lab = 2},/turf/station/floor,/area/testlab1) +"lg" = (/obj/landmark/alterations{name = "Experimental Technology"},/turf/station/floor,/area/testlab1) +"lh" = (/obj/machinery/alarm{pixel_x = 32},/obj/landmark/alterations{name = "Experimental Technology"},/turf/station/floor,/area/testlab1) +"li" = (/obj/item/weapon/radio/intercom{pixel_x = -32},/turf/station/floor,/area/shuttle_airlock) +"lj" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/shuttle_airlock) +"lk" = (/obj/closet/wardrobe,/turf/station/floor,/area/crew_quarters) +"ll" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/closet/wardrobe/mixed,/turf/station/floor,/area/crew_quarters) +"lm" = (/obj/closet/wardrobe/mixed,/turf/station/floor,/area/crew_quarters) +"ln" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/table{icon_state = "alone"},/obj/bedsheetbin,/turf/station/floor,/area/crew_quarters) +"lo" = (/obj/closet,/turf/station/floor,/area/crew_quarters) +"lp" = (/obj/machinery/firealarm{pixel_x = 32},/obj/landmark/alterations{name = "id computer"},/turf/station/floor,/area/crew_quarters) +"lq" = (/obj/machinery/camera{dir = 4; c_tag = "Lounge/Meeting Area"},/turf/station/floor,/area/lounge) +"lr" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/paper/Internal,/obj/item/weapon/paper/sop,/obj/item/weapon/wirecutters,/obj/item/weapon/wrapping_paper,/turf/station/floor,/area/lounge) +"ls" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/paper/Toxin,/obj/item/weapon/paper/sop,/obj/item/weapon/paper/jobs,/obj/item/weapon/pen,/obj/landmark/alterations{name = "recharger"},/turf/station/floor,/area/lounge) +"lt" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/turf/station/floor,/area/airintake) +"lu" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/obj/window{dir = 4},/turf/station/floor,/area/airintake) +"lv" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/landmark{name = "CTF-wardrobe-Atmo"},/turf/station/floor,/area/aircontrol) +"lw" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark{name = "CTF-wardrobe-Atmo"},/turf/station/floor,/area/aircontrol) +"lx" = (/turf/station/floor,/area/aircontrol) +"ly" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/turf/station/floor,/area/aircontrol) +"lz" = (/turf/station/r_wall,/area/aircontrol) +"lA" = (/obj/start{name = "Security Officer"},/turf/station/floor,/area/security) +"lB" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; r_engine = 0; r_access = 3; r_lab = 0},/turf/station/floor,/area/security) +"lC" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; r_engine = 0; r_access = 3; r_lab = 0},/turf/station/floor,/area/security) +"lD" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/turf/station/floor,/area/security) +"lE" = (/obj/item/weapon/bedsheet,/turf/station/floor,/area/security) +"lF" = (/obj/stool/bed,/turf/station/floor,/area/security) +"lG" = (/obj/machinery/atmoalter/siphs/scrubbers/port,/turf/station/floor,/area/testlab1) +"lH" = (/obj/machinery/door/airlock,/turf/station/floor,/area/testlab1) +"lI" = (/obj/machinery/firealarm{pixel_x = -32},/turf/station/floor,/area/shuttle_airlock) +"lJ" = (/obj/landmark{name = "CTF-rogue"},/turf/station/floor,/area/shuttle_airlock) +"lK" = (/obj/landmark{name = "Nuclear-Bomb"},/turf/station/floor,/area/shuttle_airlock) +"lL" = (/obj/machinery/camera{dir = 4; c_tag = "Crew Sleeping Area"},/turf/station/floor,/area/sleep_area) +"lM" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/sleep_area) +"lN" = (/turf/station/floor,/area/sleep_area) +"lO" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/sleep_area) +"lP" = (/obj/item/weapon/radio/intercom{pixel_x = 32},/turf/station/floor,/area/sleep_area) +"lQ" = (/obj/item/weapon/radio/intercom{pixel_x = -32},/turf/station/floor,/area/lounge) +"lR" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/paper_bin,/obj/item/weapon/paper/Internal,/obj/item/weapon/paper/Map,/obj/item/weapon/paper/jobs,/obj/item/weapon/paper/sop,/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/turf/station/floor,/area/lounge) +"lS" = (/obj/table{icon_state = "sides"; dir = 4},/obj/item/weapon/paper/Map,/obj/item/weapon/paper/sop,/obj/item/weapon/radio/signaler,/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/lounge) +"lT" = (/turf/station/floor{oxygen = 0},/area/airintake) +"lU" = (/obj/window{dir = 4},/turf/station/floor{oxygen = 0},/area/airintake) +"lV" = (/obj/machinery/door/airlock{r_air = 1},/turf/station/floor,/area/aircontrol) +"lW" = (/obj/start{name = "Staff Assistant"},/turf/station/floor,/area/security) +"lX" = (/obj/window{dir = 1},/turf/station/floor,/area/security) +"lY" = (/obj/machinery/camera{dir = 4; c_tag = "Prison"},/turf/station/floor,/area/security) +"lZ" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/stool/bed,/turf/station/floor,/area/security) +"ma" = (/obj/machinery/camera{dir = 4; c_tag = "Shuttle Bay"},/turf/station/floor,/area/shuttle_airlock) +"mb" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/shuttle_airlock) +"mc" = (/obj/stool/bed,/turf/station/floor,/area/sleep_area) +"md" = (/obj/landmark{name = "CTF-supply-Lounge"},/turf/station/floor,/area/lounge) +"me" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/paper/Toxin,/obj/item/weapon/paper/sop,/obj/manifest,/turf/station/floor,/area/lounge) +"mf" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/paper/Internal,/obj/item/weapon/paper/sop,/obj/item/weapon/paper/jobs,/obj/item/weapon/game_kit,/turf/station/floor,/area/lounge) +"mg" = (/obj/landmark/alterations{name = "Experimental Technology"},/turf/station/floor,/area/lounge) +"mh" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/floor,/area/airintake) +"mi" = (/obj/machinery/atmoalter/siphs/scrubbers,/obj/window{dir = 4},/turf/station/floor,/area/airintake) +"mj" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/floor,/area/aircontrol) +"mk" = (/obj/machinery/computer/secure_data,/turf/station/floor,/area/security) +"ml" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/turf/station/floor,/area/security) +"mm" = (/obj/item/weapon/storage/trackimp_kit,/turf/station/floor,/area/security) +"mn" = (/obj/item/weapon/paper_bin,/turf/station/floor,/area/security) +"mo" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/storage/toolbox,/obj/item/weapon/clothing/ears/earmuffs,/turf/station/floor,/area/security) +"mp" = (/obj/machinery/sec_lock{pixel_x = 32},/obj/window{dir = 4},/turf/station/floor,/area/security) +"mq" = (/obj/machinery/atmoalter/siphs/fullairsiphon/port,/turf/station/floor,/area/testlab1) +"mr" = (/obj/grille,/turf/station/floor,/area/testlab1) +"ms" = (/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor,/area/testlab1) +"mt" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/landmark/alterations{name = "Prisoners Wardrobe"},/turf/station/floor,/area/shuttle_airlock) +"mu" = (/obj/landmark/alterations{name = "Prisoners Wardrobe"},/turf/station/floor,/area/shuttle_airlock) +"mv" = (/obj/item/weapon/storage/backpack,/turf/station/floor,/area/lounge) +"mw" = (/turf/station/floor,/area/airintake) +"mx" = (/obj/window{dir = 4},/obj/window{dir = 8},/obj/machinery/alarm,/turf/station/floor,/area/airintake) +"my" = (/obj/machinery/alarm,/turf/station/floor,/area/airintake) +"mz" = (/obj/window{dir = 4},/turf/station/floor,/area/airintake) +"mA" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/infra,/obj/item/weapon/infra,/obj/item/weapon/radio/signaler,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/prox_sensor,/obj/item/weapon/prox_sensor,/obj/item/weapon/clipboard,/turf/station/floor,/area/security) +"mB" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/infra,/obj/item/weapon/infra,/obj/item/weapon/radio/signaler,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/prox_sensor,/obj/item/weapon/prox_sensor,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/dropper,/turf/station/floor,/area/security) +"mC" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/infra,/obj/item/weapon/infra,/obj/item/weapon/radio/signaler,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/prox_sensor,/obj/item/weapon/prox_sensor,/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/security) +"mD" = (/obj/machinery/computer/security,/turf/station/floor,/area/security) +"mE" = (/obj/machinery/computer/card,/turf/station/floor,/area/security) +"mF" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/closet/wardrobe/red,/turf/station/floor,/area/security) +"mG" = (/obj/closet/wardrobe/orange,/turf/station/floor,/area/security) +"mH" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; r_engine = 0; r_access = 4; r_lab = 4},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/security) +"mI" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; r_engine = 0; r_access = 4; r_lab = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/security) +"mJ" = (/obj/grille,/obj/item/weapon/wirecutters,/obj/item/weapon/wrench,/obj/item/weapon/weldingtool,/turf/station/floor,/area) +"mK" = (/obj/window{dir = 10},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/shuttle_airlock) +"mL" = (/obj/machinery/door/airlock,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/shuttle_airlock) +"mM" = (/obj/grille,/obj/window,/obj/window{dir = 1},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/shuttle_airlock) +"mN" = (/obj/machinery/door/window,/turf/station/floor,/area) +"mO" = (/obj/landmark{name = "CTF-base-Lounge"},/turf/station/floor,/area/lounge) +"mP" = (/obj/grille,/turf/station/floor{oxygen = 0},/area/airintake) +"mQ" = (/obj/window{dir = 4},/obj/grille,/turf/station/floor{oxygen = 0},/area/airintake) +"mR" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/aircontrol) +"mS" = (/obj/window{dir = 4},/turf/station/floor,/area) +"mT" = (/obj/machinery/door/firedoor,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/shuttle_airlock) +"mU" = (/obj/window{dir = 8},/turf/station/floor,/area) +"mV" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area) +"mW" = (/obj/window,/turf/station/floor{oxygen = 0},/area/airintake) +"mX" = (/obj/window{dir = 4},/obj/window,/turf/station/floor{oxygen = 0},/area/airintake) +"mY" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/aircontrol) +"mZ" = (/obj/landmark/alterations{name = "Experimental Technology"},/turf/station/floor,/area/aircontrol) +"na" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark/alterations{name = "Experimental Technology"},/turf/station/floor,/area/aircontrol) +"nb" = (/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/aircontrol) +"nc" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/aircontrol) +"nd" = (/obj/window{dir = 10},/turf/station/floor,/area/shuttle_airlock) +"ne" = (/obj/machinery/door/airlock,/turf/station/floor,/area/shuttle_airlock) +"nf" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/extinguisher,/turf/station/floor,/area) +"ng" = (/obj/machinery/computer/atmosphere/siphonswitch,/obj/window{dir = 4},/turf/station/floor,/area/airintake) +"nh" = (/obj/machinery/camera{dir = 8; c_tag = "Atmo. Gas Storage"},/turf/station/floor,/area/aircontrol) +"ni" = (/turf/space,/area/shuttle) +"nj" = (/obj/machinery/camera{dir = 4; c_tag = "Disaster Response Center"},/turf/station/floor,/area) +"nk" = (/obj/stool/chair{dir = 1},/turf/station/floor,/area/aircontrol) +"nl" = (/obj/landmark{name = "CTF-base-Atmo"},/turf/station/floor,/area/aircontrol) +"nm" = (/obj/landmark{name = "CTF-supply-Atmo"},/turf/station/floor,/area/aircontrol) +"nn" = (/obj/machinery/door/airlock,/turf/station/floor,/area/aircontrol) +"no" = (/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area/aircontrol) +"np" = (/obj/machinery/camera{dir = 4; c_tag = "Atmospheric Control Room"},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/radio/intercom{pixel_x = -32},/turf/station/floor,/area/aircontrol) +"nq" = (/obj/start{name = "Atmospheric Technician"},/turf/station/floor,/area/aircontrol) +"nr" = (/obj/window{dir = 1},/obj/window{dir = 8},/obj/watertank,/turf/station/floor,/area/aircontrol) +"ns" = (/obj/window{dir = 1},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/aircontrol) +"nt" = (/obj/window{dir = 1},/obj/item/weapon/clothing/mask/gasmask,/turf/station/floor,/area/aircontrol) +"nu" = (/obj/window{dir = 1},/obj/machinery/dispenser,/turf/station/floor,/area/aircontrol) +"nv" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/aircontrol) +"nw" = (/obj/machinery/camera{dir = 8; c_tag = "Food Preparation Area"},/turf/station/floor,/area) +"nx" = (/obj/window{dir = 1},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/aircontrol) +"ny" = (/obj/window{dir = 1},/turf/station/floor,/area/aircontrol) +"nz" = (/obj/window{dir = 1},/obj/weldfueltank,/turf/station/floor,/area/aircontrol) +"nA" = (/obj/window{dir = 4},/obj/window{dir = 1},/obj/weldfueltank,/turf/station/floor,/area/aircontrol) +"nB" = (/obj/window{dir = 8},/turf/station/floor,/area/aircontrol) +"nC" = (/obj/item/weapon/clothing/under/yellow,/obj/item/weapon/clothing/shoes/orange,/turf/station/floor,/area/aircontrol) +"nD" = (/obj/machinery/door/airlock{r_air = 1; r_engine = 1; r_access = 1},/turf/station/floor,/area) +"nE" = (/obj/machinery/door/window,/turf/station/floor,/area/aircontrol) +"nF" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/paper_bin,/turf/station/floor,/area/aircontrol) +"nG" = (/obj/item/weapon/clipboard,/turf/station/floor,/area/aircontrol) +"nH" = (/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/turf/station/floor,/area/aircontrol) +"nI" = (/obj/machinery/atmoalter/siphs/scrubbers/port,/turf/station/floor,/area/aircontrol) +"nJ" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/storage/firstaid/toxin,/turf/station/floor,/area) +"nK" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/aircontrol) +"nL" = (/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor,/area/aircontrol) +"nM" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor,/area/aircontrol) +"nN" = (/obj/window{dir = 8},/obj/landmark/alterations{name = "id computer"},/turf/station/floor,/area/aircontrol) +"nO" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/wrench,/obj/item/weapon/analyzer,/obj/item/weapon/radio,/obj/item/weapon/screwdriver,/obj/item/weapon/crowbar,/obj/landmark/alterations{name = "recharger"},/turf/station/floor,/area/aircontrol) +"nP" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/wrench,/obj/item/weapon/analyzer,/obj/item/weapon/screwdriver,/obj/item/weapon/extinguisher,/obj/item/weapon/crowbar,/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/aircontrol) +"nQ" = (/obj/weldfueltank,/turf/station/floor,/area/aircontrol) +"nR" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/wrench,/obj/item/weapon/analyzer,/obj/item/weapon/radio,/obj/item/weapon/screwdriver,/turf/station/floor,/area/aircontrol) +"nS" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/wrench,/obj/item/weapon/analyzer,/obj/item/weapon/screwdriver,/obj/item/weapon/extinguisher,/turf/station/floor,/area/aircontrol) +"nT" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area) +"nU" = (/obj/machinery/atmoalter/siphs/fullairsiphon/port,/turf/station/floor,/area/aircontrol) +"nV" = (/obj/rack,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/radio/headset,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/meson,/obj/item/weapon/clothing/glasses/sunglasses,/turf/station/floor,/area) +"nW" = (/obj/rack,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/radio/headset,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/sunglasses,/turf/station/floor,/area) +"nX" = (/obj/machinery/dispenser{o2tanks = 20; pltanks = 0},/turf/station/floor,/area) +"nY" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/storage/toolbox,/turf/station/floor,/area) +"nZ" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/storage/toolbox,/turf/station/floor,/area) +"oa" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/storage/firstaid/fire,/turf/station/floor,/area) +"ob" = (/obj/grille,/obj/item/weapon/hand_tele,/turf/station/floor,/area) +"oc" = (/obj/grille,/obj/item/weapon/tank/oxygentank,/turf/station/floor,/area) +"od" = (/obj/machinery/dispenser,/turf/station/floor,/area) +"oe" = (/obj/closet/emcloset,/turf/station/floor,/area) +"of" = (/turf/station/floor{oxygen = 0},/area) +"og" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/mob/monkey,/turf/station/floor,/area) +"oh" = (/obj/table{icon_state = "sides"; dir = 4},/obj/item/weapon/card/data{name = "SE-Scan"; function = "dna_scan"; special = "SE"},/obj/item/weapon/card/data{name = "SI-Scan"; function = "dna_scan"; special = "SI"},/obj/item/weapon/card/data{name = "UE-Scan"; function = "dna_scan"; special = "UE"},/obj/item/weapon/card/data{name = "UI-Scan"; function = "dna_scan"; special = "UI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Scan"},/turf/station/floor,/area) +"oi" = (/obj/item/weapon/storage/disk_kit/disks,/turf/station/floor,/area) +"oj" = (/obj/machinery/dna_scanner,/turf/station/floor,/area) +"ok" = (/obj/machinery/scan_console,/turf/station/floor,/area) +"ol" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/secloset/animal,/turf/station/floor,/area) +"om" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/card/data{name = "Data-Trunicate"; function = "data_trun"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Add"; function = "data_add"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Scramble"; function = "data_scramble"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Input"; function = "data_input"; data = "12"; special = null},/obj/item/weapon/storage/disk_kit/disks2{name = "Data-Controllers"},/turf/station/floor,/area) +"on" = (/obj/item/weapon/game_kit,/turf/station/floor,/area) +"oo" = (/obj/machinery/computer/pod{name = "Mass Driver"; dir = 4; id = 5},/turf/station/floor{oxygen = 0},/area) +"op" = (/obj/grille,/obj/window{dir = 8},/obj/window{dir = 4},/turf/station/floor,/area) +"oq" = (/obj/machinery/computer/dna,/turf/station/floor,/area) +"or" = (/obj/machinery/door/window{icon = 'security.dmi'; r_engine = 0; r_access = 1; r_lab = 1},/turf/station/floor,/area) +"os" = (/obj/item/weapon/flasks/oxygen,/obj/item/weapon/flasks/oxygen,/obj/item/weapon/flasks/oxygen,/turf/station/floor,/area) +"ot" = (/obj/item/weapon/flasks/coolant,/obj/item/weapon/flasks/coolant,/obj/item/weapon/flasks/coolant,/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area) +"ou" = (/obj/machinery/mass_driver{dir = 4; id = 5},/obj/closet,/turf/station/floor{oxygen = 0},/area) +"ov" = (/mob/monkey,/turf/station/floor,/area) +"ow" = (/obj/grille,/obj/window{dir = 8},/obj/window{dir = 4},/obj/window,/turf/station/floor,/area) +"ox" = (/obj/item/weapon/card/data{name = "M-Mutate"; function = "data_mutate"; data = "14A"; special = ""},/obj/item/weapon/card/data{name = "S-Mutate"; function = "data_mutate"; data = "CDE"; special = ""},/obj/item/weapon/card/data{name = "A-Mutate"; function = "data_mutate"; data = "AEC"; special = ""},/turf/station/floor,/area) +"oy" = (/obj/machinery/restruct,/turf/station/floor,/area) +"oz" = (/obj/item/weapon/flasks/plasma,/obj/item/weapon/flasks/plasma,/obj/item/weapon/flasks/plasma,/turf/station/floor,/area) +"oA" = (/obj/item/weapon/card/data{name = "DNA-help"; function = "dna_seq"},/turf/station/floor,/area) +"oB" = (/obj/machinery/sleeper,/turf/station/floor,/area) +"oC" = (/obj/machinery/computer/sleep_console,/turf/station/floor,/area) +"oD" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/syringe,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/s_tox,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/card/id{name = "Zach Licton's ID Card (1>1-0-0)"; access_level = 1; lab_access = 1; engine_access = 0; air_access = 0; registered = "Zach Licton"; assignment = "DNA Researcher"},/obj/item/weapon/pen,/turf/station/floor,/area) +"oE" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/syringe,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/s_tox,/obj/item/weapon/bottle/antitoxins,/turf/station/floor,/area) +"oF" = (/obj/machinery/freezer,/turf/station/floor,/area) +"oG" = (/obj/machinery/pipes/flexipipe,/obj/item/weapon/tank/anesthetic,/turf/station/floor,/area) +"oH" = (/obj/machinery/cryo_cell,/turf/station/floor,/area) +"oI" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/rack,/obj/item/weapon/clothing/under/white,/obj/item/weapon/clothing/mask/surgical,/obj/item/weapon/clothing/gloves/latex,/obj/item/weapon/clothing/shoes/white,/turf/station/floor,/area) +"oJ" = (/obj/grille,/obj/window{dir = 8},/obj/window{dir = 4},/obj/window{dir = 1},/turf/station/floor,/area) +"oK" = (/obj/item/weapon/card/data{name = "M-conv-H"; function = "worthless"; data = "SBSWAVVWFWVAZSFBS"; special = "human"},/obj/item/weapon/card/data{name = "H-conv-M"; function = "worthless"; data = "CDAFNSDHE"; special = "monkey"},/turf/station/floor,/area) +"oL" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/card/data{name = "C-Help"; function = "dna_help"},/turf/station/floor,/area) +"oM" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/syringe,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/s_tox,/obj/item/weapon/bottle/antitoxins,/turf/station/floor,/area) +"oN" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/healthanalyzer,/obj/item/weapon/bottle/r_ch_cough,/obj/item/weapon/bottle/r_epil,/turf/station/floor,/area) +"oO" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/mob/monkey,/turf/station/floor,/area) +"oP" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/clothing/glasses/regular,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/mask/m_mask,/turf/station/floor,/area) +"oQ" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "UI-Replace"; function = "dna_replace"; special = "UI"},/obj/item/weapon/card/data{name = "UE-Replace"; function = "dna_replace"; special = "UE"},/obj/item/weapon/card/data{name = "SE-Replace"; function = "dna_replace"; special = "SE"},/obj/item/weapon/card/data{name = "SI-Replace"; function = "dna_replace"; special = "SI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Replace"},/turf/station/floor,/area) +"oR" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "Disk-Display"; function = "disk_dis"; data = ""; special = null},/obj/item/weapon/card/data{name = "Disk-Erase"; function = "disk_erase"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Disk-Copy"; function = "disk_copy"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Clear"; function = "data_clear"; data = "12"; special = null},/obj/item/weapon/storage/disk_kit/disks2{name = "Disk-Controllers"},/turf/station/floor,/area) +"oS" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "UE-Human"; data = "493DB249EB6D13236100A37000800AB71"},/obj/item/weapon/card/data{name = "SI-Human"; data = "5BDFE293BA5500F9FFFD500AAFFE"},/obj/item/weapon/card/data{name = "SE-Human"; data = "CDE375C9A6C25A7DBDA50EC05AC6CEB63"},/obj/item/weapon/storage/disk_kit/disks2{name = "Human DNA"},/turf/station/floor,/area) +"oT" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "SE-Monkey"; data = "CDEAF5B90AADBC6BA8033DB0A7FD613FA"},/obj/item/weapon/card/data{name = "SI-Monkey"; data = "2B6696D2B127E5A4"},/obj/item/weapon/card/data{name = "UE-Monkey"; data = "C8FFFE7EC09D80AEDEDB9A5A0B4085B61"},/obj/item/weapon/storage/disk_kit/disks2{name = "Monkey DNA"},/turf/station/floor,/area) +"oU" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "SE-Add"; function = "dna_add"; special = "SE"},/obj/item/weapon/card/data{name = "SI-Add"; function = "dna_add"; special = "SI"},/obj/item/weapon/card/data{name = "UE-Add"; function = "dna_add"; special = "UE"},/obj/item/weapon/card/data{name = "UI-Add"; function = "dna_add"; special = "UI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Add"},/turf/station/floor,/area) +"oV" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "UE-Trunicate"; function = "dna_trun"; data = "32"; special = "UE"},/obj/item/weapon/card/data{name = "SI-Trunicate"; function = "dna_trun"; data = "16"; special = "SI"},/obj/item/weapon/card/data{name = "SE-Trunicate"; function = "dna_trun"; data = "32"; special = "SE"},/obj/item/weapon/card/data{name = "UI-Trunicate"; function = "dna_trun"; data = "12"; special = "UI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Trunicate"},/turf/station/floor,/area) +"oW" = (/obj/sp_start{name = "zjm7891"; desc = "Researcher on Med. Sat."; special = null},/turf/station/floor,/area) +"oX" = (/obj/item/weapon/radio/beacon,/obj/sp_start{name = "phoenixman"; desc = "Researcher on Med. Sat."},/turf/station/floor,/area) +"oY" = (/obj/machinery/pipes/flexipipe,/turf/station/floor,/area) +"oZ" = (/obj/sp_start{name = "exadv1"; desc = "Researcher on Med. Sat."; special = null},/turf/station/floor,/area) +"pa" = (/obj/sp_start{name = "ryanfs"; desc = "Researcher on Med. Sat."; special = null},/turf/station/floor,/area) +"pb" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area) +"pc" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/storage/firstaid/toxin,/turf/station/floor,/area) +"pd" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/storage/firstaid/fire,/turf/station/floor,/area) +"pe" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/bottle/s_tox,/turf/station/floor,/area) +"pf" = (/obj/grille,/obj/window{dir = 8},/obj/window{dir = 1},/turf/station/floor,/area) +"pg" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/floor,/area) +"ph" = (/obj/grille,/obj/window{dir = 4},/obj/window{dir = 1},/turf/station/floor,/area) +"pi" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/extinguisher,/obj/stool/bed,/turf/station/floor,/area) +"pj" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/bedsheetbin,/turf/station/floor,/area) +"pk" = (/obj/secloset/personal,/obj/window{dir = 8},/turf/station/floor,/area) +"pl" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/secloset/security1{allowed = "Prison Security,Prison Warden,Security Officer,Captain,Head of Personnel,Head of Research,Secret Base"},/turf/station/floor,/area) +"pm" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/secloset/highsec{allowed = "Captain,Head of Personnel,Head of Research,Secret Base"},/turf/station/floor,/area) +"pn" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/closet/l3closet,/turf/station/floor,/area) +"po" = (/obj/closet/l3closet,/turf/station/floor,/area) +"pp" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/card/data{name = "UI-Replace"; function = "dna_replace"; special = "UI"},/obj/item/weapon/card/data{name = "UE-Replace"; function = "dna_replace"; special = "UE"},/obj/item/weapon/card/data{name = "SE-Replace"; function = "dna_replace"; special = "SE"},/obj/item/weapon/card/data{name = "SI-Replace"; function = "dna_replace"; special = "SI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Replace"},/turf/station/floor,/area) +"pq" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/card/data{name = "Disk-Display"; function = "disk_dis"; data = ""; special = null},/obj/item/weapon/card/data{name = "Disk-Erase"; function = "disk_erase"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Disk-Copy"; function = "disk_copy"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Clear"; function = "data_clear"; data = "12"; special = null},/obj/item/weapon/storage/disk_kit/disks2{name = "Disk-Controllers"},/turf/station/floor,/area) +"pr" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/card/data{name = "UE-Human"; data = "493DB249EB6D13236100A37000800AB71"},/obj/item/weapon/card/data{name = "SI-Human"; data = "5BDFE293BA5500F9FFFD500AAFFE"},/obj/item/weapon/card/data{name = "SE-Human"; data = "CDE375C9A6C25A7DBDA50EC05AC6CEB63"},/obj/item/weapon/storage/disk_kit/disks2{name = "Human DNA"},/turf/station/floor,/area) +"ps" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/card/data{name = "SE-Monkey"; data = "CDEAF5B90AADBC6BA8033DB0A7FD613FA"},/obj/item/weapon/card/data{name = "SI-Monkey"; data = "2B6696D2B127E5A4"},/obj/item/weapon/card/data{name = "UE-Monkey"; data = "C8FFFE7EC09D80AEDEDB9A5A0B4085B61"},/obj/item/weapon/storage/disk_kit/disks2{name = "Monkey DNA"},/turf/station/floor,/area) +"pt" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/card/data{name = "SE-Add"; function = "dna_add"; special = "SE"},/obj/item/weapon/card/data{name = "SI-Add"; function = "dna_add"; special = "SI"},/obj/item/weapon/card/data{name = "UE-Add"; function = "dna_add"; special = "UE"},/obj/item/weapon/card/data{name = "UI-Add"; function = "dna_add"; special = "UI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Add"},/turf/station/floor,/area) +"pu" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/card/data{name = "UE-Trunicate"; function = "dna_trun"; data = "32"; special = "UE"},/obj/item/weapon/card/data{name = "SI-Trunicate"; function = "dna_trun"; data = "16"; special = "SI"},/obj/item/weapon/card/data{name = "SE-Trunicate"; function = "dna_trun"; data = "32"; special = "SE"},/obj/item/weapon/card/data{name = "UI-Trunicate"; function = "dna_trun"; data = "12"; special = "UI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Trunicate"},/turf/station/floor,/area) +"pv" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/locator,/turf/station/floor,/area) +"pw" = (/obj/stool/bed,/turf/station/floor,/area) +"px" = (/obj/item/weapon/paper_bin,/turf/station/floor,/area) +"py" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/window{dir = 8},/turf/station/floor,/area) +"pz" = (/obj/item/weapon/storage/handcuff_kit,/turf/station/floor,/area) +"pA" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/storage/handcuff_kit,/turf/station/floor,/area) +"pB" = (/obj/machinery/door/window{dir = 8},/turf/station/floor,/area) +"pC" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/computer/dna,/turf/station/floor,/area) +"pD" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/closet/wardrobe/mixed,/obj/window,/turf/station/floor,/area) +"pE" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/door/window{dir = 4},/turf/station/floor,/area) +"pF" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table,/obj/item/weapon/pen,/obj/window,/turf/station/floor,/area) +"pG" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/clothing/mask/m_mask,/turf/station/floor,/area) +"pH" = (/obj/item/weapon/clothing/mask/m_mask,/turf/station/floor,/area) +"pI" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/storage/backpack,/obj/item/weapon/storage/flashbang_kit,/turf/station/floor,/area) +"pJ" = (/obj/item/weapon/storage/backpack,/obj/item/weapon/storage/flashbang_kit,/turf/station/floor,/area) +"pK" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/card/data{name = "SE-Scan"; function = "dna_scan"; special = "SE"},/obj/item/weapon/card/data{name = "SI-Scan"; function = "dna_scan"; special = "SI"},/obj/item/weapon/card/data{name = "UE-Scan"; function = "dna_scan"; special = "UE"},/obj/item/weapon/card/data{name = "UI-Scan"; function = "dna_scan"; special = "UI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Scan"},/turf/station/floor,/area) +"pL" = (/obj/item/weapon/infra_sensor,/turf/station/floor,/area) +"pM" = (/obj/item/weapon/wrapping_paper,/turf/station/floor,/area) +"pN" = (/obj/rack,/obj/item/weapon/clothing/suit/sp_suit,/obj/item/weapon/clothing/head/s_helmet,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/sunglasses,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/under/black,/obj/item/weapon/tank/jetpack,/obj/item/weapon/radio/headset,/turf/station/floor,/area) +"pO" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/rack,/obj/item/weapon/clothing/suit/sp_suit,/obj/item/weapon/clothing/head/s_helmet,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/sunglasses,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/under/black,/obj/item/weapon/tank/jetpack,/obj/item/weapon/radio/headset,/turf/station/floor,/area) +"pP" = (/obj/rack,/obj/item/weapon/clothing/suit/swat_suit,/obj/item/weapon/clothing/head/swat_hel,/obj/item/weapon/clothing/shoes/swat,/obj/item/weapon/clothing/gloves/swat,/obj/item/weapon/gun/energy/taser_gun,/obj/item/weapon/clothing/mask/robot/swat,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/glasses/thermal,/obj/item/weapon/radio/headset,/turf/station/floor,/area) +"pQ" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/card/data{name = "Data-Trunicate"; function = "data_trun"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Add"; function = "data_add"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Scramble"; function = "data_scramble"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Input"; function = "data_input"; data = "12"; special = null},/obj/item/weapon/storage/disk_kit/disks2{name = "Data-Controllers"},/turf/station/floor,/area) +"pR" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/dropper,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/pill_canister/epilepsy,/obj/item/weapon/pill_canister/cough,/turf/station/floor,/area) +"pS" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/clipboard,/obj/item/weapon/pen,/obj/item/weapon/m_pill/superpill,/turf/station/floor,/area) +"pT" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/syringe,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/pill_canister/Tourette,/turf/station/floor,/area) +"pU" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/syndicate_uplink,/turf/station/floor,/area) +"pV" = (/obj/machinery/recharger,/turf/station/floor,/area) +"pW" = (/obj/closet/wardrobe/white,/turf/station/floor,/area) +"pX" = (/obj/secloset/animal,/turf/station/floor,/area) +"pY" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/sleeper,/turf/station/floor,/area) +"pZ" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/paper_bin,/turf/station/floor,/area) +"qa" = (/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/turf/station/floor,/area) +"qb" = (/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/turf/station/floor,/area) +"qc" = (/obj/item/weapon/sheet/r_metal,/obj/item/weapon/sheet/r_metal,/turf/station/floor,/area) +"qd" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/suit/firesuit,/turf/station/floor,/area) +"qe" = (/obj/item/weapon/clothing/suit/straight_jacket,/turf/station/floor,/area) +"qf" = (/obj/item/weapon/clothing/glasses/meson,/obj/item/weapon/clothing/glasses/thermal,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/ears/earmuffs,/obj/item/weapon/clothing/ears/earmuffs,/turf/station/floor,/area) +"qg" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/clothing/glasses/meson,/obj/item/weapon/clothing/glasses/thermal,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/ears/earmuffs,/obj/item/weapon/clothing/ears/earmuffs,/turf/station/floor,/area) +"qh" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/dispenser,/turf/station/floor,/area) +"qi" = (/obj/item/weapon/extinguisher,/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area) +"qj" = (/obj/item/weapon/brutepack,/turf/station/floor,/area) +"qk" = (/obj/item/weapon/clothing/under/yellow,/obj/item/weapon/clothing/under/orange,/turf/station/floor,/area) +"ql" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/dispenser,/turf/station/floor,/area) +"qm" = (/obj/machinery/atmoalter/heater,/turf/station/floor,/area) +"qn" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/sleeper,/turf/station/floor,/area) +"qo" = (/obj/item/weapon/card/id{name = "Secret Base Locker Access"; access_level = 0; lab_access = 0; engine_access = 0; air_access = 0; registered = "Secret Base Use Only"; assignment = "Secret Base"},/turf/station/floor,/area) +"qp" = (/obj/secloset/security2{allowed = "Prison Security,Prison Warden,Forensic Technician,Security Officer,Captain,Head of Personnel,Head of Research,Secret Base"},/turf/station/floor,/area) +"qq" = (/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area) +"qr" = (/obj/item/weapon/flasks/coolant,/obj/item/weapon/flasks/oxygen,/obj/item/weapon/flasks/plasma,/turf/station/floor,/area) +"qs" = (/obj/item/weapon/ointment,/turf/station/floor,/area) +"qt" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/computer/med_data,/turf/station/floor,/area) +"qu" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/sp_start{name = "exadv1"; desc = "Secret Base"; special = null},/turf/station/floor,/area) +"qv" = (/obj/sp_start{name = "soraku"; desc = "Secret Base"; special = null},/turf/station/floor,/area) +"qw" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area) +"qx" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/brutepack,/turf/station/floor,/area) +"qy" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/pipes/flexipipe,/turf/station/floor,/area) +"qz" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/cryo_cell,/turf/station/floor,/area) +"qA" = (/obj/item/weapon/disk/nuclear,/turf/station/floor,/area) +"qB" = (/obj/machinery/nuclearbomb{icon_state = "nuclearbomb1"; anchored = 1; extended = 1},/turf/station/floor,/area) +"qC" = (/obj/sp_start{name = "epox"; desc = "Secret Base"; special = null},/turf/station/floor,/area) +"qD" = (/obj/item/weapon/radio/beacon,/turf/station/floor,/area) +"qE" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area) +"qF" = (/obj/item/weapon/storage/firstaid/syringes,/turf/station/floor,/area) +"qG" = (/obj/machinery/computer/security,/turf/station/floor,/area) +"qH" = (/obj/sp_start{name = "thiefjack"; desc = "Secret Base"; special = null},/turf/station/floor,/area) +"qI" = (/obj/sp_start{name = "expertadvisor"; desc = "Secret Base"; special = null},/turf/station/floor,/area) +"qJ" = (/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/turf/station/floor,/area) +"qK" = (/obj/machinery/computer/teleporter,/turf/station/floor,/area) +"qL" = (/obj/machinery/teleport/station,/turf/station/floor,/area) +"qM" = (/obj/machinery/teleport/hub,/turf/station/floor,/area) +"qN" = (/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area) +"qO" = (/obj/machinery/atmoalter/canister/anesthcanister,/turf/station/floor,/area) +"qP" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/table,/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area) +"qQ" = (/obj/item/weapon/radio,/turf/station/floor,/area) +"qR" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/ointment,/turf/station/floor,/area) +"qS" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/hand_tele,/turf/station/floor,/area) +"qT" = (/obj/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/bottle/rejuvenators,/turf/station/floor,/area) +"qU" = (/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/obj/window,/turf/station/floor,/area) +"qV" = (/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/turf/station/floor,/area) +"qW" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/storage/trackimp_kit,/turf/station/floor,/area) +"qX" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/bottle/r_epil,/obj/item/weapon/bottle/r_ch_cough,/turf/station/floor,/area) +"qY" = (/obj/machinery/atmoalter/siphs/fullairsiphon/port,/turf/station/floor,/area) +"qZ" = (/obj/machinery/atmoalter/siphs/scrubbers/port,/turf/station/floor,/area) +"ra" = (/obj/watertank,/turf/station/floor,/area) +"rb" = (/obj/weldfueltank,/turf/station/floor,/area) +"rc" = (/obj/secloset/medical1{allowed = "Medical Researcher,Prison Doctor,Medical Doctor,Captain,Head of Research,Secret Base"},/turf/station/floor,/area) +"rd" = (/obj/secloset/medical2{allowed = "Medical Researcher,Prison Doctor,Medical Doctor,Captain,Head of Research,Secret Base"},/turf/station/floor,/area) +"re" = (/obj/table,/obj/item/weapon/healthanalyzer,/obj/item/weapon/syringe,/obj/item/weapon/bottle/antitoxins,/turf/station/floor,/area) +"rf" = (/obj/window,/obj/item/weapon/infra_sensor,/turf/station/floor,/area) +"rg" = (/obj/window,/obj/item/weapon/wrapping_paper,/turf/station/floor,/area) +"rh" = (/obj/machinery/computer/pod{id = "sb1"},/turf/station/floor,/area) +"ri" = (/obj/machinery/mass_driver{dir = 4; id = "sb1"},/obj/machinery/pod{dir = 4},/turf/station/engine/floor,/area) +"rj" = (/obj/machinery/door/poddoor{id = "sb1"},/turf/station/engine/floor,/area) +"rk" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/closet/wardrobe/mixed,/turf/station/floor,/area) +"rl" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table,/obj/item/weapon/pen,/turf/station/floor,/area) +"rm" = (/obj/machinery/computer/pod{id = "sb2"},/turf/station/floor,/area) +"rn" = (/obj/machinery/door/window,/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area) +"ro" = (/obj/machinery/mass_driver{dir = 4; id = "sb2"},/obj/machinery/recon{dir = 4},/turf/station/engine/floor,/area) +"rp" = (/obj/machinery/door/poddoor{id = "sb2"},/turf/station/engine/floor,/area) +"rq" = (/obj/machinery/computer/pod{id = "sb3"},/turf/station/floor,/area) +"rr" = (/obj/machinery/door/window,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area) +"rs" = (/obj/machinery/mass_driver{dir = 4; id = "sb3"},/obj/machinery/recon{dir = 4},/turf/station/engine/floor,/area) +"rt" = (/obj/machinery/door/poddoor{id = "sb3"},/turf/station/engine/floor,/area) +"ru" = (/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/obj/window{dir = 1},/turf/station/floor,/area) +"rv" = (/obj/machinery/computer/pod{id = "sb4"},/turf/station/floor,/area) +"rw" = (/obj/machinery/mass_driver{dir = 4; id = "sb4"},/obj/machinery/recon{dir = 4},/turf/station/engine/floor,/area) +"rx" = (/obj/machinery/door/poddoor{id = "sb4"},/turf/station/engine/floor,/area) +"ry" = (/obj/item/weapon/radio/beacon,/turf/space,/area) +"rz" = (/obj/machinery/computer/pod{id = "sb5"},/turf/station/floor,/area) +"rA" = (/obj/machinery/mass_driver{dir = 4; id = "sb5"},/turf/station/engine/floor,/area) +"rB" = (/obj/machinery/door/poddoor{id = "sb5"},/turf/station/engine/floor,/area) +"rC" = (/turf/station/command/wall,/area/supply_station) +"rD" = (/obj/item/weapon/storage/handcuff_kit,/obj/item/weapon/storage/handcuff_kit,/obj/item/weapon/storage/handcuff_kit,/obj/item/weapon/storage/handcuff_kit,/obj/item/weapon/storage/handcuff_kit,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"rE" = (/obj/item/weapon/storage/flashbang_kit,/obj/item/weapon/storage/flashbang_kit,/obj/item/weapon/storage/flashbang_kit,/obj/item/weapon/storage/flashbang_kit,/obj/item/weapon/storage/flashbang_kit,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"rF" = (/obj/rack,/obj/item/weapon/clothing/suit/swat_suit,/obj/item/weapon/clothing/head/swat_hel,/obj/item/weapon/clothing/shoes/swat,/obj/item/weapon/clothing/gloves/swat,/obj/item/weapon/gun/energy/taser_gun,/obj/item/weapon/clothing/mask/robot/swat,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/glasses/thermal,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"rG" = (/turf/station/command/floor,/area/supply_station) +"rH" = (/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"rI" = (/obj/item/weapon/storage/backpack,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"rJ" = (/obj/machinery/atmoalter/canister/n2canister,/turf/station/command/floor,/area/supply_station) +"rK" = (/obj/machinery/firealarm{pixel_x = -32},/turf/station/command/floor,/area/supply_station) +"rL" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/extinguisher,/turf/station/floor,/area) +"rM" = (/obj/grille,/obj/window{dir = 8},/obj/window,/turf/station/floor,/area) +"rN" = (/obj/grille,/obj/window{dir = 1},/obj/window,/turf/station/floor,/area) +"rO" = (/obj/grille,/obj/window{dir = 4},/obj/window,/turf/station/floor,/area) +"rP" = (/obj/bedsheetbin,/turf/station/command/floor,/area/supply_station) +"rQ" = (/obj/item/weapon/storage/trackimp_kit,/turf/station/command/floor,/area/supply_station) +"rR" = (/obj/item/weapon/paper_bin,/obj/item/weapon/game_kit,/turf/station/command/floor,/area/supply_station) +"rS" = (/obj/machinery/firealarm{pixel_y = 32},/turf/station/command/floor,/area/supply_station) +"rT" = (/obj/watertank,/turf/station/command/floor,/area/supply_station) +"rU" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; r_engine = 0; r_access = 4; r_lab = 4},/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"rV" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 8; r_engine = 0; r_access = 4; r_lab = 4},/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"rW" = (/obj/closet/l3closet,/turf/station/command/floor,/area/supply_station) +"rX" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/command/floor,/area/supply_station) +"rY" = (/obj/item/weapon/storage/toolbox,/obj/item/weapon/storage/backpack,/obj/item/weapon/clothing/glasses/sunglasses,/obj/item/weapon/clothing/ears/earmuffs,/turf/station/command/floor,/area/supply_station) +"rZ" = (/obj/item/weapon/tile,/obj/item/weapon/rods,/turf/station/command/floor,/area/supply_station) +"sa" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/clothing/mask/surgical,/obj/item/weapon/clothing/mask/surgical,/obj/item/weapon/clothing/mask/surgical,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/radio/electropack,/obj/item/weapon/radio/electropack,/turf/station/command/floor,/area/supply_station) +"sb" = (/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/command/floor,/area/supply_station) +"sc" = (/obj/machinery/firealarm{pixel_x = 32},/turf/station/command/floor,/area/supply_station) +"sd" = (/obj/item/weapon/flasks/coolant,/obj/item/weapon/flasks/oxygen,/obj/item/weapon/flasks/plasma,/turf/station/command/floor,/area/supply_station) +"se" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/infra,/obj/item/weapon/infra,/obj/item/weapon/infra_sensor,/obj/item/weapon/locator,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/timer,/turf/station/command/floor,/area/supply_station) +"sf" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/infra,/obj/item/weapon/infra,/obj/item/weapon/infra_sensor,/obj/item/weapon/locator,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/timer,/turf/station/command/floor,/area/supply_station) +"sg" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/infra,/obj/item/weapon/infra,/obj/item/weapon/infra_sensor,/obj/item/weapon/locator,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/timer,/turf/station/command/floor,/area/supply_station) +"sh" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/clothing/mask/surgical,/obj/item/weapon/clothing/mask/surgical,/obj/item/weapon/clothing/mask/surgical,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/radio/electropack,/obj/item/weapon/radio/electropack,/turf/station/command/floor,/area/supply_station) +"si" = (/obj/machinery/atmoalter/canister/anesthcanister,/turf/station/command/floor,/area/supply_station) +"sj" = (/obj/item/weapon/table_parts,/obj/item/weapon/rack_parts,/turf/station/command/floor,/area/supply_station) +"sk" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/obj/item/weapon/pen,/obj/item/weapon/pen,/obj/item/weapon/pen,/turf/station/command/floor,/area/supply_station) +"sl" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/disk_kit,/obj/item/weapon/storage/id_kit,/turf/station/command/floor,/area/supply_station) +"sm" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/storage/gl_kit,/obj/item/weapon/storage/lglo_kit,/obj/item/weapon/storage/stma_kit,/turf/station/command/floor,/area/supply_station) +"sn" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/head/helmet,/obj/item/weapon/clothing/suit/armor,/obj/item/weapon/flash,/turf/station/command/floor,/area/supply_station) +"so" = (/obj/machinery/dispenser,/turf/station/command/floor,/area/supply_station) +"sp" = (/obj/weldfueltank,/turf/station/command/floor,/area/supply_station) +"sq" = (/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/toxin,/turf/station/command/floor,/area/supply_station) +"sr" = (/obj/table,/obj/item/weapon/storage/firstaid/syringes,/obj/item/weapon/bottle/toxins,/obj/item/weapon/bottle/s_tox,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/r_epil,/obj/item/weapon/bottle/r_ch_cough,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/dropper,/turf/station/command/floor,/area/supply_station) +"ss" = (/obj/item/weapon/camera,/turf/station/command/floor,/area/supply_station) +"st" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/head/helmet,/obj/item/weapon/clothing/suit/armor,/obj/item/weapon/flash,/turf/station/command/floor,/area/supply_station) +"su" = (/obj/item/weapon/sheet/metal{amount = 5},/turf/station/command/floor,/area/supply_station) +"sv" = (/obj/machinery/door/window{dir = 4},/turf/station/command/floor,/area/supply_station) +"sw" = (/obj/move/wall,/turf/space,/area/vehicles/shuttle1) +"sx" = (/obj/move/floor,/obj/window,/obj/window{dir = 1},/obj/grille,/turf/space,/area/vehicles/shuttle1) +"sy" = (/obj/closet/emcloset,/turf/station/command/floor,/area/supply_station) +"sz" = (/obj/move/floor,/obj/window{dir = 1},/turf/space,/area/vehicles/shuttle1) +"sA" = (/obj/machinery/door/window,/turf/station/command/floor,/area/supply_station) +"sB" = (/obj/move/floor,/obj/window{dir = 4},/obj/window{dir = 8},/obj/grille,/turf/space,/area/vehicles/shuttle1) +"sC" = (/obj/move/floor,/obj/window{dir = 8},/turf/space,/area/vehicles/shuttle1) +"sD" = (/obj/move/floor,/turf/space,/area/vehicles/shuttle1) +"sE" = (/obj/move/floor,/obj/window{dir = 4},/turf/space,/area/vehicles/shuttle1) +"sF" = (/obj/move/floor,/obj/window{dir = 4},/obj/grille,/turf/space,/area/vehicles/shuttle1) +"sG" = (/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/turf/station/command/floor,/area/supply_station) +"sH" = (/turf/station/command/wall{icon_state = "CCWall2"},/area/supply_station) +"sI" = (/obj/move/floor,/obj/shuttle/door,/turf/space,/area/vehicles/shuttle1) +"sJ" = (/obj/machinery/door/airlock,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"sK" = (/obj/grille,/obj/window{dir = 8},/obj/window{dir = 4},/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"sL" = (/obj/machinery/computer/teleporter,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"sM" = (/obj/machinery/teleport/station,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"sN" = (/obj/machinery/teleport/hub,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"sO" = (/obj/item/weapon/hand_tele,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"sP" = (/obj/move/floor,/obj/machinery/connector{dir = 4},/obj/window{dir = 4},/obj/window,/obj/machinery/atmoalter/canister/oxygencanister,/turf/space,/area/vehicles/shuttle1) +"sQ" = (/obj/move/floor,/obj/window{dir = 1},/obj/machinery/shuttle/engine/heater,/turf/space,/area/vehicles/shuttle1) +"sR" = (/obj/move/floor,/obj/machinery/connector{dir = 8},/obj/window{dir = 8},/obj/window,/obj/machinery/atmoalter/canister/poisoncanister,/turf/space,/area/vehicles/shuttle1) +"sS" = (/obj/move/floor,/obj/machinery/shuttle/engine/platform,/obj/machinery/pipes/high_capacity{icon_state = "6"; dir = 6; p_dir = 6},/turf/space,/area/vehicles/shuttle1) +"sT" = (/obj/move/floor,/obj/machinery/shuttle/engine/platform,/obj/machinery/shuttle/engine/router,/turf/space,/area/vehicles/shuttle1) +"sU" = (/obj/move/floor,/obj/machinery/shuttle/engine/platform,/obj/machinery/pipes/high_capacity{icon_state = "10"; dir = 10; p_dir = 10},/turf/space,/area/vehicles/shuttle1) +"sV" = (/obj/machinery/computer/pod{name = "Mass Driver"; id = 50},/turf/station/command/floor,/area/supply_station) +"sW" = (/obj/machinery/mass_driver{dir = 4; id = 50},/obj/machinery/recon{dir = 4},/turf/station/command/floor,/area/supply_station) +"sX" = (/obj/machinery/door/poddoor{id = 50},/turf/station/command/floor,/area/supply_station) +"sY" = (/obj/move/wall{icon_state = ""},/obj/machinery/shuttle/engine/platform{dir = 5},/obj/machinery/shuttle/engine/propulsion/burst/left,/turf/space,/area/vehicles/shuttle1) +"sZ" = (/obj/move/wall{icon_state = ""},/obj/machinery/shuttle/engine/platform{dir = 1},/obj/machinery/shuttle/engine/propulsion,/turf/space,/area/vehicles/shuttle1) +"ta" = (/obj/move/wall{icon_state = ""},/obj/machinery/shuttle/engine/platform{dir = 9},/obj/machinery/shuttle/engine/propulsion/burst/right,/turf/space,/area/vehicles/shuttle1) +"tb" = (/obj/machinery/firealarm{pixel_x = 32},/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"tc" = (/turf/station/command/wall{icon_state = "CCWall2"},/area) +"td" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/command/floor{density = 1},/area) +"te" = (/obj/begin,/turf/station/command/floor{icon_state = "Floor2"},/area) +"tf" = (/obj/machinery/door/window{dir = 4},/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station) +"tg" = (/obj/machinery/hologram_proj,/turf/station/command/floor{icon_state = "Floor2"},/area) +"th" = (/turf/station/command/floor{icon_state = "Floor2"},/area) +"ti" = (/turf/station/command/floor{icon_state = "Floor2"},/area/start) +"tj" = (/obj/machinery/computer/hologram_comp,/turf/station/command/floor{icon_state = "Floor2"},/area) +"tk" = (/obj/machinery/door/airlock,/turf/station/command/floor,/area/supply_station) +"tl" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/command/floor,/area/supply_station) +"tm" = (/obj/move/wall,/turf/space,/area/shuttle) +"tn" = (/obj/move/floor,/obj/window{dir = 1},/obj/window,/obj/grille,/turf/space,/area/shuttle) +"to" = (/obj/move/floor,/obj/shuttle/door,/turf/space,/area/shuttle) +"tp" = (/obj/move/floor,/obj/machinery/sleeper,/turf/space,/area/shuttle) +"tq" = (/obj/move/floor,/obj/machinery/computer/sleep_console,/turf/space,/area/shuttle) +"tr" = (/obj/move/floor,/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle) +"ts" = (/obj/move/floor,/obj/move/wall,/turf/space,/area/shuttle) +"tt" = (/obj/move/floor,/obj/window{dir = 1},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/space,/area/shuttle) +"tu" = (/obj/move/floor,/obj/rack,/obj/item/weapon/tank/oxygentank,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/mask/gasmask,/turf/space,/area/shuttle) +"tv" = (/obj/move/floor,/obj/rack,/obj/item/weapon/tank/oxygentank,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/mask/gasmask,/obj/window{dir = 4},/turf/space,/area/shuttle) +"tw" = (/obj/move/floor,/turf/space,/area/shuttle) +"tx" = (/obj/move/floor,/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle) +"ty" = (/obj/move/floor,/obj/table,/obj/item/weapon/storage/firstaid/regular,/turf/space,/area/shuttle) +"tz" = (/obj/move/floor,/obj/window{dir = 1},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/game_kit,/turf/space,/area/shuttle) +"tA" = (/obj/move/floor,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/space,/area/shuttle) +"tB" = (/obj/move/floor,/obj/machinery/door/window,/turf/space,/area/shuttle) +"tC" = (/obj/move/floor,/obj/stool/chair{dir = 4},/turf/space,/area/shuttle) +"tD" = (/obj/move/floor,/obj/table,/obj/window{dir = 4},/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/syringe,/turf/space,/area/shuttle) +"tE" = (/obj/move/floor,/obj/window{dir = 4},/obj/window{dir = 8},/obj/grille,/turf/space,/area/shuttle) +"tF" = (/obj/move/floor,/obj/window{dir = 4},/turf/space,/area/shuttle) +"tG" = (/obj/move/floor,/obj/machinery/computer/shuttle,/obj/window{dir = 4},/turf/space,/area/shuttle) +"tH" = (/obj/move/floor,/obj/machinery/door/window{dir = 1},/turf/space,/area/shuttle) +"tI" = (/obj/move/floor,/obj/table,/obj/window{dir = 4},/obj/item/weapon/radio,/turf/space,/area/shuttle) +"tJ" = (/obj/move/floor,/obj/window,/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle) +"tK" = (/obj/move/floor,/obj/window,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/window{dir = 4},/turf/space,/area/shuttle) +"tL" = (/obj/move/floor,/obj/window,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/space,/area/shuttle) +"tM" = (/turf/station/shuttle/wall,/area) +"tN" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/shuttle/floor,/area) +"tO" = (/obj/move/floor,/obj/shuttle/door,/turf/station/shuttle/floor,/area) +"tP" = (/obj/machinery/sleeper,/turf/station/shuttle/floor,/area) +"tQ" = (/obj/machinery/computer/sleep_console,/turf/station/shuttle/floor,/area) +"tR" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/shuttle/floor,/area) +"tS" = (/obj/window{dir = 1},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/shuttle/floor,/area) +"tT" = (/obj/rack,/obj/item/weapon/tank/oxygentank,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/mask/gasmask,/turf/station/shuttle/floor,/area) +"tU" = (/turf/station/shuttle/floor,/area) +"tV" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/shuttle/floor,/area) +"tW" = (/obj/table,/obj/item/weapon/storage/firstaid/regular,/turf/station/shuttle/floor,/area) +"tX" = (/obj/window{dir = 1},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/game_kit,/turf/station/shuttle/floor,/area) +"tY" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/shuttle/floor,/area) +"tZ" = (/obj/machinery/door/window,/turf/station/shuttle/floor,/area) +"ua" = (/obj/stool/chair{dir = 4},/turf/station/shuttle/floor,/area) +"ub" = (/obj/table,/obj/item/weapon/syringe,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/bottle/rejuvenators,/obj/window{dir = 4},/turf/station/shuttle/floor,/area) +"uc" = (/obj/window{dir = 4},/obj/window{dir = 8},/obj/grille,/turf/station/shuttle/floor,/area) +"ud" = (/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/turf/station/shuttle/floor,/area) +"ue" = (/obj/window{dir = 4},/turf/station/shuttle/floor,/area) +"uf" = (/obj/window{dir = 4},/obj/item/weapon/a_gift,/turf/station/shuttle/floor,/area) +"ug" = (/obj/machinery/door/window{dir = 1},/turf/station/shuttle/floor,/area) +"uh" = (/obj/table,/obj/item/weapon/radio,/obj/window{dir = 4},/turf/station/shuttle/floor,/area) +"ui" = (/obj/window,/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/shuttle/floor,/area) +"uj" = (/obj/window,/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/shuttle/floor,/area) +"uk" = (/obj/window,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/shuttle/floor,/area) +"ul" = (/turf/station/command/wall/other,/area) +"um" = (/obj/secloset/medical1,/turf/station/command/floor/other,/area) +"un" = (/obj/secloset/medical2,/turf/station/command/floor/other,/area) +"uo" = (/obj/secloset/animal,/turf/station/command/floor,/area) +"up" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/storage/firstaid/regular,/turf/station/command/floor,/area) +"uq" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/firstaid/regular,/turf/station/command/floor,/area) +"ur" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/firstaid/toxin,/turf/station/command/floor,/area) +"us" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/firstaid/toxin,/turf/station/command/floor/other,/area) +"ut" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/healthanalyzer,/obj/item/weapon/dropper,/turf/station/command/floor/other,/area) +"uu" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/syringe,/obj/item/weapon/pill_canister/Tourette,/obj/item/weapon/pill_canister/cough,/obj/item/weapon/pill_canister/epilepsy,/turf/station/command/floor/other,/area) +"uv" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/firstaid/syringes,/turf/station/command/floor/other,/area) +"uw" = (/turf/station/command/floor/other,/area) +"ux" = (/turf/station/command/floor,/area) +"uy" = (/obj/stool/chair,/turf/station/command/floor/other,/area) +"uz" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/obj/window{dir = 1},/turf/station/command/floor/other,/area) +"uA" = (/obj/morgue,/turf/station/command/floor/other,/area) +"uB" = (/obj/machinery/sleeper,/turf/station/command/floor,/area) +"uC" = (/obj/machinery/computer/sleep_console,/turf/station/command/floor{icon_state = "Floor2"},/area) +"uD" = (/obj/stool/chair{dir = 4},/turf/station/command/floor/other,/area) +"uE" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/clipboard,/obj/item/weapon/pen,/turf/station/command/floor/other,/area) +"uF" = (/obj/machinery/camera{dir = 4; network = "PS13"; c_tag = "Infirmary"},/turf/station/command/floor,/area) +"uG" = (/obj/start{name = "Prison Doctor"},/turf/station/command/floor{icon_state = "Floor2"},/area) +"uH" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/paper_bin,/turf/station/command/floor/other,/area) +"uI" = (/obj/machinery/computer/sleep_console,/turf/station/command/floor,/area) +"uJ" = (/obj/table{icon_state = "sides"; dir = 8},/turf/station/command/floor/other,/area) +"uK" = (/obj/table{icon_state = "corners"; dir = 9},/turf/station/command/floor/other,/area) +"uL" = (/obj/table{icon_state = "corners"; dir = 5},/turf/station/command/floor/other,/area) +"uM" = (/obj/stool/chair{dir = 8},/turf/station/command/floor/other,/area) +"uN" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/storage/stma_kit,/turf/station/command/floor/other,/area) +"uO" = (/obj/table{icon_state = "corners"; dir = 10},/turf/station/command/floor/other,/area) +"uP" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/game_kit,/turf/station/command/floor/other,/area) +"uQ" = (/obj/stool/bed,/obj/item/weapon/bedsheet,/turf/station/command/floor/other,/area) +"uR" = (/obj/closet/wardrobe/white,/turf/station/command/floor,/area) +"uS" = (/obj/closet/wardrobe/white,/turf/station/command/floor/other,/area) +"uT" = (/obj/item/weapon/storage/trackimp_kit,/turf/station/command/floor/other,/area) +"uU" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/storage/lglo_kit,/turf/station/command/floor/other,/area) +"uV" = (/obj/machinery/camera{dir = 4; network = "PS13"; c_tag = "Recreation Area (West)"},/turf/station/command/floor/other,/area) +"uW" = (/obj/stool/chair{dir = 1},/turf/station/command/floor/other,/area) +"uX" = (/obj/machinery/camera{dir = 8; network = "PS13"; c_tag = "Recreation Area (East)"},/turf/station/command/floor/other,/area) +"uY" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/turf/station/command/floor/other,/area) +"uZ" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/command/floor/other,/area) +"va" = (/obj/grille,/obj/window,/obj/window{dir = 1},/obj/window{dir = 4},/turf/station/command/floor/other,/area) +"vb" = (/obj/machinery/door/window{dir = 4},/turf/station/command/floor/other,/area) +"vc" = (/obj/machinery/door/window{dir = 8},/turf/station/command/floor/other,/area) +"vd" = (/obj/grille,/obj/window,/obj/window{dir = 1},/obj/window{dir = 8},/turf/station/command/floor/other,/area) +"ve" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/paper_bin,/turf/station/command/floor/other,/area) +"vf" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/obj/window,/turf/station/command/floor/other,/area) +"vg" = (/obj/secloset/security1,/turf/station/command/floor/other,/area) +"vh" = (/obj/machinery/computer/security{name = "security- PS13"; network = "PS13"},/turf/station/command/floor/other,/area) +"vi" = (/obj/secloset/security2,/obj/machinery/camera{network = "PS13"; c_tag = "Security Office"},/turf/station/command/floor/other,/area) +"vj" = (/obj/secloset/security2,/turf/station/command/floor/other,/area) +"vk" = (/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/storage/toolbox,/turf/station/command/floor/other,/area) +"vl" = (/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/turf/station/command/floor/other,/area) +"vm" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/storage/firstaid/regular,/turf/station/command/floor/other,/area) +"vn" = (/obj/table{icon_state = "sides"; dir = 4},/obj/item/weapon/pen,/turf/station/command/floor/other,/area) +"vo" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; r_engine = 0; r_access = 3; r_lab = 0},/turf/station/command/floor/other,/area) +"vp" = (/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/turf/station/command/floor/other,/area) +"vq" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/dropper,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/s_tox,/turf/station/command/floor/other,/area) +"vr" = (/obj/table{icon_state = "sides"; dir = 4},/obj/item/weapon/clipboard,/turf/station/command/floor/other,/area) +"vs" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 1; r_engine = 0; r_access = 3; r_lab = 0},/turf/station/command/floor/other,/area) +"vt" = (/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/turf/station/command/floor/other,/area) +"vu" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/ears/earmuffs,/turf/station/command/floor/other,/area) +"vv" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/wrapping_paper,/obj/item/weapon/wirecutters,/turf/station/command/floor/other,/area) +"vw" = (/obj/start{name = "Prison Security"},/turf/station/command/floor/other,/area) +"vx" = (/obj/table{icon_state = "alone"},/obj/item/weapon/wrapping_paper,/obj/item/weapon/wirecutters,/turf/station/command/floor/other,/area) +"vy" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/storage/firstaid/regular,/turf/station/command/floor/other,/area) +"vz" = (/obj/table{icon_state = "sides"; dir = 1},/turf/station/command/floor/other,/area) +"vA" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/pen,/turf/station/command/floor/other,/area) +"vB" = (/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/turf/station/command/floor/other,/area) +"vC" = (/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/turf/station/command/floor/other,/area) +"vD" = (/obj/secloset/animal,/turf/station/command/floor/other,/area) +"vE" = (/obj/bedsheetbin,/turf/station/command/floor/other,/area) +"vF" = (/obj/secloset/personal,/turf/station/command/floor/other,/area) +"vG" = (/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/station/command/floor/other,/area) +"vH" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; r_engine = 0; r_access = 4; r_lab = 4},/turf/station/command/floor/other,/area) +"vI" = (/obj/closet,/turf/station/command/floor/other,/area) +"vJ" = (/obj/item/weapon/bedsheet,/turf/station/command/floor/other,/area) +"vK" = (/obj/stool/bed,/turf/station/command/floor/other,/area) +"vL" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/paper_bin,/turf/station/command/floor/other,/area) +"vM" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/pen,/turf/station/command/floor/other,/area) +"vN" = (/obj/machinery/sec_lock{pixel_x = -32; a_type = 2},/turf/station/command/floor/other,/area) +"vO" = (/obj/machinery/sec_lock{pixel_x = 32},/turf/station/command/floor/other,/area) +"vP" = (/obj/closet/wardrobe/orange,/turf/station/command/floor/other,/area) +"vQ" = (/obj/table{icon_state = "sides"; dir = 4},/turf/station/command/floor/other,/area) +"vR" = (/obj/table{icon_state = "alone"},/obj/item/weapon/game_kit,/turf/station/command/floor/other,/area) +"vS" = (/obj/machinery/sec_lock{pixel_x = -32; a_type = 1},/turf/station/command/floor/other,/area) +"vT" = (/obj/machinery/door/airlock{r_access = 3},/turf/station/command/floor/other,/area) +"vU" = (/obj/machinery/camera{dir = 4; network = "PS13"; c_tag = "Solitary Cells"},/turf/station/command/floor/other,/area) +"vV" = (/obj/grille,/turf/space,/area) +"vW" = (/obj/machinery/computer/data/weapon/log,/turf/station/floor,/area) +"vX" = (/turf/station/floor/grid,/area) +"vY" = (/obj/machinery/computer/data/weapon/info,/turf/station/floor,/area) +"vZ" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; r_engine = 0; r_access = 3; r_lab = 0},/turf/station/command/floor/other,/area) +"wa" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 8; r_engine = 0; r_access = 3; r_lab = 0},/turf/station/command/floor/other,/area) +"wb" = (/obj/item/weapon/paper_bin,/turf/station/command/floor/other,/area) +"wc" = (/obj/closet/wardrobe,/turf/station/command/floor/other,/area) +"wd" = (/obj/closet/wardrobe/mixed,/turf/station/command/floor/other,/area) +"we" = (/obj/table{icon_state = "sides"; dir = 2},/turf/station/command/floor/other,/area) +"wf" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/radio{suffix = "\[2]"; freq = 144.9},/turf/station/command/floor/other,/area) +"wg" = (/obj/machinery/camera{dir = 4; network = "PS13"; c_tag = "Courtroom"},/turf/station/command/floor/other,/area) +"wh" = (/obj/window{dir = 10},/turf/station/command/floor/other,/area) +"wi" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/turf/station/command/floor/other,/area) +"wj" = (/obj/window{dir = 8},/turf/station/command/floor/other,/area) +"wk" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/turf/station/command/floor/other,/area) +"wl" = (/obj/table{icon_state = "corners"; dir = 9},/obj/window{dir = 8},/turf/station/command/floor/other,/area) +"wm" = (/obj/item/weapon/storage/toolbox,/turf/station/command/floor/other,/area) +"wn" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/pen,/turf/station/command/floor/other,/area) +"wo" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/paper_bin,/turf/station/command/floor/other,/area) +"wp" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/paper,/turf/station/command/floor/other,/area) +"wq" = (/obj/machinery/camera{dir = 4; network = "PS13"; c_tag = "Witness Prep Area"},/turf/station/command/floor/other,/area) +"wr" = (/obj/start{name = "Prison Warden"},/turf/station/command/floor/other,/area) +"ws" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/clipboard,/turf/station/command/floor/other,/area) +"wt" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/paper/sop,/turf/station/command/floor/other,/area) +"wu" = (/obj/machinery/camera{dir = 8; network = "PS13"; c_tag = "Warden's Office"},/turf/station/command/floor/other,/area) +"wv" = (/obj/landmark/alterations{name = "prison shuttle"},/turf/station/command/floor/other,/area) +"ww" = (/obj/table,/obj/machinery/recharger,/turf/station/command/floor/other,/area) +"wx" = (/obj/rack,/obj/item/weapon/clothing/under/green,/obj/item/weapon/clothing/suit/armor,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/head/helmet,/turf/station/command/floor/other,/area) +"wy" = (/obj/machinery/door/airlock,/turf/station/command/floor/other,/area) +"wz" = (/obj/move/wall{icon_state = "wall2"},/turf/space,/area/shuttle_prison) +"wA" = (/obj/move/floor{icon_state = "floor2"},/obj/window{dir = 1},/obj/window,/obj/grille,/turf/space,/area/shuttle_prison) +"wB" = (/obj/move/floor,/obj/shuttle/door,/turf/space,/area/shuttle_prison) +"wC" = (/turf/space,/area/shuttle_prison) +"wD" = (/obj/move/floor{icon_state = "floor2"},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/space,/area/shuttle_prison) +"wE" = (/obj/move/floor{icon_state = "floor2"},/obj/stool/chair,/turf/space,/area/shuttle_prison) +"wF" = (/obj/move/floor{icon_state = "floor2"},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/grille,/turf/space,/area/shuttle_prison) +"wG" = (/obj/move/floor{icon_state = "floor2"},/turf/space,/area/shuttle_prison) +"wH" = (/obj/move/floor{icon_state = "floor2"},/obj/window{dir = 1},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle_prison) +"wI" = (/obj/move/floor{icon_state = "floor2"},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle_prison) +"wJ" = (/obj/move/floor{icon_state = "floor2"},/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle_prison) +"wK" = (/obj/move/floor{icon_state = "floor2"},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/table,/obj/item/weapon/storage/firstaid/regular,/turf/space,/area/shuttle_prison) +"wL" = (/obj/move/floor{icon_state = "floor2"},/obj/window{dir = 1},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/game_kit,/turf/space,/area/shuttle_prison) +"wM" = (/obj/move/floor{icon_state = "floor2"},/obj/shuttle/door,/turf/space,/area/shuttle_prison) +"wN" = (/obj/move/floor{icon_state = "floor2"},/obj/grille,/turf/space,/area/shuttle_prison) +"wO" = (/obj/move/floor{icon_state = "floor2"},/obj/stool/chair{dir = 4},/turf/space,/area/shuttle_prison) +"wP" = (/obj/move/floor{icon_state = "floor2"},/obj/machinery/door/window,/turf/space,/area/shuttle_prison) +"wQ" = (/obj/move/floor{icon_state = "floor2"},/obj/table,/obj/window{dir = 4},/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/syringe,/obj/item/weapon/bottle/s_tox,/turf/space,/area/shuttle_prison) +"wR" = (/obj/move/floor{icon_state = "floor2"},/obj/window{dir = 4},/obj/window{dir = 8},/obj/grille,/turf/space,/area/shuttle_prison) +"wS" = (/obj/move/floor{icon_state = "floor2"},/obj/window{dir = 4},/turf/space,/area/shuttle_prison) +"wT" = (/obj/move/floor{icon_state = "floor2"},/obj/window{dir = 4},/obj/machinery/computer/prison_shuttle,/turf/space,/area/shuttle_prison) +"wU" = (/obj/move/floor{icon_state = "floor2"},/obj/machinery/door/window{dir = 1},/turf/space,/area/shuttle_prison) +"wV" = (/obj/move/floor{icon_state = "floor2"},/obj/table,/obj/window{dir = 4},/obj/item/weapon/radio,/obj/item/weapon/gun/energy/taser_gun,/turf/space,/area/shuttle_prison) +"wW" = (/obj/move/floor{icon_state = "floor2"},/obj/window,/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle_prison) +"wX" = (/obj/move/floor{icon_state = "floor2"},/obj/window,/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle_prison) +"wY" = (/obj/move/floor{icon_state = "floor2"},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/closet/wardrobe/orange,/turf/space,/area/shuttle_prison) +"wZ" = (/obj/move/floor{icon_state = "floor2"},/obj/window,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/space,/area/shuttle_prison) + +(1,1,1) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacadadadacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafacagahahahaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajakalamahanaoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeapaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarasatacauasacavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeawaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafacacacaxahacavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeawaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayazaAazaAazaAayaBaCaBaBaBaBaDazaAazaAazaAacacacacasacavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeawaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaEaFaFaFaFaGaFaHaHaHaHaHaHaHacacacaIahacavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeawaeaJaJaJaJaJaJaJaJaJaKaJaJaJaJaJaJaJaJaJaJaJaJaLaeaEaMaNaFaOaNaMaHaPaQaRaRaRaRacacacacahacavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaSaeawaTawaUawawaTawawawawaTawawaUawawaTawawawaTaVaeaWaWaWaWaWaWaWaXaYaZaZaZbaaZacalbbacahacavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebcaeawaJaJaJaJaJaJaJbdaJaJaJaJaJaJaJbdaJaJaJaJaJawaeaWbebfbfbfbgbhaXbiaZaZaZaYaZacahahacahacavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebjaebkaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaebjaeaWbebfbfbfblbmaXbnbnbnbobpbqacahbracbsacavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeawaebjbtbtbtbuawbvbtbwbxbxbxaTbybybzbtbAbAbBbBaebCaeaWbDbfbfbgbEbEaXbFaZaZaZbaaHacahahahahacavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaSaeawawaUbjawawawbtawawawawawawawawbtawawawawaebGaeaWbDbfbfbfbHbEaXbIaZaZaZaYbJbKahahalatacavavavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeawaeawawawbjawbLawbMawawawawawawawawbtbNawawaTawawaeaWbDbfbObPbHbQaXbRbSbRbRbRaHacacacacacacaBaBbTbUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeawbVawawawbjawawaTbtawawawawawawawawbMawawawawawawbVbWbXbXbYbZbYcaaXcbaZaZaZaZcccdcecfcgchcicjckclcmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaebtcnbtbtbjbjbjbtaUcocpcqcpawcrcsbtctcucucvawcwaeaWcxbEcybEbHczaXcAaZaZaZaZcBaZcCcCcCcCcCcCcDcEcmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecFawawbMawawcGbtbtbtbtbtbtcHcHcHbtbtcHcHcHcHaeaeaWbEcIcJczbHcKaXbRcLbRbRbRcMaZaZbaaZaZaZaYcNcOcmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecFawbBbtawawawcPawawcQawcRcScScScScScScScScSaeaaaWcTcUbYbXbYbXaXaZaZaZaZaZcVaZaZcWcXcYcZaZdadbcmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecFawbBbtdcawawbtbCawddaJdecScScScScScScScScSaedfdfdfdfdfdfdfdfaXdgbaaZaYaZdhaZaZaYaZaZaZbadidbcmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebtdjbtbtdkaUawbtbCawawaJdlcScScScScScScScScSaedmdndndodpdqdrdsaHdtaZaZaZaZdhdudvaZdwdwdwdwdxdycmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaedzdAdBbtawawawbtbCawawdCdDcScScScScScScScScSaedmdEdFdGdHdHdHdIaHaHaHbJaHbacBdJdKdLdMdNdOdPdQdRcmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadSdSdSdSdSdSaedTdUdVbtawawaTbtdWdXdYdZeacScScScScScScScScSaedmebdGecdGdGedeeefefefegefefefeheiejeieieiaBaBaBekaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaelemeneoepdSaeaeaeaeaebjbtbtbtbtbtbtbteqeqeresetesbteueueuaedmdmevdmewewewewefexeyeyeyezefeheiejeieieiaBaFaBavaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadSdSdSeAeBdSaBaBaBaBaedjbtbtbtbtbtbtbteCbtbtawawawaeaeaeaeaeefeDeyeyeyeyeyeyeEeyeyeyeyeyefeheFeGeGeHeiaBeIaBavaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeJeKeneoeLdSeMeNeOaBaeawbtePeQeQeQeReQeQeCeSawawawaeeTeTeTeTeTeUeyeyeyeyeyeyefeyeyeyeyeyefeheVeGeGeWeiaBeIaBavaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadSdSdSeXeAeYeZaFfafbbVawbteQeQeQeQeQeQeQbtbtawawaUaeeTfcfdfdfeeyeyeyeyeyeyezefeUeyeyeyeyefehffeGfgeWeiaBaFaBavaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafhfieneBfjdSfkaFfaaBaeawbtflflflflflflflbtbwawawawaeeTfdfdfdeTefefegefefefefefefefefefefefeheVeGeGeWeiaBaFaBavaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadSdSdSeAeodSfaaFeZaBaeawbtbtbtbtbtbtbtbtbtawawawbNaeeTfmfdfneTfofpfqfrfsftfufvfwfwfwfwfreGeifxeGeGfyeiaBaFaBavaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafzfAeneBfBdSfaeZfCaBaeawawaUaTawawawawbjcPawawaTfDaeeTfdfdfdeTfEfFfGfHfIfJfKfLfMfNfOfPfreGeifQfRfRfSeiaBaFaBavaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadSdSdSdSdSdSaBaBaBaBaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeeTfTfTfTeTfEfUfVfWfXfpfYfZgafwfwfwfreGeieieieieieiaBaBaBavaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaaaaaaaaaaaaaBaaaFaaaaaFaaaaaFaaaaaFaaaaaFaaaaeTfdfdfdeTfrfrgbeTgcgcgcgcgcgcgcgcgcgcgdgegfggghgigjgkaBglaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagmgngngngngmgmgmgmgmgmgmgmgmgmgogogogogogogogogogogogogogoeTeTgpfdfdeTgqgrgrgsgtgqgrgrgrgrgrgrgugrgdgvgwgxgfghgjgjaBglaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaBaBgmgygzgzgzgAgBgCgDgEgFgGgHgIgJgogKgLgMgNgOgPgQgRgSgTgUgVgWeTgXfdfdfdgYgrgrgrgrgZgugrgrgrgrgrgrgqgrhaggghgighgggjhbaBglaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBhcfagmgyhdhehfhghhhihjhihihkhihlhihmhnhnhohnhnhnhohnhnhohnhphpeThqfdfdfdeTgugrgrgrhrhrhrhrhrhrhrhrhrhrhsghghghghghghhtaBglaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBhceZhihihihjhihuhihihihihihvhihwhxhmhnhnhnhnhnhnhnhnhnhnhnhnhoeTfdfdfdfdeTgtgtgthyhrhzhAhBhBhChDhDhEhFhshGhHgghIgehJggaBglaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBhcaFgmhKhLhihihuhihihihihMhwhNhihOhmhPhQhnhnhRhShThUhVhnhnhWhXeTfmfdfdgpeTgsgrgrgrhrhYhDhDhDhDhDhFhZhFhsiaibghibibhJghaBglaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBhcfahihihiichiidhihiiehihihihihihxgogogoifififhnhnigihiiijikileTeTfTfTeTeTgugrgrgrhrhYimhZhZhDhDhFinhFhsggghgighggioipaBglaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBhcaFgmhKhLhihiiqhihihlirhihihjhwisitiuiviwixiyiziAiBhnhnhohniCeTfmfdfdiDeTgqgrgrgrhriEhFhFhFhDhDhFhZhFhsgdiFiGgdgdgdgdaBglaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBhcfahihihihjhiiHiIhlhjhlhihihiiJiKgmiLgoiAhoiAiMiNiOiAhnhniAiPeTfdfdfdfdgtiQiRgrgrhrhrhraEaEiSaEaEaEaEhshsiTiTgdiUiUiUaBavaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBhceZgmhKhLiViViWiXiXiYiZaBjajaaBaBaBaBgoiMiAiMjbjcjdhnhnhnjejfeTfdfdfdfdgtgrgrjggrgrgqhrjhjijjjjjkjljmjnhsghghghghghghaBavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaBaBaBaBaBaBaBaBaBaBaBjojojpjqjojoaBaBgogogogogogojrjsjtjujvjweTfdfdfdfdjxgrgrgrgrgrgrjyjzjjjjjjjAjjjjjjhsjBghghgighghaBavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjCjCjCjCjCjDjCjCjEjCaBjFjGjGjGjHjHjIjJjKjIjIjIjIjIeTeTeTeTeTeTeTfdfdfdfdgtgrgrgrgugrgrhrjhjLjjjjjjjjjMjhhsgdggghghjNjNaBavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjOjPjPjQjPjPjPjPjOjRaBjGjSjGjTjGjUjIjTjGjGjVjWjXjIjYjTjZjGjSkafdgpfdfdfmgtgugrgrgrgrgqhrjhkbjjjjkcjjjjjzkdiTghghggjNjNaBavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjQjPjPjOjPjPjPjPjQjPkejGjGjGjGjGkfjIjGjGjGjGjSjIjIkgjGjGjGjGkafdfdfdfdfdaBaBaBaBaBaBaBaBjhjjjjjjjjjjkhjhhsgdgighghkikiaBavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjPjPkjkjkjkkkjkjkjkkaBjGjGjTjGjSjGkljSjGjGjTjGkajGjSjGjGjGjTkafdfdfmkmfdaBavavavavavavaEjhjzjhjjjjjjjjknhsgdiTgdghkikiaBavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjPjPkjkojOjQkjkojOjQaBkpkpkpkpkpkpaBjGjGjGjGjGkajGjGjGjGkqkqkqkqkqkqkrkqaEaEaBaBaBaBaBaEjhjjjhjjksjjktkuhsgdiFgdgdgdgdaBavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjPjPkjkvjCkwkjkvjCkwaBkxkxkxkykykzaBjSjGjGjGjTkajGjTjGjSkqkAkBkCkDkEkFkGkHkIkIkIkIaEaBaEjhjjjhkJkKkLkLaEkMkMkNkNkOkNkPaEavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBkQkRkjkjkjkjkjkjkjkjaBkykSkTkTkUkVkWjIjIjIjIjIjIjIkWkXkWkqkYkZkGlalblckFkEkIldkFleaEavaEjhlfjhjjlglglhaElikNkNkNkNkNljaEavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjPjPlklllmlmlnlololpaBlqkTlrlskTkVkWltltltltlulvlwkWlxlylzkAkFlAkFlBkFkGlClDkGlElFaEavaElGkblHjjjjjjjjaElIkNkNlJkNlKkNaEavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBlLlMlNlNlOlNlNlNlMlPaBlQkTlRlSkTkykWlTlTlTlTlUlxlxkWlVkWlzkAkFkFlWkGlXlXlXkIlYlElZaEavaEjhjhjhjLjjjjjjaEmambkNkNkNkNmbaEavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBmclNmcmclNmcmclNlNlNaBmdkTmemfkTmgkWmhmhmhmhmilxlxkWlxmjlzmkmlmmmnkFmokFmplDkFlElFaEavaEjhmqmrjjmsmsmsaEkNkNkNmtmumumuaEavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBmclNmcmclNmcmclNlNlNaBkykUkTkTmvmgkWmwmxmwmymzlxlxkWlVkWlzmAmBmCmDmEmFmGmHmIlckFlcaEmJaEkukukukukukukuaEmKmLmKmMmMmMmMaEavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBmclOmcmclMmcmclNlOlNmNkykymOkykSmgkWmPmPmPmPmQlxlxkWmRkWlzkIkIkIkIkIkIkIkIkIkIkIkIaEavaEaaaBaFaFaBaFaFaBmSmTmUaFaFaFaFaEavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaBmVaBaBaBaBaBaBaBaBaBaBaBaBmVaBaBkWmWmWmWmWmXlxlxlxlxlxmYmZnamZlzmYnbnbnbnbnbnbncaEavaEaaaBaaaaaBaaaaaBndnendaaaaaaaaaEavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBnfaFaFeZaFaFfaaBaFeZaFaFfaaFaFeZaFkWngnbmjnbmjlxmYlxlxlxlxlxlxlxlzlxlxlxlxlxlxlxnhaEavaBaanininininininininininininininiavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBnjaFaFaFaFaFaFaBaFaFaFaFaFaFaFaFaFkWnklxlxlxmYlxnllxnmnclxlxlxlxnnlxnonononononolxaEavaBaanininininininininininininininiavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaFaFaFaFaFaFaFaBaFaFaFaFaFaFaFaFaFkWnplxnclxnqlxlxlxnrnsntntnunulzncnvnvnvnvnvnvmYaEavaBaanininininininininininininininiavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBeZaFaFfaaFaFeZaBaFfaaFaFeZaFaFfanwkWnxnynznAlxlxlxlxnBlxlxnClxnclzlzlzlzlzlzlzlzlzaEavaBaanininininininininininininininiavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaBaBnDaBaBaBaBaBaBaBaBaBaBiSaBaBaBkWlxlxlxnElxlxlxnElxlxnFnGmYnHnElxlxnInInInInInIaBavaBaanininininininininininininininiavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBfCaFaFaFaFaFaFaFnJaBaFaFaFaFaFaFkWnvnvnvnKnLnMnLmYnNnOnPnQnRnSkWlxlxnInInInInInIaBavaBaanininininininininininininininiavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBfCaFeZaFaFfaaFaFnTaBaFfaaFaFeZaFkWkWkWkWkWkWkWkWkWkWkWkWkWkWkWkWlxlxnUnUnUnUnUnUaBavaBaanininininininininininininininiavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBnVnVnWnVnWnXnYnZoaaBaFaFaFaFaFaFaBaaaaaakWaaaaaakWaaaaaaaaaaaakWlxlxnUnUnUnUnUnUaBavaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBavaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBobavavavavavocavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavavaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} + +(1,1,2) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} + +(1,1,3) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} + +(1,1,4) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} + +(1,1,5) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} + +(1,1,6) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} + +(1,1,7) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} + +(1,1,8) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} + +(1,1,9) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaBaBaBaBaBaBaBaBaBaBaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaBaBaBaBaBaBaBaBaBaBaBododoeaFaFiSfaiSofofofaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBogeZaBohoiojokolojokaBaFaFaFfaaFaBaBaBofofofaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaFaFaBomeZaFaFfaaFaFaBfaaFaFaFeZaFonaBooofofaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBeZogopoqaFaFaFaFeZaForaFeZaFaFaFosotaBouofofaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBovaFowoqaFaFfaaFoxoyaBaFaFaFfaaFaFozaBaBaBaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBfaeZoraFaFaFaFaFaFoAaBoBoCaFoDoEaFoFoGoHoIaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaFaFoJoKfaaFeZaFaFoLaBfaaFaFoMoNaFaFfaaFeZaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBoOfaaBoPoQoRoSoToUoVaBoBoCaFoWaFoXeZoFoYoHaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaBaBaBaBaBaBaBaBaBaBaBeZaFoZaFpaaFaFaFaFfaaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBoBoCnYpbpbpcpcpdpdpeaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaBaBaBaBaBaBaBaBaBaBaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} + +(1,1,10) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapfpgpgphaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaopfCaFopaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaopfaeZopaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaopaFaFopaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEeZfaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEfaeZaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEeZfaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaEaEaEaEaEaEaEaEfaeZaEaEaEaEaEaEaEaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaEpipjpkplpmpnpoaEaFaFaEpppqprpsptpuaEaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaEpvpwpxpyaFaFpzpAaEmVpBaEfaoiaFeZoxoApCaEaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaEpDpEpFmUpGpHpIpJaBaFfaaBeZaFaFfaaFaFeZpKaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaEaEaEaEaEpLeZpMaFpNpOpPpPaBaFaFaBojokoKoyaFaFaFpQaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaEaEpRpSpTaEpUaFfapVaBaBaBaBaBaFaFaBaBaBaBaBpWaFaFpXaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaEpYoCpZfamNeZaFaFeZaBqaqbqcfaaFaFqdqeqfqgaBqhaFfaqiaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaEaFaFqjaFaBfaaFfaaFmNaFaFaFaFaFaFaFaFqkqkaBqlaFeZqmaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaEqnoCfaeZaBodqhqoqpaBaFaFaFaFaFaFaFaFaFaFaBaFaFaFqqaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaEqraFqsaFaBaBaBaCaBaBqtaFaFquaFqvfaaFaFeZmNeZqqqweMaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaEqxoFqyqzaBqAaFaFqBaBeOaFaFqCqDaFaBaBaBaBaBfaqqqEeMaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaEqFaFaFfCaBaBaBaCaBaBqGaFaFqHaFqIqJqKqLqMaBqNqNqOqOaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaEqPqQfaqRaBodqhqoqpaBeZaFaFfaaFaFqJqSaFfaaBqNqNqOqOaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaEqTaFaFaFaBfaaFfaaFmNaFaFaFaFaFaFqUqVqVaFaEaEaEaEaEaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaEqWaFqXfamNeZaFaFeZaBqYqZrarbfaeZmNfaaFeZaEaaaEaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaEaErcrdreaEpUaFfapVaBaBaBaBaBaFaFaEaEaEmVaEaEaEaEaEaEaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaEaEaEaEaErfpErgaFpNpOpPpPaBaFaFaEaaaEfaeZqJrhaFmNrirjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaErkeZrlmUpGpHpIpJaBeZfaaEaaaEaFaFqJeZfaaEaEaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaEpvpwpxpyaFaFpzpAaBmVpBaEaEaEaFaFqJrmaFrnrorpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaEpipjpkplpmpnpoaEaFaFaEaaaEeZfaqJfaaFaEaEaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaEaEaEaEaEaEaEaEfaeZaEaaaEaFaFqUrqeZrrrsrtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaEaEaFaFmNfaaFaEaEaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFaFaFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaEfaeZrurvaFrnrwrxaaaaaaaaaaaaaaaaaaaaaaaaaaaFaFaFryaFaFaFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEeZfaaEaaaEaEaEaEeZfaaEaEaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFaFaFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaaaaaaaErzaFmNrArBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaaaaaaaEaEaEaEaEaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEfaeZaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarCrCrCrCrCrCrCrCrCrCrCrCrCrCrCrCaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarCrDrErFrFrFrFrFrCrGrGrGrGrGrGrCaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEeZfaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarCrHrHrIrIrIrIrIrCrCrCrCrCrCrCrCaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqJaFaFqJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarCrHrHrHrHrHrHrHrCrGrGrJrJrJrJrCaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqJaFaFqJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarCrHrHrHrHrHrHrHrCrKrGrJrJrJrJrCaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqJfarLqJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarCrCrCrCrCrCrCrCrHrHrCrGrGrJrJrJrJrCrCrCrCrCrCrCrCrCaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarMrNrNrOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarCrPrQrRrSrGrTrCrUrVrCrWrGrGrGrXrXrCrYrGrGrZrZrZrZrCaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarCrGrGrGrGrGsarCrHrHrCrWrGsbsbrXrXrCrYrGrGrGrGrGscrCaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarCsdsesfsgrGshrCrGrGrCsirGsbsbrXrXrCrYrGrGrGsjsjsjrCaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarCsdskslsmrGsnrCrGrGrCsirGsbsbrXrXrCrYrGrGrGsjsjsjrCaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarCsdrGrGrGrGsnrCrGrGrCsirGsbsbrXrXrCsorGrGrGsjsjsjrCaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarCspsqrGsrssstrCrGrGrCsirGsbsbrXrXrCsorGsususususurCaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarCrCrCsvrCrCrCrCrGrGrCrCsvrCrCrCrCrCsorGsususususurCaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaswsxswaaaaaarCrGrGrGrGrGrGrGrGrGrGsysysysyrCrGrGsususususurCaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaswswszswswrCrCrCrKrGrGrGrGrGrGrGrGrGrGrGrGrGsArGrGsususususurCaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasBsCsDsEsFaaaarCrGrGrGrGrGrGrGrGrGrGrGrGrGrGrCrGrGsGsGsGsGsGrCaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaswsDsDsDswsHsHsHrGrGrGrGsHsHsHsHsHsHsHsHsHsHrCsorGsGsGsGsGsGrCaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasBsCsDsDsIsJrHsJrGrGrGrGsKsLsMsNrHrHsLsMsNsOrCsorGsGsGsGsGsGrCaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaswsDsDsDswsHsHsHrGrGrGrGsKrHrHrHrHrHrHrHrHrHrCsorGsGsGsGsGsGrCaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaswsPsQsRswaaaarCrGrGrGrGsKrHrHrHrHrHrHrHrHrHrCrCrCrCrCrCrCrCrCaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaswsSsTsUswrCrCrCrGrGrGrGsKsLsMsNrHrHsLsMsNrHrCrGrSsVrGrGrGsWsXaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasYsZsZsZtaaaaarCrGrGrGrGsKrHrHrHrHrHrHrHrHrHrCrGrGrGrGrGrGrGsXaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarCrGrGrGrGsKrHrHrHrHrHrHrHrHtbrCrGrGrGrGrGrGrGsXaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatctctctctctctdtdtdtdtdtdtdtdtcrCrCrCrGrGrGrGsKrHrHrHrHrHrHrHrHrHrCrGrGrGrGrGrGrGsXaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatctctctctctctctetetetetetetetetetetetetetcrCrGrGrGrGrGrGsHsHsHtfsHsHsHsHsHsHrCrGrGrGrGrGrGrGsXaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatctgthtgthtgtctitititititititititititititcrCrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrCrCrCrGrGrGrGrGsXaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatctjthtjthtjtctitititititititititititititcrCrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGtkrGtkrGrGrGrGrGsXaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatcthththththtctitititititititititititititcrCrKrGrGrGrGrGrGrGrGrGrGrGrGrGrGrGrCrCrCrGrGrGrGrGsXaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatcththththththtitititititititititititititcrCrGrGrGrGrGrGrGrGrCrCrCrCrCrCrCrCrCrCrCrCrCrCrCrCrCaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatcthththththtctitititititititititititititcrCrGrGrGrGrGrGrGrGrCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatctctctctctctctctctctctctdtdtdtdtdtdtdtdtcsHsJsHtltltltltltlrCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasHrHsHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasHsJsHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatmtmtmtmtmtntmtmtotmtmtmtntmniaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatmtptqtrtstttutvtwtxtmtytztmtmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatmtAtwtAtotwtrtwtAtBtAtrtCtDtEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatmtptqtwtEtCtwtwtwtFtCtwtCtGtEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatmtAtwtAtEtCtAtwtrtHtrtAtCtItEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatmtptqtrtEtJtwtwtwtKtmtrtLtmtmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatmtmtmtmtmtntmtmtmtntmtmtntmniaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatMtMtMtMtMtNtMtMtOtMtMtMtNtMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatMtPtQtRtMtStTtTtUtVtMtWtXtMtMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatMtYtUtUtOtUtUtUtUtZtUtUuaubucaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatMtPtQtUuduatUtUtUueuatUuaufucaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatMtYtUtUuduatUtUtUugtUtUuauhucaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatMtPtQtRuduitUtUtUujtMtRuktMtMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatMtMtMtMtMtNtMtMtMtNtMtMtNtMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} + +(1,1,11) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} + +(1,1,12) = {" +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaululululululululululululaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulumunuoupuqurusutuuuvululululaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauluwuwuxththuxuyuyuwuwuwuwuwulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauluxuxuxththuxuxuxuwuwuzuAuwulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulululululululululululululuBuCthththththuxuDuEuluAuwulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauluwuwuwuwuwuwuwuwuwuwuwuluFthththuGththuxuwuHuluAuwulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauluwuwuyuyuwuwuwuyuyuwuwuluBuIuxththuxuxuxuwuJuluAuwulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauluwuDuKuLuMuwuDuKuLuMuwuluwuwuxththuxuwuwuwuNuluAuwulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauluwuDuOuPuMuwuDuOuPuMuwuluQuQuxuxuxuRuSuTuTuUuluAuwulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauluVuwuWuWuwuwuwuWuWuwuXuYuZvavbvcvdulululululululululululululaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulveuwuwuwuwuwuwuwuwuwuwvfuwuwuwuwuwuYvgvgvgvgvhvivjvkvlvlvmulaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulvnuwuwuwuwuwuwuyuyuwuwvouwuwuwuwuwuYuwuwuwuwuwuwuwuwvpvpvqulaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulvruwuwuwuwuwuDuKuLuMuwvsuwuwuwuwuwvfuwuwuwuwuwuwuwuwuwvtvuulaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulvvuwuwuwuwuwuDuOuPuMuwuzuwuwuwuwuwvouwuwuwvwuwuwuwuwuwvtvuulaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulvxvyvzvAveuwuwuWuWuwuwuYuwuwuwuwuwuzuwuwuwuwuwuwuwvBuwvCvuulaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaululululululululululululvfuwuwuwuwuwuYvDvDvEvFvFvFvFvGuwvCvuulaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulululululuwuwuwuwuwuwululuwuwuwuwuwululululululululuwuwuwululaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauluwuwuyuyuwvHvHuwuwuwuwuwuwuYvIvJvKuluwuwuwuwuwuwuwulaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauluwuDvLvMuMuwuYvNuwuwuwuwvOuYuwvJvKulvPvPvPvPvPvPvPulaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauluwuDuJvQuMuwuYuwuwuwuwuwvHvHuwuwvRulululululululululaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaululululululululuwuwuwuwuwuwulululululaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulululululululvKvJvIuYuwuwuwuwuwuwuYvIvJvKulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulvJvKulvJvKulvKvJuwuYvSuwuwuwuwvOuYuwvJvKulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauluwuwuluwuwulvRuwvHvHuwuwuwuwuwvHvHuwuwvRulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulvTululvTululululululuwuwuwuwuwuwulululululaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauluwuwuwuwuwuwuwuwuwuwuwuwuwuwuwuwuYvIvJvKulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulvUuwuwuwuwuwuwuwuwuwuwuwuwuwuwvOuYuwvJvKulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauluwuwuwuwuwuwuwuwuwuwuwuwuwuwuwvHvHuwuwvRulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulvTululvTululululululuwuwuwuwuwuwulululululaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauluwuwuluwuwulvKvJvIuYuwuwuwuwuwuwuYvIvJvKulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulvJvKulvJvKulvKvJuwuYvSuwuwuwuwvOuYuwvJvKulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulululululululvRuwvHvHuwuwuwuwuwvHvHuwuwvRulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulululululuwuwuwuwuwuwulululululaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulvKvJvIuYuwuwuwuwuwuwuYvIvJvKulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulvKvJuwuYvSuwuwuwuwvOuYuwvJvKulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaFaBvVvVvVvVvVvVvVvVvVvVvVvVvVvVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulvRuwvHvHuwuwuwuwuwvHvHuwuwvRulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaFaBaBaBaBaBaBaBaBaBaBaBaBaBaBvVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulululululuwuwuwuwuwuwulululululaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaFaBvWaFaFvXaFvXvXvXvXqKqLqMaBvVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulvKvJvIuYuwuwuwuwuwuwuYvIvJvKulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaFaBaBaBaFvXaFvXvXvXvXaFaFaFaBvVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulvKvJuwuYvSuwuwuwuwvOuYuwvJvKulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaFiSfaiSaFaFaFaFqDaFaFaFaFaFaBvVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulvRuwvHvHuwuwuwuwuwvHvHuwuwvRulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaFaBaBaBaFvXvXvXvXvXvXvXvXvXaBvVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulululululuwuwuwuwuwuwulululululaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaFaBvYaFaFvXvXvXvXvXvXvXvXvXaBvVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaululululululululululuZvavZwavduZululululululululululululaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaFaBaBaBaBaBaBaBaBaBaBaBaBaBaBvVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauluLuyuwuwuwuMuMululuwuwuwuwuwuwulwbvPwcwdulvFvFvFvFvFulaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaFaBvVvVvVvVvVvVvVvVvVvVvVvVvVvVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulwewewfuyuwuMuMululuwuwuwuwuwuwuJuwuwuwuwuwuwuwuwuwuwulaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauluyuwuwuwuwuMuMululuwuwuwuwuwuwuJuwuwuwuwuwuwvFvFvFvFulaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulwguwuwuwuwuwuwvTuwuwuwuwuwuwuwwhuwuwuwwiuluwuwuwuwuwulaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauluKuLuwuKuLwjuwululuwuwuwuwuwuwvouwuwuwwkulvFvFvFvFvFulaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauluWuWuwuWuWwjuwululuZvavZwavduZululvculululululululululaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauluwuwuwuwuwwlvzuluwuwuwuwuwuwuwuYuwuwuwuwuwuwuwwmulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulululvTulululululuwuwuwuwuwuwuwuYuwuwuwuDuwwnwouwulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauluwuyuyuyuyuluwuwuwuwuwuwuwvfuwuwuwuDuwwpuMuwulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulwquwuwuwuwuluwuwuwuwuwuwuwvouwwruwuDuwwswtwuulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauluwuwuwuwuwvTuwuwuwuwuwuwuwuzuwuwuwuwuwuwuwuwulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulululululululuwuwuwuwuwuwuwuYuwuwuwuwuwuwuwuwulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulwvuwuwuwuwuwuwuYvhuwvgvgvgvgwwwxulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaululululwyulululululululululululululaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauluwulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaulwyulaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawzwzwzwzwzwAwzwzwBwzwzwzwAwzwCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawzwDwEwFwGwHwGwIwGwJwzwKwLwzwzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawzwMwNwNwDwOwDwOwDwPwDwIwOwQwRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawzwGwDwGwGwOwGwOwGwSwOwGwOwTwRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawzwMwNwNwDwOwDwOwDwUwDwIwOwVwRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawzwDwEwFwGwWwGwIwGwXwzwYwZwzwzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawzwzwzwzwzwAwzwzwzwAwzwzwAwzwCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +"} diff --git a/ss13-40.93.2-base/README.md b/ss13-40.93.2-base/README.md new file mode 100644 index 0000000..145813e --- /dev/null +++ b/ss13-40.93.2-base/README.md @@ -0,0 +1 @@ +Hobnob's corrected version of the SS13 source after he decompiled it. This has most of the critical bugs from decompiling ironed out, and is close to the 40.93.2 version that was played from 2006 to 2008. \ No newline at end of file diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/Icons/Cryogenic2.dmi b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/Cryogenic2.dmi new file mode 100644 index 0000000..2ead3b6 Binary files /dev/null and b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/Cryogenic2.dmi differ diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/Icons/Door1.dmi b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/Door1.dmi new file mode 100644 index 0000000..13206c3 Binary files /dev/null and b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/Door1.dmi differ diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/Icons/Doorf.dmi b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/Doorf.dmi new file mode 100644 index 0000000..7a5442d Binary files /dev/null and b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/Doorf.dmi differ diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/Icons/Icons.dmi b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/Icons.dmi new file mode 100644 index 0000000..9ff68ed Binary files /dev/null and b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/Icons.dmi differ diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/Icons/aircontrol.dmi b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/aircontrol.dmi new file mode 100644 index 0000000..11bea3f Binary files /dev/null and b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/aircontrol.dmi differ diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/Icons/airtunnel.dmi b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/airtunnel.dmi new file mode 100644 index 0000000..bb7e378 Binary files /dev/null and b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/airtunnel.dmi differ diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/Icons/airtunnelcomputer.dmi b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/airtunnelcomputer.dmi new file mode 100644 index 0000000..5c6d89b Binary files /dev/null and b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/airtunnelcomputer.dmi differ diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/Icons/alert.dmi b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/alert.dmi new file mode 100644 index 0000000..83cbfde Binary files /dev/null and b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/alert.dmi differ diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/Icons/ammo.dmi b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/ammo.dmi new file mode 100644 index 0000000..f8e70c8 Binary files /dev/null and b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/ammo.dmi differ diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/Icons/assemblies.dmi b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/assemblies.dmi new file mode 100644 index 0000000..eb3ce0f Binary files /dev/null and b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/assemblies.dmi differ diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/Icons/b_items.dmi b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/b_items.dmi new file mode 100644 index 0000000..e8756e2 Binary files /dev/null and b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/b_items.dmi differ diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/Icons/belt.dmi b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/belt.dmi new file mode 100644 index 0000000..f9b425a Binary files /dev/null and b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/belt.dmi differ diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/Icons/canister.dmi b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/canister.dmi new file mode 100644 index 0000000..2346c2b Binary files /dev/null and b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/canister.dmi differ diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/Icons/dam_zones.dmi b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/dam_zones.dmi new file mode 100644 index 0000000..be4ca69 Binary files /dev/null and b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/dam_zones.dmi differ diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/Icons/doors.dmi b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/doors.dmi new file mode 100644 index 0000000..564fa29 Binary files /dev/null and b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/doors.dmi differ diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/Icons/engine.dmi b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/engine.dmi new file mode 100644 index 0000000..06ea1b3 Binary files /dev/null and b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/engine.dmi differ diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/Icons/enginecomputer.dmi b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/enginecomputer.dmi new file mode 100644 index 0000000..1a31384 Binary files /dev/null and b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/enginecomputer.dmi differ diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/Icons/escapepod.dmi b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/escapepod.dmi new file mode 100644 index 0000000..59eeb93 Binary files /dev/null and b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/escapepod.dmi differ diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/Icons/ghost.dmi b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/ghost.dmi new file mode 100644 index 0000000..e9e5ae8 Binary files /dev/null and b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/ghost.dmi differ diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/Icons/help.htm b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/help.htm new file mode 100644 index 0000000..781f978 --- /dev/null +++ b/ss13-40.93.2-base/ss13-40.93.2-base/Icons/help.htm @@ -0,0 +1,121 @@ +
\n /==========EA\n SA+|\nENG MS CR\n /---/\n /--D TL\n +----+\nM T\\ |S |\n|----+| OS+\nL AC-/\\-/A\n
"
+ dat += text("\[disband\]\n", src)
+ dat += text("Max Players: []\n", src, src.max_players)
+ dat += text("Captain: []\n", src, (src.captain ? src.captain : "NONE"))
+ dat += "Members:\n"
+ for(var/mob/M in src.members)
+ dat += text("\t[] ([])\n", M.rname, M.key)
+ //Foreach goto(79)
+ dat += text("Base: \t[]\nColor: \t[]\n\nRefresh", src, src.base, src, src.color, src)
+ dat += ""
+ user << browse(dat, "window=ctf_team")
+ return
+
+/obj/team/Topic(href, href_list)
+
+ if (ticker)
+ return
+ if ((usr.CanAdmin() || usr == src.captain))
+ if (href_list["color"])
+ var/t = input(usr, "Please select a new color", null, null) as null|anything in src.master.avail_colors
+ if ((t && src.master.avail_colors.Find(t)))
+ src.master.avail_colors -= t
+ src.master.avail_colors += src.color
+ src.color = t
+ if (href_list["base"])
+ var/t = input(usr, "Please select a new base", null, null) as null|anything in src.master.avail_bases
+ if ((t && src.master.avail_bases.Find(t)))
+ src.master.avail_bases -= t
+ src.master.avail_bases += src.base
+ src.base = t
+ if (usr.CanAdmin())
+ if (href_list["disband"])
+ //SN src = null
+ del(src)
+ return
+ if (href_list["max_players"])
+ src.max_players = input(usr, "What is the max number of players on this team?", null, null) as num
+ src.max_players = max(src.max_players, 1)
+ if (href_list["captain"])
+ var/L = list( )
+ for(var/mob/human/H in world)
+ if (H.client)
+ L += H
+ //Foreach goto(331)
+ for(var/obj/team/T in world)
+ L -= T.members
+ L -= T.captain
+ //Foreach goto(370)
+ var/mob/m = input(usr, "Please select a new captain", null, null) as null|anything in L
+ if (ismob(m))
+ src.members -= src.captain
+ src.members += m
+ src.captain = m
+ else
+ src.members -= src.captain
+ src.captain = null
+ show_screen(src.captain)
+ src.show_screen(usr)
+ for(var/mob/human/H in world)
+ if ((H.CanAdmin() || H == src.captain))
+ src.master.show_screen(H)
+ //Foreach goto(510)
+ return
+
+/obj/ctf_assist/New()
+
+ ..()
+ going = 0
+ master_mode = "extended"
+ world << "Capture the Flag Mode activated!"
+ world << "The game start has been frozen to accomodate!"
+ for(var/obj/begin/B in world)
+ if (!( locate(/obj/grille, B.loc) ))
+ new /obj/grille( B.loc )
+ //Foreach goto(50)
+ for(var/mob/human/M in world)
+ M.loc = locate(/area/start)
+ if (M.start)
+ M.primary = null
+ del(M.primary)
+ for(var/obj/item/weapon/I in M)
+ //M = null
+ del(M)
+ //Foreach goto(165)
+ M.start = 0
+ //Foreach goto(106)
+ world << "All players have been pushed back!"
+ return
+
+/obj/ctf_assist/proc/next_pick()
+
+ src.pickers_left -= src.picker
+ src.picker = null
+ if (src.players_left.len < 1)
+ world << "We are done picking! (No more people to be picked!)"
+ src.picker = 0
+ return null
+ if (src.pickers_left.len < 1)
+ for(var/obj/team/T in src)
+ if ((T.members.len < src.play_team && T.members.len < T.max_players))
+ if (T.captain)
+ src.pickers_left += T.captain
+ else
+ src.pickers_left += T
+ //Foreach goto(78)
+ if (src.pickers_left.len < 1)
+ world << "We are done picking! (All teams are full!)"
+ src.picker = 0
+ return null
+ else
+ src.picker = pick(src.pickers_left)
+ if (ismob(src.picker))
+ show_pick(src.picker)
+ world << text("[] is picking!", src.picker)
+ else
+ if (istype(src.picker, /obj/team))
+ var/H = pick(src.players_left)
+ var/obj/team/T = src.picker
+ if (istype(T, /obj/team))
+ T.members += H
+ src.players_left -= H
+ spawn( 0 )
+ next_pick()
+ return
+ return src.picker
+ return
+
+/obj/ctf_assist/proc/show_pick(user as mob)
+
+ var/dat = ""
+ dat += text("Players (per Team): []\nBarrier Time: [] minutes\n\nTeams:\n", src, src.play_team, src, src.barriertime)
+ for(var/obj/team/O in src)
+ if (ismob(O.captain))
+ if (O.color)
+ dat += text("\t[]'s Team ([])\n", src, O, O.captain, O.color)
+ else
+ dat += text("\t[]'s Team\n", src, O, O.captain)
+ else
+ if (O.color)
+ dat += text("\t[] Team\n", src, O, O.color)
+ else
+ dat += text("\tNo Captain\n", src, O)
+ //Foreach goto(43)
+ dat += text("\[Add Team\]\nCaptains Select Members\n\nStart the Game (and Set up Map)\n\nWin Options: []\nCollection - All flags same color on clipboard\nConversion - All flags same color\nNone\n\nOther Options:\nAuto-Dress (Teams): []\nRemove Engine Ejection: []\nPaint Cans: []\nImmobile flags (Territory): []\nAdd Neutral Flags to Unused Bases: []\n\nRefresh", src, src, src, src.wintype, src, src, src, src, (src.autodress ? "Yes" : "No"), src, (src.ejectengine ? "Yes" : "No"), src, (src.paint_cans ? "Yes" : "No"), src, (src.immobile ? "Yes" : "No"), src, (src.neutral_replace ? "Yes" : "No"), src)
+ dat += ""
+ user << browse(dat, "window=ctf_assist")
+ return
+
+/obj/ctf_assist/Topic(href, href_list)
+
+ if ((ticker || src.starting))
+ return
+ if (href_list["pick"])
+ if (src.picker == usr)
+ var/H = locate(href_list["pick"])
+ if ((istype(H, /mob/human) && src.players_left.Find(H)))
+ var/obj/team/T = get_team(src.picker)
+ if (istype(T, /obj/team))
+ T.members += H
+ src.players_left -= H
+ next_pick()
+ return
+ else
+ usr << "It's not your turn!"
+ if (!( usr.CanAdmin() ))
+ return
+ if (href_list["team"])
+ var/obj/team/T = locate(href_list["team"])
+ if (istype(T, /obj/team))
+ T.show_screen(usr)
+ if (href_list["play_team"])
+ src.play_team = input(usr, "What is the max number of players per team?", null, null) as num
+ src.play_team = max(src.play_team, 1)
+ if (href_list["barriertime"])
+ src.barriertime = input(usr, "What is the barrier life time (in minutes- decimals allowed)?", null, null) as num
+ src.barriertime = max(src.barriertime, 0.1)
+ if (href_list["win"])
+ if ((href_list["win"] in list( "collect", "convert", "none" )))
+ src.wintype = href_list["win"]
+ if (href_list["autodress"])
+ src.autodress = !( src.autodress )
+ if (href_list["ejectengine"])
+ src.ejectengine = !( src.ejectengine )
+ if (href_list["paint_cans"])
+ src.paint_cans = !( src.paint_cans )
+ if (href_list["neutral_replace"])
+ src.neutral_replace = !( src.neutral_replace )
+ if (href_list["immobile"])
+ src.immobile = !( src.immobile )
+ if (href_list["add_team"])
+ if (src.avail_bases.len > 0)
+ var/obj/team/T = new /obj/team( src )
+ T.master = src
+ T.base = pick(src.avail_bases)
+ T.color = pick(src.avail_colors)
+ src.avail_bases -= T.base
+ src.avail_colors -= T.color
+ if (href_list["select_team"])
+ if (!( src.picking ))
+ src.picking = 1
+ for(var/mob/human/H in world)
+ src.players_left += H
+ //Foreach goto(578)
+ for(var/obj/team/T in src)
+ if (T.members.len < src.play_team)
+ if (T.captain)
+ src.pickers_left += T.captain
+ else
+ src.pickers_left += T
+ src.players_left -= T.members
+ //Foreach goto(618)
+ if ((!( src.players_left.len ) || !( src.pickers_left.len )))
+ src.picking = 0
+ src.players_left.len = 0
+ src.pickers_left.len = 0
+ usr << "Not enough players/teams!"
+ return
+ world << "Now Selecting Teams!!!"
+ src.picker = pick(src.pickers_left)
+ if (ismob(src.picker))
+ show_pick(src.picker)
+ world << text("[] is picking!", src.picker)
+ else
+ if (istype(src.picker, /obj/team))
+ var/H = pick(src.players_left)
+ var/obj/team/T = src.picker
+ if (istype(T, /obj/team))
+ T.members += H
+ src.players_left -= H
+ next_pick()
+ else
+ show_pick(src.picker)
+ world << text("[] is picking!", src.picker)
+ if (href_list["start"])
+ src.starting = 1
+ var/obj/begin/use_me = locate(/obj/begin)
+ for(var/mob/human/H in world)
+ if (H.client)
+ H.start = 1
+ H.occupation1 = pick("Staff Assistant", "Research Assistant", "Technical Assistant", "Medical Assistant")
+ use_me.get_dna_ready(H)
+ H.update_face()
+ //Foreach goto(923)
+ world << "STARTING!!!"
+ for(var/obj/landmark/alterations/A in world)
+ switch(A.name)
+ if("prison shuttle")
+ new /obj/machinery/computer/prison_shuttle( A.loc )
+ //A = null
+ del(A)
+ if("id computer")
+ new /obj/machinery/computer/card( A.loc )
+ //A = null
+ del(A)
+ if("Experimental Technology")
+ new /obj/secloset/highsec( A.loc )
+ //A = null
+ del(A)
+ if("Security Locker")
+ new /obj/secloset/security1( A.loc )
+ //A = null
+ del(A)
+ if("recharger")
+ new /obj/machinery/recharger( A.loc )
+ //A = null
+ del(A)
+ if("barrier")
+ new /obj/barrier( A.loc )
+ //A = null
+ del(A)
+ else
+ //Foreach goto(1035)
+ for(var/obj/closet/wardrobe/W in world)
+ //W = null
+ del(W)
+ //Foreach goto(1238)
+ for(var/obj/item/weapon/clothing/under/T in world)
+ //T = null
+ del(T)
+ //Foreach goto(1281)
+ if (src.ejectengine)
+ for(var/obj/machinery/computer/engine/T in world)
+ //T = null
+ del(T)
+ //Foreach goto(1333)
+ for(var/obj/landmark/alterations/A in world)
+ switch(A.name)
+ if("Prisoners Wardrobe")
+ new /obj/closet/wardrobe/orange( A.loc )
+ //A = null
+ del(A)
+ else
+ //Foreach goto(1376)
+ var/obj/rogue = locate("landmark*CTF-rogue")
+ for(var/mob/human/H in world)
+ H.loc = rogue.loc
+ H.w_uniform = new /obj/item/weapon/clothing/under/orange( H )
+ H.w_uniform.layer = 20
+ H.shoes = new /obj/item/weapon/clothing/shoes/orange( H )
+ H.shoes.layer = 20
+ //Foreach goto(1453)
+ for(var/obj/team/T in src)
+ T.process()
+ //Foreach goto(1545)
+ if (src.paint_cans)
+ for(var/obj/secloset/highsec/S in world)
+ new /obj/item/weapon/paint( S )
+ //Foreach goto(1595)
+ if (src.neutral_replace)
+ while(src.avail_bases.len > 0)
+ var/t = pick(src.avail_bases)
+ src.avail_bases -= t
+ var/obj/L = locate(text("landmark*CTF-supply-[]", t))
+ var/obj/item/weapon/paper/flag/F = new /obj/item/weapon/paper/flag( L.loc )
+ F.name = "flag- 'NEUTRAL Team's Flag'"
+ F.icon_state = "flag_neutral"
+ F.info = "This is an authentic neutral flag!\nCapture the Flag"
+ //L = null
+ del(L)
+ for(var/obj/begin/B in world)
+ if (locate(/obj/grille, B.loc))
+ for(var/obj/grille/G in B.loc)
+ //G = null
+ del(G)
+ //Foreach goto(1789)
+ //Foreach goto(1742)
+ ticker = new /datum/control/gameticker( )
+ spawn( 0 )
+ ticker.process()
+ return
+ data_core = new /obj/datacore( )
+ src.show_screen(usr)
+ for(var/mob/human/H in world)
+ if (H.CanAdmin())
+ src.show_screen(H)
+ //Foreach goto(1881)
+ return
+
+/obj/landmark/New()
+
+ ..()
+ src.tag = text("landmark*[]", src.name)
+ src.invisibility = 100
+
+ return
+
+/obj/start/New()
+
+ ..()
+ src.tag = text("start*[]", src.name)
+ src.invisibility = 100
+ return
+
+/obj/sp_start/New()
+
+ src.tag = text("spstart[]", src.name)
+ src.invisibility = 100
+ return
+
+/obj/admins/Topic(href, href_list)
+
+ if (usr.client != src.owner)
+ world << text("\blue [] has attempted to override the admin panel!", usr.key)
+ world.log << text("ADMIN: [] tried to use the admin panel without authorization.", usr.key)
+ return
+ if (href_list["boot"])
+ if ((src.rank in list( "Moderator", "Supervisor", "Administrator", "Major Administrator", "Primary Administrator" )))
+ var/dat = "Boot Player:
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
[]", changes), "window=changes") + if (!( isturf(src.loc) )) + src.client.eye = src.loc + src.client.perspective = EYE_PERSPECTIVE + if (!( src.start )) + ShowChoices() + var/area/A = locate(/area/start) + var/list/L = list( ) + for(var/turf/T in A) + L += T + //Foreach goto(1251) + src.loc = pick(L) + return + +/mob/human/Bump(atom/movable/AM as mob|obj, yes) + + spawn( 0 ) + if ((!( yes ) || src.now_pushing)) + return + ..() + if (!( istype(AM, /atom/movable) )) + return + if (!( src.now_pushing )) + src.now_pushing = 1 + if (!( AM.anchored )) + var/t = get_dir(src, AM) + step(AM, t) + src.now_pushing = null + return + return + +/mob/human/death() + + src.healths.icon_state = "health5" + src.stat = 2 + src.canmove = 0 + src.blind.layer = 0 + src.lying = 1 + src.icon_state = "dead" + var/cancel + for(var/mob/M in world) + if ((M.client && !( M.stat ))) + cancel = 1 + //Foreach goto(67) + if (!( cancel )) + world << "Everyone is dead! Resetting in 30 seconds!" + if ((ticker && ticker.timing)) + ticker.check_win() + else + spawn( 300 ) + world.Reboot() + return + return ..() + + +/mob/human/m_delay() + + var/tally = 0 + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/straight_jacket)) + tally += 15 + if (istype(src.shoes, /obj/item/weapon/clothing/shoes)) + if (src.shoes.chained) + tally += 15 + else + tally += -1.0 + return tally + + +/mob/human/burn(fi_amount) + + var/ok = 0 + var/obj/item/weapon/organ/external/temp + if (src.r_hand) + src.r_hand.burn(fi_amount) + if (src.l_hand) + src.l_hand.burn(fi_amount) + if (src.back) + src.back.burn(fi_amount) + if (src.belt) + src.belt.burn(fi_amount) + var/still_burning = 127 + if (src.wear_suit) + if (src.wear_suit.burn(fi_amount)) + still_burning &= ~src.wear_suit.fire_protect + if (still_burning & 46) + if (src.w_uniform) + if (src.w_uniform.burn(fi_amount)) + still_burning &= ~src.w_uniform.fire_protect + if (still_burning & 16) + if (src.gloves) + if (src.gloves.burn(fi_amount)) + still_burning &= ~src.gloves.fire_protect + if (still_burning & 64) + if (src.shoes) + if (src.shoes.burn(fi_amount)) + still_burning &= ~src.shoes.fire_protect + if (still_burning & 1) + if (src.head) + if (src.head.burn(fi_amount)) + still_burning &= ~src.head.fire_protect + if (still_burning & 1) + if (src.wear_mask) + if (src.wear_mask.burn(fi_amount)) + still_burning &= ~src.wear_mask.fire_protect + if (still_burning) + if ((src.fire && src.stat != 2)) + flick("fire1", src.fire) + if (still_burning & 1) + if (src.glasses) + src.glasses.burn(fi_amount) + if (src.ears) + src.ears.burn(fi_amount) + if (src.w_radio) + src.w_radio.burn(fi_amount) + temp = null + if (src.organs["head"]) + temp = src.organs["head"] + if (istype(temp, /obj/item/weapon/organ/external)) + ok += temp.take_damage(0, 5) + if (still_burning & 2) + if (src.wear_id) + src.wear_id.burn(fi_amount) + temp = null + if (src.organs["chest"]) + temp = src.organs["chest"] + if (istype(temp, /obj/item/weapon/organ/external)) + ok += temp.take_damage(0, 5) + if (still_burning & 4) + temp = null + if (src.organs["diaper"]) + temp = src.organs["diaper"] + if (istype(temp, /obj/item/weapon/organ/external)) + ok += temp.take_damage(0, 5) + if (still_burning & 8) + temp = null + if (src.organs["l_arm"]) + temp = src.organs["l_arm"] + if (istype(temp, /obj/item/weapon/organ/external)) + ok += temp.take_damage(0, 5) + temp = null + if (src.organs["r_arm"]) + temp = src.organs["r_arm"] + if (istype(temp, /obj/item/weapon/organ/external)) + ok += temp.take_damage(0, 5) + if (still_burning & 32) + temp = null + if (src.organs["l_leg"]) + temp = src.organs["l_leg"] + if (istype(temp, /obj/item/weapon/organ/external)) + ok += temp.take_damage(0, 5) + temp = null + if (src.organs["r_leg"]) + temp = src.organs["r_leg"] + if (istype(temp, /obj/item/weapon/organ/external)) + ok += temp.take_damage(0, 5) + if (still_burning & 64) + temp = null + if (src.organs["l_foot"]) + temp = src.organs["l_foot"] + if (istype(temp, /obj/item/weapon/organ/external)) + ok += temp.take_damage(0, 5) + temp = null + if (src.organs["r_foot"]) + temp = src.organs["r_foot"] + if (istype(temp, /obj/item/weapon/organ/external)) + ok += temp.take_damage(0, 5) + if (still_burning & 16) + temp = null + if (src.organs["l_hand"]) + temp = src.organs["l_hand"] + if (istype(temp, /obj/item/weapon/organ/external)) + ok += temp.take_damage(0, 5) + temp = null + if (src.organs["r_hand"]) + temp = src.organs["r_hand"] + if (istype(temp, /obj/item/weapon/organ/external)) + ok += temp.take_damage(0, 5) + if (ok) + src.UpdateDamageIcon() + else + src.UpdateDamage() + return + +/mob/human/Life() + set background = 1 + var/turf/T = src.loc + var/oxcheck + var/plcheck + + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + if (src.monkeyizing) + return + + + if (src.stat != 2) + if (!( src.m_flag )) + src.last_move = null + src.m_flag = null + if (src.mach) + if (src.machine) + src.mach.icon_state = "mach1" + else + src.mach.icon_state = null + if (src.disabilities & 2) + if ((prob(1) && src.paralysis < 10 && src.r_epil < 1)) + src << "\red You have a seizure!" + src.paralysis = max(10, src.paralysis) + if (src.disabilities & 4) + if ((prob(5) && src.paralysis <= 1 && src.r_ch_cou < 1)) + src.drop_item() + spawn( 0 ) + emote("cough") + return + if (src.disabilities & 8) + if ((prob(10) && src.paralysis <= 1 && src.r_Tourette < 1)) + src.stunned = max(10, src.stunned) + spawn( 0 ) + emote("twitch") + return + if (src.disabilities & 16) + if (prob(10)) + src.stuttering = max(10, src.stuttering) + if ((src.internal && !( src.contents.Find(src.internal) ))) + src.internal = null + if ((!( src.wear_mask ) || !( src.wear_mask.flags | 8 ))) + src.internal = null + if (src.losebreath > 0) + src.losebreath-- + if (prob(7)) + spawn( 0 ) + emote("gasp") + return + oxcheck = 7 + plcheck = 0 + else + if (isobj(T)) + var/obj/O = T + T = O.alter_health(src) + if (isturf(T)) + var/t = 1.4E-4 + if (src.health < -75.0) + t = 5.0E-5 + else + if (src.health < -50.0) + t = 1.0E-4 + if (locate(/obj/move, T)) + T = locate(/obj/move, T) + var/turf_total = T.oxygen + T.poison + T.sl_gas + T.co2 + T.n2 + var/obj/substance/gas/G = new /obj/substance/gas( ) + G.maximum = 10000 + if (src.internal) + src.internal.process(src, G) + if (src.internals) + src.internals.icon_state = "internal1" + + + if (( src.wear_mask.flags & 4 && (!( istype(src.head, /obj/item/weapon/clothing/head) ) || !( src.head.flags & 2 )))) + G.turf_add(T, G.tot_gas() * 0.5) + G.turf_take(T, t / 2 * turf_total - G.tot_gas()) + else + if (src.internals) + src.internals.icon_state = "internal0" + G.turf_take(T, t * turf_total) + if (G.tot_gas() > 650) + G.turf_add(T, G.tot_gas() - 650) + src.aircheck(G) + plcheck = src.t_plasma + oxcheck = src.t_oxygen + G.turf_add(T, G.tot_gas()) + if ((istype(src.loc, /turf/space) && !( locate(/obj/move, src.loc) ))) + var/layers = 20 + if (((istype(src.head, /obj/item/weapon/clothing/head) && src.head.flags & 4) || (istype(src.wear_mask, /obj/item/weapon/clothing/mask) && (!( src.wear_mask.flags & 4 ) && src.flags & 8)))) + layers -= 5 + if (istype(src.w_uniform, /obj/item/weapon/clothing/under)) + layers -= 5 + if ((istype(src.wear_suit, /obj/item/weapon/clothing/suit) && src.wear_suit.flags & 8)) + layers -= 10 + if (layers > oxcheck) + oxcheck = layers + if ((plcheck && src.health >= 0)) + if ((src.paralysis <= 0 || src.weakened <= 0)) + src.toxloss += plcheck + else + src.toxloss += plcheck + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + if ((oxcheck && src.health >= 0)) + if ((src.paralysis <= 0 || src.weakened <= 0)) + src.oxyloss += oxcheck + else + src.oxyloss += oxcheck + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + else + if (src.health >= 0) + if (src.oxyloss >= 10) + var/amount = max(0.15, 1) + src.oxyloss -= amount + else + src.oxyloss = 0 + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + if (src.health <= -100.0) + death() + else + if ((src.sleeping || src.health < 0)) + if (prob(1)) + if (src.health <= 20) + spawn( 0 ) + emote("gasp") + return + else + spawn( 0 ) + emote("snore") + return + if (src.health < 0) + if (src.rejuv <= 0) + src.oxyloss++ + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + src.stat = 1 + if (src.paralysis < 5) + src.paralysis = 5 + else + if (src.resting) + if (src.weakened < 5) + src.weakened = 5 + else + if (src.health < 20) + if (prob(5)) + if (prob(1)) + if (src.health <= 20) + spawn( 0 ) + emote("gasp") + return + src.stat = 1 + if (src.paralysis < 2) + src.paralysis = 2 + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + if (src.rejuv > 0) + src.rejuv-- + if (src.r_epil > 0) + src.r_epil-- + if (src.antitoxs > 0) + src.r_epil -= 4 + if (src.r_ch_cou > 0) + src.r_ch_cou-- + if (src.antitoxs > 0) + src.r_ch_cou -= 4 + if (src.r_Tourette > 0) + src.r_Tourette-- + if (src.antitoxs > 0) + src.r_Tourette -= 4 + if (src.antitoxs > 0) + src.antitoxs-- + if (src.plasma > 0) + src.antitoxs -= 4 + if (src.plasma > 0) + src.plasma-- + src.blinded = null + if (src.drowsyness > 0) + src.drowsyness-- + if (src.paralysis > 1) + src.drowsyness -= 0.5 + else + if (src.weakened > 1) + src.drowsyness -= 0.25 + src.eye_blurry = max(2, src.eye_blurry) + if (prob(5)) + src.sleeping = 1 + src.paralysis = 5 + if ((src.health > -10.0 && src.drowsyness > 1200)) + if (src.antitoxs < 1) + src.toxloss += plcheck + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + plcheck = 1 + var/mental_danger = 0 + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + if (((src.r_epil > 0 && !( src.disabilities & 2 )) || (src.r_Tourette > 0 && !( src.disabilities & 8 )))) + src.stuttering = max(2, src.drowsyness) + mental_danger = 1 + src.drowsyness = max(2, src.drowsyness) + if (!( src.paralysis )) + if (prob(5)) + src << "\red You have a seizure!" + src.paralysis = 10 + else + if (prob(5)) + spawn( 0 ) + emote("twitch") + return + src.stunned = 10 + else + if (prob(30)) + spawn( 0 ) + emote("drool") + return + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + if (src.health > -10.0) + var/threshold = 60 + if (mental_danger) + threshold = 30 + if (src.r_ch_cou > 3600) + if (src.antitoxs < 1) + src.toxloss += 1 + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + plcheck = 1 + if (prob(15)) + spawn( 0 ) + emote("twitch") + src.stunned = 2 + return + if (src.r_epil > threshold * 60) + if (src.antitoxs < 1) + src.toxloss += 1 + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + plcheck = 1 + if (prob(15)) + spawn( 0 ) + emote("twitch") + src.stunned = 2 + return + if (src.r_Tourette > threshold * 60) + if (src.antitoxs < 1) + src.toxloss += 1 + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + plcheck = 1 + if (prob(15)) + spawn( 0 ) + emote("twitch") + src.stunned = 2 + return + if (src.antitoxs > 7200) + src.toxloss += 1 + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + plcheck = 1 + if (prob(15)) + spawn( 0 ) + emote("drool") + return + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + if (src.health > -50.0) + if (src.plasma > 0) + if (src.antitoxs < 1) + src.toxloss += 1 + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + plcheck = 1 + if (prob(15)) + spawn( 0 ) + emote("moan") + return + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + if (src.stat != 2) + if (src.paralysis + src.stunned + src.weakened > 0) + if (src.stunned > 0) + src.stunned-- + src.stat = 0 + if (src.weakened > 0) + src.weakened-- + src.lying = 1 + src.stat = 0 + if (src.paralysis > 0) + src.paralysis-- + src.blinded = 1 + src.lying = 1 + src.stat = 1 + src.canmove = 0 + var/h = src.hand + src.hand = 0 + drop_item() + src.hand = 1 + drop_item() + src.hand = h + else + src.canmove = 1 + src.lying = 0 + src.stat = 0 + else + src.lying = 1 + src.blinded = 1 + src.stat = 2 + src.canmove = 0 + if (src.stuttering > 0) + src.stuttering-- + if (src.eye_blind > 0) + src.eye_blind-- + src.blinded = 1 + if (src.ear_deaf > 0) + src.ear_deaf-- + else + if (src.ear_damage < 25) + src.ear_damage -= 0.05 + if (istype(src.ears, /obj/item/weapon/clothing/ears/earmuffs)) + src.ear_damage -= 0.15 + src.ear_damage = max(src.ear_damage, 0) + if (src.buckled) + src.lying = 0 + src.density = !( src.lying ) + src.pixel_y = 0 + src.pixel_x = 0 + var/add_weight = 0 + if (istype(src.l_hand, /obj/item/weapon/grab)) + add_weight += 1250000.0 + if (istype(src.r_hand, /obj/item/weapon/grab)) + add_weight += 1250000.0 + if (locate(/obj/item/weapon/grab, src.grabbed_by)) + var/a_grabs = 0 + for(var/obj/item/weapon/grab/G in src.grabbed_by) + G.process() + if (G) + if (G.state > 1) + a_grabs++ + if ((G.state > 2 && src.loc == G.assailant.loc)) + src.density = 0 + src.lying = 0 + switch(G.assailant.dir) + if(1.0) + src.pixel_y = 8 + if(2.0) + src.pixel_y = -8.0 + if(4.0) + src.pixel_x = 8 + if(8.0) + src.pixel_x = -8.0 + + //Foreach goto(2918) + src.weight = ((src.grabbed_by.len - a_grabs) / 2 + 1) * 1250000.0 + (a_grabs * 2500000.0) + else + if (src.lying) + src.weight = add_weight + 2500000.0 + else + src.weight = add_weight + 1250000.0 + if ((src.sdisabilities & 1 || istype(src.glasses, /obj/item/weapon/clothing/glasses/blindfold))) + src.blinded = 1 + if ((src.sdisabilities & 4 || istype(src.ears, /obj/item/weapon/clothing/ears/earmuffs))) + src.ear_deaf = 1 + if (src.eye_blurry > 0) + src.eye_blurry-- + src.eye_blurry = max(0, src.eye_blurry) + if (src.client) + src.client.screen -= main_hud.g_dither + if (istype(src.wear_mask, /obj/item/weapon/clothing/mask/gasmask)) + src.client.screen += main_hud.g_dither + if (istype(src.glasses, /obj/item/weapon/clothing/glasses/meson)) + src.sight |= SEE_TURFS + src.see_invisible = 0 + else + if (istype(src.glasses, /obj/item/weapon/clothing/glasses/thermal)) + src.sight |= SEE_TURFS + src.sight |= SEE_MOBS + src.see_invisible = 2 + else + src.sight &= 65519 + src.sight &= 65531 + src.see_invisible = 0 + if (src.mach) + if (src.machine) + src.mach.icon_state = "mach1" + else + src.mach.icon_state = "blank" + if (src.sleep) + src.sleep.icon_state = text("sleep[]", src.sleeping) + if (src.rest) + src.rest.icon_state = text("rest[]", src.resting) + if (src.healths) + if (src.stat < 2) + if (src.health >= 100) + src.healths.icon_state = "health0" + else + if (src.health >= 75) + src.healths.icon_state = "health1" + else + if (src.health >= 50) + src.healths.icon_state = "health2" + else + if (src.health > 20) + src.healths.icon_state = "health3" + else + src.healths.icon_state = "health4" + else + src.healths.icon_state = "health5" + if (src.pullin) + if (src.pulling) + src.pullin.icon_state = "pull1" + else + src.pullin.icon_state = "pull0" + if (src.toxin) + if (plcheck) + src.toxin.icon_state = "toxin1" + else + src.toxin.icon_state = "toxin0" + if (src.oxygen) + if (oxcheck) + src.oxygen.icon_state = "oxy1" + else + src.oxygen.icon_state = "oxy0" + src.client.screen -= src.hud_used.blurry + src.client.screen -= src.hud_used.vimpaired + if ((src.blind && src.stat != 2)) + if (src.blinded) + src.blind.layer = 18 + else + src.blind.layer = 0 + if ((src.disabilities & 1 && !( istype(src.glasses, /obj/item/weapon/clothing/glasses/regular) ))) + src.client.screen -= src.hud_used.vimpaired + src.client.screen += src.hud_used.vimpaired + else + src.client.screen -= src.hud_used.vimpaired + if (src.eye_blurry) + src.client.screen -= src.hud_used.blurry + src.client.screen += src.hud_used.blurry + else + src.client.screen -= src.hud_used.blurry + if (src.stat != 2) + if (src.machine) + if (!( src.machine.check_eye(src) )) + src.reset_view(null) + else + reset_view(null) + if (src.primary) + src.primary.cleanup() + src.UpdateClothing() + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + return + +/mob/human/Stat() + + ..() + statpanel("Status") + stat(null, text("Intent: []", src.a_intent)) + stat(null, text("Move Mode: []", src.m_intent)) + + if (src.client.statpanel == "Status") + if (ticker) + var/timel = ticker.timeleft + stat(null, text("ETA-[]:[][]", timel / 600 % 60, timel / 100 % 6, timel / 10 % 10)) + if (src.internal) + if (!( src.internal.gas )) + //src.internal = null + del(src.internal) + else + stat(null, text("Internal Atmosphere: []", src.internal)) + stat(null, text("Internal Oxygen: []", src.internal.gas.oxygen)) + stat(null, text("Internal Plasma: []", src.internal.gas.plasma)) + + + return + +/mob/human/las_act(flag, A as obj) + + var/shielded = 0 + for(var/obj/item/weapon/shield/S in src) + if (S.active) + if (flag == "bullet") + return + shielded = 1 + S.active = 0 + S.icon_state = "shield0" + //Foreach goto(22) + for(var/obj/item/weapon/cloaking_device/S in src) + if (S.active) + shielded = 1 + S.active = 0 + S.icon_state = "shield0" + //Foreach goto(99) + if ((shielded && flag != "bullet")) + if (!( flag )) + src << "\blue Ohhh that shield isn't going to help here!" + src.paralysis = 120 + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + if (locate(/obj/item/weapon/grab, src)) + var/mob/safe = null + if (istype(src.l_hand, /obj/item/weapon/grab)) + var/obj/item/weapon/grab/G = src.l_hand + if ((G.state == 3 && get_dir(src, A) == src.dir)) + safe = G.affecting + if (istype(src.r_hand, /obj/item/weapon/grab)) + var/obj/item/weapon.grab/G = src.r_hand + if ((G.state == 3 && get_dir(src, A) == src.dir)) + safe = G.affecting + if (safe) + return safe.las_act(flag, A) + if (flag == "bullet") + var/d = 51 + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/armor)) + if (prob(70)) + show_message("\red Your armor absorbs the hit!", 4) + return + else + if (prob(40)) + show_message("\red Your armor only softens the hit!", 4) + if (prob(20)) + d = d / 2 + d = d / 4 + else + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/swat_suit)) + if (prob(90)) + show_message("\red Your armor absorbs the blow!", 4) + return + else + if (prob(90)) + show_message("\red Your armor only softens the blow!", 4) + if (prob(60)) + d = d / 2 + d = d / 5 + if (src.stat != 2) + if (istype(src.organs["chest"], /obj/item/weapon/organ/external)) + var/obj/item/weapon/organ/external/temp = src.organs["chest"] + temp.take_damage(d, 0) + src.UpdateDamageIcon() + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + if (prob(50)) + src.weakened = 5 + return + else + if (flag) + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/armor)) + if (prob(5)) + show_message("\red Your armor absorbs the hit!", 4) + return + else + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/swat_suit)) + if (prob(70)) + show_message("\red Your armor absorbs the hit!", 4) + return + if (prob(75)) + src.stunned = 10 + else + src.weakened = 10 + if (src.stuttering < 10) + src.stuttering = 10 + else + var/d = 20 + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/armor)) + if (prob(40)) + show_message("\red Your armor absorbs the hit!", 4) + return + else + if (prob(40)) + show_message("\red Your armor only softens the hit!", 4) + if (prob(20)) + d = d / 2 + d = d / 2 + else + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/swat_suit)) + if (prob(70)) + show_message("\red Your armor absorbs the blow!", 4) + return + else + if (prob(90)) + show_message("\red Your armor only softens the blow!", 4) + if (prob(60)) + d = d / 2 + d = d / 2 + if (src.stat != 2) + if (istype(src.organs["chest"], /obj/item/weapon/organ/external)) + var/obj/item/weapon/organ/external/temp = src.organs["chest"] + temp.take_damage(d, 0) + src.UpdateDamageIcon() + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + if (prob(25)) + src.stunned = 1 + return + +/mob/human/say(message as text) + + var/alt_name + if (src.muted) + return + if ((src.name != src.rname && src.wear_id)) + alt_name = text(" (as [])", src.wear_id.registered) + if (src.stat == 2) + for(var/mob/M in world) + if (M.stat == 2) + M << text("[][] []: []", src.rname, alt_name, (src.stat > 1 ? "\[dead \]" : ""), message) + //Foreach goto(69) + return + if ((copytext(message, 1, 2) == "*" && !( src.stat ))) + src.emote(copytext(message, 2, length(message) + 1)) + return + message = copytext(message, 1, 256) + if (src.sdisabilities & 2) + return + if (src.stat >= 1) + return + if ((!( message ) || istype(src.wear_mask, /obj/item/weapon/clothing/mask/muzzle))) + return + if (src.stat < 2) + var/list/L = list( ) + var/pre = copytext(message, 1, 4) + var/italics = 0 + var/obj_range = null + if (pre == "\[r\]") + message = copytext(message, 4, length(message) + 1) + if (src.r_hand) + src.r_hand.talk_into(usr, message) + L += hearers(1, null) + obj_range = 1 + italics = 1 + else + if (pre == "\[h\]") + message = copytext(message, 4, length(message) + 1) + if (src.w_radio) + src.w_radio.talk_into(usr, message) + L += hearers(1, null) + obj_range = 1 + italics = 1 + else + if (pre == "\[l\]") + message = copytext(message, 4, length(message) + 1) + if (src.l_hand) + src.l_hand.talk_into(usr, message) + L += hearers(1, null) + obj_range = 1 + italics = 1 + else + if (pre == "\[w\]") + message = copytext(message, 4, length(message) + 1) + L += hearers(1, null) + obj_range = 1 + italics = 1 + else + if (pre == "\[i\]") + message = copytext(message, 4, length(message) + 1) + for(var/obj/item/weapon/radio/intercom/I in view(1, null)) + I.talk_into(usr, message) + //Foreach goto(626) + L += hearers(1, null) + obj_range = 1 + italics = 1 + else + L += hearers(null, null) + pre = null + L -= src + L += src + var/turf/T = src.loc + if (locate(/obj/move, T)) + T = locate(/obj/move, T) + message = html_encode(message) + if (src.stuttering) + message = stutter(message) + if (italics) + message = text("[]", message) + if (((src.oxygen && src.oxygen.icon_state == "oxy0") || (!( (istype(T, /turf) || istype(T, /obj/move)) ) || T.oxygen > 0))) + for(var/mob/M in L) + if (istype(M, src.type)) + M.show_message(text("[][]: []", src.rname, alt_name, message), 2) + else + M.show_message(text("The human: []", stars(message)), 2) + //Foreach goto(864) + for(var/obj/O in view(obj_range, null)) + spawn( 0 ) + if (O) + O.hear_talk(usr, message) + return + //Foreach goto(948) + for(var/mob/M in world) + if (M.stat > 1) + M << text("[][] []: []", src.rname, alt_name, (src.stat > 1 ? "\[dead \]" : ""), message) + //Foreach goto(1005) + return + +/mob/human/UpdateClothing() + + ..() + if (src.monkeyizing) + return + if (!( src.w_uniform )) + var/obj/item/weapon/W = src.r_store + if (W) + u_equip(W) + if (src.client) + src.client.screen -= W + if (W) + W.loc = src.loc + W.dropped(src) + W.layer = initial(W.layer) + W = src.l_store + if (W) + u_equip(W) + if (src.client) + src.client.screen -= W + if (W) + W.loc = src.loc + W.dropped(src) + W.layer = initial(W.layer) + W = src.wear_id + if (W) + u_equip(W) + if (src.client) + src.client.screen -= W + if (W) + W.loc = src.loc + W.dropped(src) + W.layer = initial(W.layer) + W = src.belt + if (W) + u_equip(W) + if (src.client) + src.client.screen -= W + if (W) + W.loc = src.loc + W.dropped(src) + W.layer = initial(W.layer) + //for(var/i in src.overlays) + // src.overlays -= i + src.overlays = null + //Foreach goto(351) + //for(var/i in src.zone_sel.overlays) + // src.zone_sel.overlays -= i + //Foreach goto(385) + if(src.zone_sel) + src.zone_sel.overlays = src.body_standing + src.zone_sel.overlays += image("icon" = 'zone_sel.dmi', "icon_state" = text("[]", src.zone_sel.selecting)) + + if (src.lying) + src.icon = src.lying_icon + if (src.face2) + src.overlays += src.face2 + src.overlays += src.body_lying + else + src.icon = src.stand_icon + if (src.face) + src.overlays += src.face + src.overlays += src.body_standing + if (src.w_uniform) + if (istype(src.w_uniform, /obj/item/weapon/clothing/under)) + + + var/t1 = src.w_uniform.color + + if (!( t1 )) + t1 = src.icon_state + src.overlays += image("icon" = 'uniforms.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER) + + + src.w_uniform.screen_loc = "2,2" + if (src.wear_id) + src.overlays += image("icon" = 'mob.dmi', "icon_state" = text("id[]", (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER) + if (src.client) + src.client.screen -= src.hud_used.other + src.client.screen -= src.hud_used.intents + src.client.screen -= src.hud_used.mov_int + if ((src.client && src.other)) + src.client.screen += src.hud_used.other + if (src.gloves) + var/t1 = src.gloves.s_istate + if (!( t1 )) + t1 = src.gloves.icon_state + src.overlays += image("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER) + src.gloves.screen_loc = "4,2" + if (src.glasses) + var/t1 = src.glasses.s_istate + if (!( t1 )) + t1 = src.glasses.icon_state + src.overlays += image("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER) + src.glasses.screen_loc = "6,2" + if (src.ears) + var/t1 = src.ears.s_istate + if (!( t1 )) + t1 = src.ears.icon_state + src.overlays += image("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER) + src.ears.screen_loc = "9,2" + if (src.shoes) + var/t1 = src.shoes.s_istate + if (!( t1 )) + t1 = src.shoes.icon_state + src.overlays += image("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER) + src.shoes.screen_loc = "5,2" + else + if (src.gloves) + var/t1 = src.gloves.s_istate + if (!( t1 )) + t1 = src.gloves.icon_state + src.overlays += image("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER) + src.gloves.screen_loc = null + if (src.glasses) + var/t1 = src.glasses.s_istate + if (!( t1 )) + t1 = src.glasses.icon_state + src.overlays += image("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER) + src.glasses.screen_loc = null + if (src.ears) + var/t1 = src.ears.s_istate + if (!( t1 )) + t1 = src.ears.icon_state + src.overlays += image("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER) + src.ears.screen_loc = null + if (src.shoes) + var/t1 = src.shoes.s_istate + if (!( t1 )) + t1 = src.shoes.icon_state + src.overlays += image("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER) + src.shoes.screen_loc = null + if (src.w_radio) + if (!( src.lying )) + src.overlays += image("icon" = 'mob.dmi', "icon_state" = "headset", "layer" = MOB_LAYER) + else + src.overlays += image("icon" = 'mob.dmi', "icon_state" = "headset2", "layer" = MOB_LAYER) + src.w_radio.screen_loc = "3,1" + if (src.wear_mask) + if (istype(src.wear_mask, /obj/item/weapon/clothing/mask)) + var/t1 = src.wear_mask.s_istate + if (!( t1 )) + t1 = src.wear_mask.icon_state + src.overlays += image("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER) + src.wear_mask.screen_loc = "2,3" + if (src.client) + if (src.i_select) + if (src.intent) + src.client.screen += src.hud_used.intents + src.i_select.screen_loc = src.intent + else + src.i_select.screen_loc = null + if (src.m_select) + if (src.m_int) + src.client.screen += src.hud_used.mov_int + src.m_select.screen_loc = src.m_int + else + src.m_select.screen_loc = null + if (src.wear_suit) + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit)) + var/t1 = src.wear_suit.s_istate + if (!( t1 )) + t1 = src.wear_suit.icon_state + src.overlays += image("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER) + src.wear_suit.screen_loc = "2,1" + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/straight_jacket)) + if (src.handcuffed) + src.handcuffed.loc = src.loc + src.handcuffed.layer = initial(src.handcuffed.layer) + src.handcuffed = null + if ((src.l_hand || src.r_hand)) + var/h = src.hand + src.hand = 1 + drop_item() + src.hand = 0 + drop_item() + src.hand = h + if ((src.client && src.other)) + if (src.head) + var/t1 = src.head.s_istate + if (!( t1 )) + t1 = src.head.icon_state + src.overlays += image("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER) + src.head.screen_loc = "7,2" + if (src.belt) + var/t1 = src.belt.s_istate + if (!( t1 )) + t1 = src.belt.icon_state + src.overlays += image("icon" = 'belt.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER) + src.belt.screen_loc = "8,2" + else + if (src.head) + var/t1 = src.head.s_istate + if (!( t1 )) + t1 = src.head.icon_state + src.overlays += image("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER) + src.head.screen_loc = null + if (src.belt) + var/t1 = src.belt.s_istate + if (!( t1 )) + t1 = src.belt.icon_state + src.overlays += image("icon" = 'belt.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER) + src.belt.screen_loc = null + if (src.wear_id) + if (((src.wear_mask && !( src.wear_mask.see_face )) || (src.head && !( src.head.see_face )))) + src.name = (src.wear_id.registered ? src.wear_id.registered : "Unknown") + else + if (src.wear_id.registered != src.rname) + src.name = text("[] (as [])", src.rname, src.wear_id.registered) + else + src.name = text("[]", src.rname) + src.wear_id.screen_loc = "1,1" + else + src.name = text("[]", src.rname) + if (src.l_store) + src.l_store.screen_loc = "4,1" + if (src.r_store) + src.r_store.screen_loc = "5,1" + if (src.r_hand) + + var/t1 = src.r_hand.s_istate + if (!( t1 )) + t1 = src.r_hand.icon_state + src.overlays += image("icon" = 'r_items.dmi', "icon_state" = t1, "layer" = MOB_LAYER) + + + + src.r_hand.screen_loc = "1,2" + if (src.l_hand) + var/t1 = src.l_hand.s_istate + if (!( t1 )) + t1 = src.l_hand.icon_state + src.overlays += image("icon" = 'l_items.dmi', "icon_state" = t1, "layer" = MOB_LAYER) + + + + src.l_hand.screen_loc = "3,2" + if (src.back) + if (istype(src.back, /obj/item/weapon/radio/electropack)) + if (!( src.lying )) + src.overlays += image("icon" = 'mob.dmi', "icon_state" = "backe", "layer" = MOB_LAYER) + else + src.overlays += image("icon" = 'mob.dmi', "icon_state" = "backe2", "layer" = MOB_LAYER) + else + if (!( src.lying )) + src.overlays += image("icon" = 'mob.dmi', "icon_state" = "back", "layer" = MOB_LAYER) + else + src.overlays += image("icon" = 'mob.dmi', "icon_state" = "back2", "layer" = MOB_LAYER) + src.back.screen_loc = "3,3" + if (src.handcuffed) + src.pulling = null + if (!( src.lying )) + src.overlays += image("icon" = 'mob.dmi', "icon_state" = "handcuff1", "layer" = MOB_LAYER) + else + src.overlays += image("icon" = 'mob.dmi', "icon_state" = "handcuff2", "layer" = MOB_LAYER) + if (src.client) + src.client.screen -= src.contents + src.client.screen += src.contents + var/shielded = 0 + for(var/obj/item/weapon/shield/S in src) + if (S.active) + shielded = 1 + else + //Foreach continue //goto(2917) + for(var/obj/item/weapon/cloaking_device/S in src) + if (S.active) + shielded = 2 + else + //Foreach continue //goto(2969) + if (shielded == 2) + src.invisibility = 2 + else + src.invisibility = 0 + if (shielded) + src.overlays += image("icon" = 'mob.dmi', "icon_state" = "shield", "layer" = MOB_LAYER) + for(var/mob/M in viewers(1, src)) + if ((M.client && M.machine == src)) + spawn( 0 ) + src.show_inv(M) + return + //Foreach goto(3088) + src.last_b_state = src.stat + + return + +/mob/human/hand_p(mob/M as mob) + + if (M.a_intent == "hurt") + if (istype(M.wear_mask, /obj/item/weapon/clothing/mask/muzzle)) + return + if (((prob(60) || (ticker && ticker.mode == "monkey")) && src.health > 0)) + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/sp_suit)) + if (prob(95)) + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red The monkey has attempted to bite []!", src), 1) + //Foreach goto(101) + return + else + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/bio_suit)) + if (prob(90)) + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red The monkey has attempted to bite []!", src), 1) + //Foreach goto(167) + return + else + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/armor)) + if (prob(60)) + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red The monkey has attempted to bite []!", src), 1) + //Foreach goto(233) + return + else + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/swat_suit)) + if (prob(99)) + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red The monkey has attempted to bite []!", src), 1) + //Foreach goto(299) + return + for(var/mob/O in viewers(src, null)) + if ((O.client && !( O.blinded ))) + O.show_message(text("\red The monkey has bit []!", src), 1) + //Foreach goto(344) + var/damage = rand(1, 3) + var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg", "diaper") + if (istype(src.organs[text("[]", dam_zone)], /obj/item/weapon/organ/external)) + var/obj/item/weapon/organ/external/temp = src.organs[text("[]", dam_zone)] + if (temp.take_damage(damage, 0)) + src.UpdateDamageIcon() + else + src.UpdateDamage() + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + if ((ticker && ticker.mode == "monkey")) + src.monkeyize() + else + for(var/mob/O in viewers(src, null)) + if ((O.client && !( O.blinded ))) + O.show_message(text("\red The monkey has attempted to bite []!", src), 1) + //Foreach goto(580) + return + +/mob/human/attack_paw(mob/M as mob) + + if (M.a_intent == "help") + src.sleeping = 0 + src.resting = 0 + for(var/mob/O in viewers(src, null)) + O.show_message(text("\blue The monkey shakes [] trying to wake him up!", src), 1) + //Foreach goto(47) + else + if (istype(src.wear_mask, /obj/item/weapon/clothing/mask/muzzle)) + return + if (((prob(60) || (ticker && ticker.mode == "monkey")) && src.health > 0)) + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/sp_suit)) + if (prob(95)) + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red The monkey has attempted to bite []!", src), 1) + //Foreach goto(159) + return + else + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/bio_suit)) + if (prob(90)) + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red The monkey has attempted to bite []!", src), 1) + //Foreach goto(225) + return + else + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/armor)) + if (prob(60)) + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red The monkey has attempted to bite []!", src), 1) + //Foreach goto(291) + return + else + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/swat_suit)) + if (prob(99)) + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red The monkey has attempted to bite []!", src), 1) + //Foreach goto(357) + return + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red The monkey has bit []!", src), 1) + //Foreach goto(402) + var/damage = rand(1, 3) + var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg", "diaper") + if (istype(src.organs[text("[]", dam_zone)], /obj/item/weapon/organ/external)) + var/obj/item/weapon/organ/external/temp = src.organs[text("[]", dam_zone)] + if (temp.take_damage(damage, 0)) + src.UpdateDamageIcon() + else + src.UpdateDamage() + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + if ((ticker && ticker.mode == "monkey")) + src.monkeyize() + else + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red The monkey has attempted to bite []!", src), 1) + //Foreach goto(623) + return + +/mob/human/attack_hand(mob/human/M as mob) + + if (M.a_intent == "help") + if (src.health > 0) + if (src.w_uniform) + src.w_uniform.add_fingerprint(M) + src.sleeping = 0 + src.resting = 0 + for(var/mob/O in viewers(src, null)) + O.show_message(text("\blue [] shakes [] trying to wake [] up!", M, src, src), 1) + //Foreach goto(80) + else + if (M.health >= -75.0) + if (((M.head && M.head.flags & 4) || ((M.wear_mask && !( M.wear_mask.flags & 32 )) || ((src.head && src.head.flags & 4) || (src.wear_mask && !( src.wear_mask.flags & 32 )))))) + M << "\blue Remove that mask!" + return + var/obj/equip_e/human/O = new /obj/equip_e/human( ) + O.source = M + O.target = src + O.s_loc = M.loc + O.t_loc = src.loc + O.place = "CPR" + src.requests += O + spawn( 0 ) + O.process() + return + else + if (M.a_intent == "grab") + if (M == src) + return + if (src.w_uniform) + src.w_uniform.add_fingerprint(M) + var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M ) + G.assailant = M + if (M.hand) + M.l_hand = G + else + M.r_hand = G + G.layer = 20 + G.affecting = src + src.grabbed_by += G + G.synch() + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red [] has grabbed [] passively!", M, src), 1) + //Foreach goto(441) + else + if (M.a_intent == "hurt") + if (src.w_uniform) + src.w_uniform.add_fingerprint(M) + var/damage = rand(1, 9) + var/obj/item/weapon/organ/external/affecting = src.organs["chest"] + var/t = M.zone_sel.selecting + if ((t in list( "hair", "eyes", "mouth", "neck" ))) + t = "head" + var/def_zone = ran_zone(t) + if (src.organs[text("[]", def_zone)]) + affecting = src.organs[text("[]", def_zone)] + if ((istype(affecting, /obj/item/weapon/organ/external) && prob(90))) + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red [] has punched []!", M, src), 1) + //Foreach goto(646) + if (def_zone == "head") + if ((((src.head && src.head.brute_protect & 1) || (src.wear_mask && src.wear_mask.brute_protect & 1)) && prob(99))) + if (prob(20)) + affecting.take_damage(damage, 0) + else + src.show_message("\red You have been protected from a hit to the head.") + return + if (damage > 4.9) + if (src.weakened < 10) + src.weakened = rand(10, 15) + for(var/mob/O in viewers(M, null)) + O.show_message(text("\red [] has weakened []!", M, src), 1, "\red You hear someone fall.", 2) + //Foreach goto(820) + affecting.take_damage(damage) + else + if (def_zone == "chest") + if ((((src.wear_suit && src.wear_suit.brute_protect & 2) || (src.w_uniform && src.w_uniform.brute_protect & 2)) && prob(85))) + src.show_message("\red You have been protected from a hit to the cheast.") + return + if (damage > 4.9) + if (prob(50)) + if (src.weakened < 5) + src.weakened = 5 + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red [] has knocked down []!", M, src), 1, "\red You hear someone fall.", 2) + //Foreach goto(993) + else + if (src.stunned < 5) + src.stunned = 5 + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red [] has stunned []!", M, src), 1) + //Foreach goto(1063) + src.stat = 1 + affecting.take_damage(damage) + else + if (def_zone == "diaper") + if ((((src.wear_suit && src.wear_suit.brute_protect & 4) || (src.w_uniform && src.w_uniform.brute_protect & 4)) && prob(75))) + src.show_message("\red You have been protected from a hit to the lower chest/diaper.") + return + if (damage > 4.9) + if (prob(50)) + if (src.weakened < 3) + src.weakened = 3 + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red [] has knocked down []!", M, src), 1, "\red You hear someone fall.", 2) + //Foreach goto(1239) + else + if (src.stunned < 3) + src.stunned = 3 + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red [] has stunned []!", M, src), 1) + //Foreach goto(1309) + src.stat = 1 + affecting.take_damage(damage) + else + affecting.take_damage(damage) + src.UpdateDamageIcon() + src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss + else + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red [] has attempted to punch []!", M, src), 1) + //Foreach goto(1419) + return + else + if (!( src.lying )) + if (src.w_uniform) + src.w_uniform.add_fingerprint(M) + var/randn = rand(1, 100) + if (randn <= 25) + src.weakened = 2 + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red [] has pushed down []!", M, src), 1) + //Foreach goto(1529) + else + if (randn <= 60) + src.drop_item() + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red [] has disarmed []!", M, src), 1) + //Foreach goto(1596) + else + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red [] has attempted to disarm []!", M, src), 1) + //Foreach goto(1643) + return + +/mob/human/Topic(href, href_list) + + if ((src == usr && !( src.start ))) + if (findtext(href, "occ", 1, null)) + if (findtext(href, "cancel", 1, null)) + usr << browse(null, text("window=\ref[]occupation", src)) + return + if (!( findtext(href, "job", 1, null) )) + src.SetChoices(text2num(href_list["occ"])) + else + src.SetJob(arglist(list("occ" = text2num(href_list["occ"]), "job" = href_list["job"]))) + else + if (findtext(href, "rname", 1, null)) + var/t1 = href_list["rname"] + if (t1 == "input") + t1 = input("Please select a name:", "Character Generation", null, null) as text + if ((!( src.start ) && t1)) + if (length(t1) >= 26) + t1 = copytext(t1, 1, 26) + t1 = dd_replacetext(t1, ">", "'") + src.rname = t1 + else + if (findtext(href, "age", 1, null)) + var/t1 = href_list["age"] + if (t1 == "input") + t1 = input("Please select type in age: 20-45", "Character Generation", null, null) as num + if ((!( src.start ) && t1)) + src.age = max(min(round(text2num(t1)), 45), 20) + else + if (findtext(href, "b_type", 1, null)) + var/t1 = href_list["b_type"] + if (t1 == "input") + t1 = input("Please select a blood type:", "Character Generation", null, null) as null|anything in list( "A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-" ) + if ((!( src.start ) && t1)) + src.b_type = t1 + else + if (findtext(href, "nr_hair", 1, null)) + var/t1 = href_list["nr_hair"] + if (t1 == "input") + t1 = input("Please select red hair component: 1-255", "Character Generation", null, null) as text + if ((!( src.start ) && t1)) + src.nr_hair = max(min(round(text2num(t1)), 255), 1) + else + if (findtext(href, "ng_hair", 1, null)) + var/t1 = href_list["ng_hair"] + if (t1 == "input") + t1 = input("Please select green hair component: 1-255", "Character Generation", null, null) as text + if ((!( src.start ) && t1)) + src.ng_hair = max(min(round(text2num(t1)), 255), 1) + else + if (findtext(href, "nb_hair", 1, null)) + var/t1 = href_list["nb_hair"] + if (t1 == "input") + t1 = input("Please select blue hair component: 1-255", "Character Generation", null, null) as text + if ((!( src.start ) && t1)) + src.nb_hair = max(min(round(text2num(t1)), 255), 1) + else + if (findtext(href, "r_eyes", 1, null)) + var/t1 = href_list["r_eyes"] + if (t1 == "input") + t1 = input("Please select red eyes component: 1-255", "Character Generation", null, null) as text + if ((!( src.start ) && t1)) + src.r_eyes = max(min(round(text2num(t1)), 255), 1) + else + if (findtext(href, "ns_tone", 1, null)) + var/t1 = href_list["ns_tone"] + if (t1 == "input") + t1 = input("Please select skin tone level: 1-220 (1=albino,35=caucasian, 150=black220='very' black)", "Character Generation", null, null) as text + if ((!( src.start ) && t1)) + src.ns_tone = max(min(round(text2num(t1)), 220), 1) + src.ns_tone = -src.ns_tone + 35 + else + if (findtext(href, "g_eyes", 1, null)) + var/t1 = href_list["g_eyes"] + if (t1 == "input") + t1 = input("Please select green eyes component: 1-255", "Character Generation", null, null) as text + if ((!( src.start ) && t1)) + src.g_eyes = max(min(round(text2num(t1)), 255), 1) + else + if (findtext(href, "b_eyes", 1, null)) + var/t1 = href_list["b_eyes"] + if (t1 == "input") + t1 = input("Please select blue eyes component: 1-255", "Character Generation", null, null) as text + if ((!( src.start ) && t1)) + src.b_eyes = max(min(round(text2num(t1)), 255), 1) + else + if (findtext(href, "h_style", 1, null)) + var/t1 = href_list["h_style"] + if (t1 == "input") + t1 = input("Please select hair style", "Character Generation", null, null) as null|anything in list( "Cut Hair", "Short Hair (M)", "Long Hair (F)", "Bald" ) + if ((!( src.start ) && t1)) + src.h_style = t1 + switch(t1) + if("Short Hair (M)") + src.h_style_r = "hair_a" + if("Long Hair (F)") + src.h_style_r = "hair_b" + if("Cut Hair") + src.h_style_r = "hair_c" + else + src.h_style_r = "bald" + else + if (findtext(href, "gender", 1, null)) + if (src.gender == "male") + src.gender = "female" + else + src.gender = "male" + src.stand_icon = new /icon( 'human.dmi', text("[]", src.gender) ) + src.lying_icon = new /icon( 'human.dmi', text("[]-d", src.gender) ) + else + if (findtext(href, "n_gl", 1, null)) + src.need_gl = !( src.need_gl ) + else + if (findtext(href, "b_ep", 1, null)) + src.be_epil = !( src.be_epil ) + else + if (findtext(href, "b_tur", 1, null)) + src.be_tur = !( src.be_tur ) + else + if (findtext(href, "b_co", 1, null)) + src.be_cough = !( src.be_cough ) + else + if (findtext(href, "b_stut", 1, null)) + src.be_stut = !( src.be_stut ) + else + if (findtext(href, "save", 1, null)) + var/savefile/F = new /savefile( text("players/[].sav", src.ckey) ) + F["version"] << savefile_ver + F["rname"] << src.rname + F["gender"] << src.gender + F["age"] << src.age + F["occupation1"] << src.occupation1 + F["occupation2"] << src.occupation2 + F["occupation3"] << src.occupation3 + F["nr_hair"] << src.nr_hair + F["ng_hair"] << src.ng_hair + F["nb_hair"] << src.nb_hair + F["ns_tone"] << src.ns_tone + F["h_style"] << src.h_style + F["h_style_r"] << src.h_style_r + F["r_eyes"] << src.r_eyes + F["g_eyes"] << src.g_eyes + F["b_eyes"] << src.b_eyes + F["b_type"] << src.b_type + F["need_gl"] << src.need_gl + F["be_epil"] << src.be_epil + F["be_tur"] << src.be_tur + F["be_cough"] << src.be_cough + F["be_stut"] << src.be_stut + else + if (findtext(href, "load", 1, null)) + if (fexists(text("players/[].sav", src.ckey))) + var/savefile/F = new /savefile( text("players/[].sav", src.ckey) ) + var/test = null + F["version"] >> test + if (test != savefile_ver) + fdel(text("players/[].sav", src.ckey)) + alert("Your savefile was incompatible with this version and was deleted.", null, null, null, null, null) + return + F["rname"] >> src.rname + F["gender"] >> src.gender + F["age"] >> src.age + F["occupation1"] >> src.occupation1 + F["occupation2"] >> src.occupation2 + F["occupation3"] >> src.occupation3 + F["nr_hair"] >> src.nr_hair + F["ng_hair"] >> src.ng_hair + F["nb_hair"] >> src.nb_hair + F["ns_tone"] >> src.ns_tone + F["h_style"] >> src.h_style + F["h_style_r"] >> src.h_style_r + F["r_eyes"] >> src.r_eyes + F["g_eyes"] >> src.g_eyes + F["b_eyes"] >> src.b_eyes + F["b_type"] >> src.b_type + F["need_gl"] >> src.need_gl + F["be_epil"] >> src.be_epil + F["be_tur"] >> src.be_tur + F["be_cough"] >> src.be_cough + F["be_stut"] >> src.be_stut + else + alert("You do not have a savefile.", null, null, null, null, null) + src.ShowChoices() + if (href_list["mach_close"]) + var/t1 = text("window=[]", href_list["mach_close"]) + src.machine = null + src << browse(null, t1) + if ((href_list["item"] && !( usr.stat ) && usr.canmove && !( usr.restrained() ) && get_dist(src, usr) <= 1)) + var/obj/equip_e/human/O = new /obj/equip_e/human( ) + O.source = usr + O.target = src + O.item = usr.equipped() + O.s_loc = usr.loc + O.t_loc = src.loc + O.place = href_list["item"] + src.requests += O + spawn( 0 ) + O.process() + return + ..() + return + +/mob/human/show_inv(mob/user as mob) + + user.machine = src + var/dat = text("
\n[]\n\tHead(Mask): []\n\t\tHeadset: []\n\tLeft Hand: []\n\tRight Hand: []\n\tGloves: []\n\tEyes: []\n\tEars: []\n\tHead: []\n\tShoes: []\n\tBelt: []\n\tUniform: []\n\t(Exo)Suit: []\n\tBack: [] []\n\tID: []\n\t[]\n\t[]\n\tEmpty Pockets\nClose\n", src.name, src, (src.wear_mask ? text("[]", src.wear_mask) : "Nothing"), src, (src.w_radio ? text("[]", src.w_radio) : "Nothing"), src, (src.l_hand ? text("[]", src.l_hand) : "Nothing"), src, (src.r_hand ? text("[]", src.r_hand) : "Nothing"), src, (src.gloves ? text("[]", src.gloves) : "Nothing"), src, (src.glasses ? text("[]", src.glasses) : "Nothing"), src, (src.ears ? text("[]", src.ears) : "Nothing"), src, (src.head ? text("[]", src.head) : "Nothing"), src, (src.shoes ? text("[]", src.shoes) : "Nothing"), src, (src.belt ? text("[]", src.belt) : "Nothing"), src, (src.w_uniform ? text("[]", src.w_uniform) : "Nothing"), src, (src.wear_suit ? text("[]", src.wear_suit) : "Nothing"), src, (src.back ? text("[]", src.back) : "Nothing"), ((istype(src.wear_mask, /obj/item/weapon/clothing/mask) && istype(src.back, /obj/item/weapon/tank) && !( src.internal )) ? text(" Set Internal", src) : ""), src, (src.wear_id ? text("[]", src.wear_id) : "Nothing"), (src.handcuffed ? text("Handcuffed", src) : text("Not Handcuffed", src)), (src.internal ? text("Remove Internal", src) : ""), src, user, src.name) + user << browse(dat, text("window=mob[];size=300x600", src.name)) + return + +/mob/proc/show_message(msg, type, alt, alt_type) + + if (type) + if ((type & 1 && (src.sdisabilities & 1 || (src.blinded || src.paralysis)))) + if (!( alt )) + return + else + msg = alt + type = alt_type + if ((type & 2 && (src.sdisabilities & 4 || src.ear_deaf))) + if (!( alt )) + return + else + msg = alt + type = alt_type + if ((type & 1 && src.sdisabilities & 1)) + return + src << msg + return + +/mob/proc/findname(msg) + + for(var/mob/M in world) + if (M.rname == text("[]", msg)) + return 1 + //Foreach goto(15) + return 0 + return + +/mob/proc/m_delay() + + return + +/mob/proc/Life() + + return + +/mob/proc/UpdateClothing() + + return + +/mob/proc/death() + + src.timeofdeath = world.time + return ..() + return + +/mob/proc/restrained() + + if (src.handcuffed) + return 1 + return + +/mob/proc/db_click(text, t1) + + var/obj/item/weapon/W = src.equipped() + switch(text) + if("mask") + if (src.wear_mask) + return + if (!( istype(W, /obj/item/weapon/clothing/mask) )) + return + src.u_equip(W) + src.wear_mask = W + if("back") + if ((src.back || !( istype(W, /obj/item/weapon) ))) + return + if (!( W.flags & 1 )) + return + src.u_equip(W) + src.back = W + else + return + +/mob/proc/throw_item() + + var/obj/item/weapon/W = src.equipped() + if (W) + u_equip(W) + if (src.client) + src.client.screen -= W + if (usr.stat) + return + W.loc = src.loc + if (istype(W, /obj/item/weapon/grab)) + W:throw() + else + W.dropped(src) + if (W) + W.layer = initial(W.layer) + for(var/mob/O in viewers(src, null)) + O.show_message(text("\red [] has thrown [].", src, W), 1) + //Foreach goto(133) + W.density = 1 + W.throwing = 1 + W.throwspeed = initial(W.throwspeed) + spawn( 0 ) + W.throwing(src.dir) + return + return + +/mob/proc/swap_hand() + + src.hand = !( src.hand ) + if (!( src.hand )) + src.hands.dir = NORTH + else + src.hands.dir = SOUTH + return + +/mob/proc/drop_item_v() + + if (src.stat == 0) + drop_item() + return + +/mob/proc/throw_item_v() + + if (src.stat == 0) + throw_item() + return + +/mob/proc/drop_item() + + var/obj/item/weapon/W = src.equipped() + if (W) + u_equip(W) + if (src.client) + src.client.screen -= W + if (W) + W.loc = src.loc + W.dropped(src) + if (W) + W.layer = initial(W.layer) + return + +/mob/proc/reset_view(atom/A as mob|obj) + + if (src.client) + if (istype(A, /atom/movable)) + src.client.perspective = EYE_PERSPECTIVE + src.client.eye = A + else + if (isturf(src.loc)) + src.client.eye = src.client.mob + src.client.perspective = MOB_PERSPECTIVE + else + src.client.perspective = EYE_PERSPECTIVE + src.client.eye = src.loc + return + +/mob/proc/who() + set category = "Admin" + + var/total = 0 + usr << "Current Players:" + for(var/mob/M in world) + if (M.client) + total++ + usr << text("\t [] ([])", M, M.client) + //Foreach goto(32) + usr << text("Total Players: []", total) + return + +/mob/proc/list_dna() + set category = "Admin" + + usr << "Registered DNA sequences:" + for(var/M in reg_dna) + usr << text("\t [] = []", M, reg_dna[text("[]", M)]) + //Foreach goto(26) + return + +/mob/proc/equipped() + + if (src.hand) + return src.l_hand + else + return src.r_hand + return + +/mob/proc/show_inv(mob/user as mob) + + user.machine = src + var/dat = text("\n[]
"
+ for(var/t in typesof(/area))
+ master += text("[]\n", t)
+ //Foreach goto(26)
+ src << browse(master)
+ return
+
+/mob/verb/memory()
+
+ src << browse(text("Memory::
[]", src.memory), "window=memory")
+ return
+
+/mob/verb/add_memory(msg as message)
+
+ src.memory += text("[]
", msg)
+ src << browse(text("Memory::
[]", src.memory), "window=memory")
+ return
+
+/mob/verb/help()
+
+ src << browse('help.htm', "window=help")
+ return
+
+/mob/verb/abandon_mob()
+
+ if (!( abandon_allowed ))
+ return
+ if ((src.stat != 2 || !( ticker )))
+ usr << "\blue You must be dead to use this!"
+ return
+ usr << "\blue Please roleplay correctly!"
+ for(var/obj/screen/t in usr.client.screen)
+ if (t.loc == null)
+ //t = null
+ del(t)
+ //Foreach goto(66)
+ var/mob/human/M = new /mob/human( )
+ M.key = src.client.key
+ return
+
+/mob/verb/changes()
+
+ src << browse(text("[]
", changes), "window=changes")
+ return
+
+/mob/verb/succumb()
+ set hidden = 1
+
+ if ((src.health < 0 && src.health > -95.0))
+ src.oxyloss += src.health + 99
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ usr << "\blue You have given up life and succumbed to death."
+ return
+
+/mob/verb/say()
+
+ return
+
+/mob/verb/observe()
+
+ if (src.stat != 2)
+ usr << "\blue You must be dead to use this!"
+ return
+ src.client.perspective = EYE_PERSPECTIVE
+ src.client.eye = input("Please, select a player!", "Watch", null, null) as mob in world
+ return
+
+/mob/verb/listen_ooc()
+
+ if (src.client)
+ src.client.listen_ooc = !( src.client.listen_ooc )
+ if (src.client.listen_ooc)
+ src << "\blue You are now listening to messages on the OOC channel. Don't abuse this!"
+ else
+ src << "\blue You are no longer listening to messages on the OOC channel."
+ return
+
+/mob/verb/ooc(msg as text)
+
+ msg = html_encode(copytext(msg, 1, 128))
+ if (!( msg ))
+ return
+ if ((ooc_allowed && !( src.muted )))
+ for(var/mob/M in world)
+ if ((M.client && M.client.listen_ooc))
+ M << text("OOC: []: []", src.key, msg)
+ //Foreach goto(54)
+ return
+
+/mob/verb/switch_hud()
+
+ src.client.screen -= main_hud.contents
+ src.client.screen -= main_hud2.contents
+ if (src.hud_used == main_hud)
+ src.hud_used = main_hud2
+ src.oxygen.icon = 'screen.dmi'
+ src.toxin.icon = 'screen.dmi'
+ src.internals.icon = 'screen.dmi'
+ src.mach.icon = 'screen.dmi'
+ src.fire.icon = 'screen.dmi'
+ src.healths.icon = 'screen.dmi'
+ src.pullin.icon = 'screen.dmi'
+ src.blind.icon = 'screen.dmi'
+ src.hands.icon = 'screen.dmi'
+ src.flash.icon = 'screen.dmi'
+ src.sleep.icon = 'screen.dmi'
+ src.rest.icon = 'screen.dmi'
+ else
+ src.hud_used = main_hud
+ src.oxygen.icon = 'screen1.dmi'
+ src.toxin.icon = 'screen1.dmi'
+ src.internals.icon = 'screen1.dmi'
+ src.mach.icon = 'screen1.dmi'
+ src.fire.icon = 'screen1.dmi'
+ src.healths.icon = 'screen1.dmi'
+ src.pullin.icon = 'screen1.dmi'
+ src.blind.icon = 'screen1.dmi'
+ src.hands.icon = 'screen1.dmi'
+ src.flash.icon = 'screen1.dmi'
+ src.sleep.icon = 'screen1.dmi'
+ src.rest.icon = 'screen1.dmi'
+ src.client.screen -= src.hud_used.adding
+ src.client.screen += src.hud_used.adding
+ return
+
+/mob/Login()
+
+ src.sight |= SEE_SELF
+ ..()
+ return
+
+/mob/CheckPass(mob/M as mob)
+
+ if ((src.other_mobs && ismob(M) && M.other_mobs))
+ return 1
+ else
+ return (!( M.density ) || !( src.density ) || src.lying)
+ return
+
+/mob/burn(fi_amount)
+
+ for(var/atom/movable/A as mob|obj in src)
+ A.burn(fi_amount)
+ //Foreach goto(15)
+ return
+
+/mob/Topic(href, href_list)
+
+ if (href_list["mach_close"])
+ var/t1 = text("window=[]", href_list["mach_close"])
+ src.machine = null
+ src << browse(null, t1)
+ ..()
+ return
+
+/mob/MouseDrop(mob/M as mob)
+
+ ..()
+ if ((M != usr || usr == src || get_dist(usr, src) > 1))
+ return
+ src.show_inv(usr)
+ return
+
+/mob/las_act(flag)
+
+ if (flag == "bullet")
+ if (src.stat != 2)
+ if (istype(src, /mob/human))
+ var/mob/human/H = src
+ var/dam_zone = pick("chest", "chest", "chest", "diaper", "head")
+ if (H.organs[text("[]", dam_zone)])
+ var/obj/item/weapon/organ/external/affecting = H.organs[text("[]", dam_zone)]
+ if (affecting.take_damage(51, 0))
+ H.UpdateDamageIcon()
+ else
+ H.UpdateDamage()
+ else
+ src.bruteloss += 51
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ if (prob(80))
+ src.weakened = 2
+ if (flag)
+ if (prob(75))
+ src.stunned = 10
+ else
+ src.weakened = 10
+ else
+ if (src.stat != 2)
+ if (istype(src, /mob/human))
+ var/mob/human/H = src
+ var/dam_zone = pick("chest", "chest", "chest", "diaper", "head")
+ if (H.organs[text("[]", dam_zone)])
+ var/obj/item/weapon/organ/external/affecting = H.organs[text("[]", dam_zone)]
+ if (affecting.take_damage(20, 0))
+ H.UpdateDamageIcon()
+ else
+ H.UpdateDamage()
+ else
+ src.bruteloss += 20
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ if (prob(25))
+ src.stunned = 2
+ return
+
+/mob/ghost/proc/infest()
+
+ return
+
+/mob/ghost/Move()
+
+ if (src.stunned)
+ return
+ . = ..()
+ return
+
+/mob/ghost/show_inv()
+
+ return
+ return
+
+/mob/ghost/Bump()
+
+ return
+ return
+
+/mob/ghost/UpdateClothing()
+
+ for(var/i in src.overlays)
+ src.overlays -= i
+ //Foreach goto(17)
+ if (src.wear_mask)
+ if (istype(src.wear_mask, /obj/item/weapon/clothing/mask))
+ var/t1 = src.wear_mask.s_istate
+ if (!( t1 ))
+ t1 = src.icon_state
+ src.overlays += image("icon" = 'ghost.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = src.layer)
+ src.wear_mask.screen_loc = "2,3"
+ if (src.r_hand)
+ var/t1 = src.r_hand.s_istate
+ if (!( t1 ))
+ t1 = src.icon_state
+ src.overlays += image("icon" = 'r_items.dmi', "icon_state" = t1, "layer" = src.layer)
+ src.r_hand.screen_loc = "1,2"
+ if (src.l_hand)
+ var/t1 = src.l_hand.s_istate
+ if (!( t1 ))
+ t1 = src.icon_state
+ src.overlays += image("icon" = 'l_items.dmi', "icon_state" = t1, "layer" = src.layer)
+ src.l_hand.screen_loc = "3,2"
+ if (src.client)
+ src.client.screen -= src.contents
+ src.client.screen += src.contents
+ return
+
+/mob/ghost/Life()
+
+ if (src.stat == 2)
+ death()
+ return
+ src.canmove = 1
+ src.lying = 1
+ src.stat = 0
+ if (src.weakened > 0)
+ src.weakened--
+ src.icon_state = "ghost"
+ else
+ src.icon_state = "blank"
+ if (src.stunned > 0)
+ src.stunned--
+ src.canmove = 0
+ for(var/obj/item/O in src)
+ O.loc = src.loc
+ O.layer = initial(O.layer)
+ src.u_equip(O)
+ //Foreach goto(109)
+ if (src.health < 0)
+ src.stat = 2
+ return
+ return
+
+/mob/ghost/db_click()
+
+ return
+ return
+
+/mob/ghost/equipped()
+
+ return null
+ return
+
+/mob/ghost/m_delay()
+
+ return -100.0
+ return
+
+/mob/ghost/reset_view()
+
+ if (src.client)
+ src.client.eye = src
+ else
+ return ..()
+ return
+
+/mob/ghost/las_act()
+
+ return
+ return
+
+/mob/ghost/ex_act()
+
+ return
+ return
+
+/mob/ghost/attack_hand(mob/M as mob)
+
+ src.infest(M)
+ return
+
+/mob/ghost/attack_paw(mob/M as mob)
+
+ src.infest(M)
+ return
+
+/mob/ghost/death()
+
+ src.stunned = 1
+ ..()
+ return
+
+/mob/ghost/meteorhit()
+
+ return
+ return
+
+/mob/ghost/restrained()
+
+ return 0
+ return
+
+/mob/ghost/attackby(nothing, mob/M as mob)
+
+ src.infest(M)
+ return 0
+ return
+
+/mob/ghost/say(msg as text)
+
+ if (!( msg ))
+ return
+ msg = stutter(msg)
+ if (prob(25))
+ msg = stars(msg)
+ for(var/mob/M in hearers(null, null))
+ M.show_message(msg, 2)
+ //Foreach goto(58)
+ return
+
+/mob/monkey/New()
+
+ spawn( 50 )
+ if (!( src.primary ))
+ var/t1 = rand(1000, 1500)
+ dna_ident += t1
+ if (dna_ident > 65536.0)
+ dna_ident = rand(1, 1500)
+ src.primary = new /obj/dna( null )
+ src.primary.uni_identity = text("[]", dna_ident)
+ while(length(src.primary.uni_identity) < 4)
+ src.primary.uni_identity = text("0[]", src.primary.uni_identity)
+ var/t2 = text("[]", rand(1, 256))
+ if (length(t2) < 2)
+ src.primary.uni_identity = text("[]0[]", src.primary.uni_identity, t2)
+ else
+ src.primary.uni_identity = text("[][]", src.primary.uni_identity, t2)
+ t2 = text("[]", rand(1, 256))
+ if (length(t2) < 2)
+ src.primary.uni_identity = text("[]0[]", src.primary.uni_identity, t2)
+ else
+ src.primary.uni_identity = text("[][]", src.primary.uni_identity, t2)
+ t2 = text("[]", rand(1, 256))
+ if (length(t2) < 2)
+ src.primary.uni_identity = text("[]0[]", src.primary.uni_identity, t2)
+ else
+ src.primary.uni_identity = text("[][]", src.primary.uni_identity, t2)
+ t2 = text("[]", rand(1, 256))
+ if (length(t2) < 2)
+ src.primary.uni_identity = text("[]0[]", src.primary.uni_identity, t2)
+ else
+ src.primary.uni_identity = text("[][]", src.primary.uni_identity, t2)
+ t2 = (src.gender == "male" ? text("[]", rand(1, 124)) : text("[]", rand(127, 250)))
+ if (length(t2) < 2)
+ src.primary.uni_identity = text("[]0[]", src.primary.uni_identity, t2)
+ else
+ src.primary.uni_identity = text("[][]", src.primary.uni_identity, t2)
+ src.primary.spec_identity = "2B6696D2B127E5A4"
+ src.primary.struc_enzyme = "CDEAF5B90AADBC6BA8033DB0A7FD613FA"
+ src.primary.use_enzyme = "C8FFFE7EC09D80AEDEDB9A5A0B4085B61"
+ src.primary.n_chromo = 16
+ src.name = text("monkey ([])", copytext(md5(src.primary.uni_identity), 2, 6))
+ return
+ ..()
+ return
+
+/mob/monkey/Bump(atom/movable/AM as mob|obj, yes)
+
+ spawn( 0 )
+ if ((!( yes ) || src.now_pushing))
+ return
+ ..()
+ if (!( istype(AM, /atom/movable) ))
+ return
+ if (!( src.now_pushing ))
+ src.now_pushing = 1
+ if (!( AM.anchored ))
+ var/t = get_dir(src, AM)
+ step(AM, t)
+ src.now_pushing = null
+ return
+ return
+
+/mob/monkey/Topic(href, href_list)
+
+ if (href_list["mach_close"])
+ var/t1 = text("window=[]", href_list["mach_close"])
+ src.machine = null
+ src << browse(null, t1)
+ if ((href_list["item"] && !( usr.stat ) && !( usr.restrained() ) && get_dist(src, usr) <= 1))
+ var/obj/equip_e/monkey/O = new /obj/equip_e/monkey( )
+ O.source = usr
+ O.target = src
+ O.item = usr.equipped()
+ O.s_loc = usr.loc
+ O.t_loc = src.loc
+ O.place = href_list["item"]
+ src.requests += O
+ spawn( 0 )
+ O.process()
+ return
+ ..()
+ return
+
+/mob/monkey/meteorhit(obj/O as obj)
+
+ for(var/mob/M in viewers(src, null))
+ M.show_message(text("\red [] has been hit with by []", src, O), 1)
+ //Foreach goto(19)
+ if (src.health > 0)
+ var/shielded = 0
+ for(var/obj/item/weapon/shield/S in src)
+ if (S.active)
+ shielded = 1
+ else
+ //Foreach continue //goto(79)
+ src.bruteloss += 30
+ if ((O.icon_state == "flaming" && !( shielded )))
+ src.fireloss += 40
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ return
+
+/mob/monkey/las_act(flag)
+
+ if (flag == "bullet")
+ if (src.stat != 2)
+ src.bruteloss += 60
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ src.weakened = 10
+ if (flag)
+ if (prob(75))
+ src.stunned = 15
+ else
+ src.weakened = 15
+ else
+ if (src.stat != 2)
+ src.bruteloss += 20
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ if (prob(25))
+ src.stunned = 1
+ return
+
+/mob/monkey/hand_p(mob/M as mob)
+
+ if ((M.a_intent == "hurt" && !( istype(src.wear_mask, /obj/item/weapon/clothing/mask/muzzle) )))
+ if ((prob(75) && src.health > 0))
+ for(var/mob/O in viewers(src, null))
+ O.show_message(text("\red The monkey has bit []!", src), 1)
+ //Foreach goto(63)
+ var/damage = rand(1, 5)
+ src.bruteloss += damage
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ else
+ for(var/mob/O in viewers(src, null))
+ O.show_message(text("\red The monkey has attempted to bite []!", src), 1)
+ //Foreach goto(144)
+ return
+
+/mob/monkey/attack_paw(mob/M as mob)
+
+ if (M.a_intent == "help")
+ src.sleeping = 0
+ src.resting = 0
+ for(var/mob/O in viewers(src, null))
+ O.show_message("\blue The monkey shakes the monkey trying to wake him up!", 1)
+ //Foreach goto(47)
+ else
+ if ((M.a_intent == "hurt" && !( istype(src.wear_mask, /obj/item/weapon/clothing/mask/muzzle) )))
+ if ((prob(75) && src.health > 0))
+ for(var/mob/O in viewers(src, null))
+ O.show_message("\red The monkey has bit the monkey!", 1)
+ //Foreach goto(130)
+ var/damage = rand(1, 5)
+ src.bruteloss += damage
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ else
+ for(var/mob/O in viewers(src, null))
+ O.show_message("\red The monkey has attempted to bite the monkey!", 1)
+ //Foreach goto(209)
+ return
+
+/mob/monkey/attack_hand(mob/M as mob)
+
+ if (M.a_intent == "help")
+ src.sleeping = 0
+ src.resting = 0
+ for(var/mob/O in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\blue [] shakes the monkey trying to wake him up!", M), 1)
+ //Foreach goto(47)
+ else
+ if (M.a_intent == "hurt")
+ if ((prob(75) && src.health > 0))
+ for(var/mob/O in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\red [] has punched the monkey!", M), 1)
+ //Foreach goto(135)
+ var/damage = rand(5, 10)
+ if (prob(40))
+ damage = rand(10, 15)
+ if (src.paralysis < 5)
+ src.paralysis = rand(10, 15)
+ spawn( 0 )
+ for(var/mob/O in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\red [] has knocked out the monkey!", M), 1)
+ //Foreach goto(248)
+ return
+ src.bruteloss += damage
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ else
+ for(var/mob/O in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\red [] has attempted to punch the monkey!", M), 1)
+ //Foreach goto(336)
+ else
+ if (M.a_intent == "grab")
+ if (M == src)
+ return
+ var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M )
+ G.assailant = M
+ if (M.hand)
+ M.l_hand = G
+ else
+ M.r_hand = G
+ G.layer = 20
+ G.affecting = src
+ src.grabbed_by += G
+ G.synch()
+ for(var/mob/O in viewers(src, null))
+ O.show_message(text("\red [] has grabbed the monkey passively!", M), 1)
+ //Foreach goto(502)
+ else
+ if (!( src.paralysis ))
+ if (prob(25))
+ src.paralysis = 2
+ for(var/mob/O in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\red [] has pushed down the monkey!", M), 1)
+ //Foreach goto(571)
+ else
+ drop_item()
+ for(var/mob/O in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\red [] has disarmed the monkey!", M), 1)
+ //Foreach goto(638)
+ return
+
+/mob/monkey/Stat()
+
+ ..()
+ statpanel("Status")
+ stat(null, text("Intent: []", src.a_intent))
+ stat(null, text("Move Mode: []", src.m_intent))
+ return
+
+/mob/monkey/UpdateClothing()
+
+ ..()
+ for(var/i in src.overlays)
+ src.overlays -= i
+ //Foreach goto(21)
+ if (!( src.lying ))
+ src.icon_state = "monkey1"
+ else
+ src.icon_state = "monkey0"
+ if (src.wear_mask)
+ if (istype(src.wear_mask, /obj/item/weapon/clothing/mask))
+ var/t1 = src.wear_mask.s_istate
+ if (!( t1 ))
+ t1 = src.wear_mask.icon_state
+ src.overlays += image("icon" = 'monkey.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = src.layer)
+ src.wear_mask.screen_loc = "2,3"
+ if (src.r_hand)
+ var/t1 = src.r_hand.s_istate
+ if (!( t1 ))
+ t1 = src.r_hand.icon_state
+ src.overlays += image("icon" = 'r_items.dmi', "icon_state" = t1, "layer" = src.layer)
+ src.r_hand.screen_loc = "1,2"
+ if (src.l_hand)
+ var/t1 = src.l_hand.s_istate
+ if (!( t1 ))
+ t1 = src.l_hand.icon_state
+ src.overlays += image("icon" = 'l_items.dmi', "icon_state" = t1, "layer" = src.layer)
+ src.l_hand.screen_loc = "3,2"
+ if (src.back)
+ if (!( src.lying ))
+ src.overlays += image("icon" = 'monkey.dmi', "icon_state" = "back", "layer" = src.layer)
+ else
+ src.overlays += image("icon" = 'monkey.dmi', "icon_state" = "back2", "layer" = src.layer)
+ src.back.screen_loc = "3,3"
+ if (src.handcuffed)
+ src.pulling = null
+ if (!( src.lying ))
+ src.overlays += image("icon" = 'monkey.dmi', "icon_state" = "handcuff1", "layer" = src.layer)
+ else
+ src.overlays += image("icon" = 'monkey.dmi', "icon_state" = "handcuff2", "layer" = src.layer)
+ if (src.client)
+ src.client.screen -= src.contents
+ src.client.screen += src.contents
+ src.client.screen -= src.hud_used.m_ints
+ src.client.screen -= src.hud_used.mov_int
+ if (src.i_select)
+ if (src.intent)
+ src.client.screen += src.hud_used.m_ints
+ src.i_select.screen_loc = src.intent
+ else
+ src.i_select.screen_loc = null
+ if (src.m_select)
+ if (src.m_int)
+ src.client.screen += src.hud_used.mov_int
+ src.m_select.screen_loc = src.m_int
+ else
+ src.m_select.screen_loc = null
+ for(var/mob/M in viewers(1, src))
+ if ((M.client && M.machine == src))
+ spawn( 0 )
+ src.show_inv(M)
+ return
+ //Foreach goto(662)
+ return
+
+/mob/monkey/Login()
+
+ if (banned.Find(src.ckey))
+ //src.client = null
+ del(src.client)
+ src.client.screen -= main_hud.contents
+ src.client.screen -= main_hud2.contents
+ if (!( src.hud_used ))
+ src.hud_used = main_hud
+ src.next_move = 1
+ if (!( src.rname ))
+ src.rname = src.key
+ src.oxygen = new /obj/screen( null )
+ src.i_select = new /obj/screen( null )
+ src.m_select = new /obj/screen( null )
+ src.toxin = new /obj/screen( null )
+ src.internals = new /obj/screen( null )
+ src.mach = new /obj/screen( null )
+ src.fire = new /obj/screen( null )
+ src.healths = new /obj/screen( null )
+ src.pullin = new /obj/screen( null )
+ src.blind = new /obj/screen( null )
+ src.flash = new /obj/screen( null )
+ src.hands = new /obj/screen( null )
+ src.sleep = new /obj/screen( null )
+ src.rest = new /obj/screen( null )
+ ..()
+ UpdateClothing()
+ src.oxygen.icon_state = "oxy0"
+ src.i_select.icon_state = "selector"
+ src.m_select.icon_state = "selector"
+ src.toxin.icon_state = "toxin0"
+ src.internals.icon_state = "internal0"
+ src.mach.icon_state = null
+ src.fire.icon_state = "fire0"
+ src.healths.icon_state = "health0"
+ src.pullin.icon_state = "pull0"
+ src.blind.icon_state = "black"
+ src.hands.icon_state = "hand"
+ src.flash.icon_state = "blank"
+ src.sleep.icon_state = "sleep0"
+ src.rest.icon_state = "rest0"
+ src.hands.dir = NORTH
+ src.oxygen.name = "oxygen"
+ src.i_select.name = "intent"
+ src.m_select.name = "move"
+ src.toxin.name = "toxin"
+ src.internals.name = "internal"
+ src.mach.name = "Reset Machine"
+ src.fire.name = "fire"
+ src.healths.name = "health"
+ src.pullin.name = "pull"
+ src.blind.name = " "
+ src.hands.name = "hand"
+ src.flash.name = "flash"
+ src.sleep.name = "sleep"
+ src.rest.name = "rest"
+ src.oxygen.screen_loc = "15,12"
+ src.i_select.screen_loc = "14,15"
+ src.m_select.screen_loc = "14,14"
+ src.toxin.screen_loc = "15,10"
+ src.internals.screen_loc = "15,14"
+ src.mach.screen_loc = "14,1"
+ src.fire.screen_loc = "15,8"
+ src.healths.screen_loc = "15,5"
+ src.sleep.screen_loc = "15,3"
+ src.rest.screen_loc = "15,2"
+ src.pullin.screen_loc = "15,1"
+ src.hands.screen_loc = "1,3"
+ src.blind.screen_loc = "1,1 to 15,15"
+ src.flash.screen_loc = "1,1 to 15,15"
+ src.blind.layer = 0
+ src.flash.layer = 17
+ src.sleep.layer = 20
+ src.rest.layer = 20
+ src.client.screen.len = null
+ src.client.screen -= list( src.oxygen, src.i_select, src.m_select, src.toxin, src.internals, src.fire, src.hands, src.healths, src.pullin, src.blind, src.flash, src.rest, src.sleep, src.mach )
+ src.client.screen += list( src.oxygen, src.i_select, src.m_select, src.toxin, src.internals, src.fire, src.hands, src.healths, src.pullin, src.blind, src.flash, src.rest, src.sleep, src.mach )
+ src.client.screen -= src.hud_used.adding
+ src.client.screen += src.hud_used.adding
+ src.client.screen -= src.hud_used.mon_blo
+ src.client.screen += src.hud_used.mon_blo
+ if (!( src.primary ))
+ var/t1 = rand(1000, 1500)
+ dna_ident += t1
+ if (dna_ident > 65536.0)
+ dna_ident = rand(1, 1500)
+ src.primary = new /obj/dna( null )
+ src.primary.uni_identity = text("[]", dna_ident)
+ while(length(src.primary.uni_identity) < 4)
+ src.primary.uni_identity = text("0[]", src.primary.uni_identity)
+ var/t2 = text("[]", rand(1, 256))
+ if (length(t2) < 2)
+ src.primary.uni_identity = text("[]0[]", src.primary.uni_identity, t2)
+ else
+ src.primary.uni_identity = text("[][]", src.primary.uni_identity, t2)
+ t2 = text("[]", rand(1, 256))
+ if (length(t2) < 2)
+ src.primary.uni_identity = text("[]0[]", src.primary.uni_identity, t2)
+ else
+ src.primary.uni_identity = text("[][]", src.primary.uni_identity, t2)
+ t2 = text("[]", rand(1, 256))
+ if (length(t2) < 2)
+ src.primary.uni_identity = text("[]0[]", src.primary.uni_identity, t2)
+ else
+ src.primary.uni_identity = text("[][]", src.primary.uni_identity, t2)
+ t2 = text("[]", rand(1, 256))
+ if (length(t2) < 2)
+ src.primary.uni_identity = text("[]0[]", src.primary.uni_identity, t2)
+ else
+ src.primary.uni_identity = text("[][]", src.primary.uni_identity, t2)
+ t2 = (src.gender == "male" ? text("[]", rand(1, 124)) : text("[]", rand(127, 250)))
+ if (length(t2) < 2)
+ src.primary.uni_identity = text("[]0[]", src.primary.uni_identity, t2)
+ else
+ src.primary.uni_identity = text("[][]", src.primary.uni_identity, t2)
+ src.primary.spec_identity = "2B6696D2B127E5A4"
+ src.primary.struc_enzyme = "CDEAF5B90AADBC6BA8033DB0A7FD613FA"
+ src.primary.use_enzyme = "C8FFFE7EC09D80AEDEDB9A5A0B4085B61"
+ src.primary.n_chromo = 16
+ if (!( src.start ))
+ if ((src.key in list( "Thief jack", "Link43130", "Hutchy2k1", "Easty", "Exadv1" )))
+ src.start = 1
+ src.loc = locate(36, 67, 10)
+ else
+ src.start = 1
+ var/A = locate(/area/start)
+ var/list/L = list( )
+ for(var/T in A)
+ L += T
+ //Foreach goto(1473)
+ src.loc = pick(L)
+ src << browse('help.htm', "window=help")
+ if (((src.key in list( "Exadv1", "Expert Advisor" )) || world.address == src.client.address || !( src.client.address )))
+ src << text("\blue The game ip is byond://[]:[] !", world.address, world.port)
+ src.verbs += /mob/proc/mute
+ src.verbs += /mob/proc/changemessage
+ src.verbs += /mob/proc/boot
+ src.verbs += /mob/proc/changemode
+ src.verbs += /mob/proc/show_ctf
+ src.verbs += /mob/proc/restart
+ src.verbs += /mob/proc/who
+ src.verbs += /mob/proc/change_name
+ src.verbs += /mob/proc/show_help
+ src.verbs += /mob/proc/toggle_ooc
+ src.verbs += /mob/proc/toggle_abandon
+ src.verbs += /mob/proc/toggle_enter
+ src.verbs += /mob/proc/toggle_shuttle
+ src.verbs += /mob/proc/delay_start
+ src.verbs += /mob/proc/make_gift
+ src.verbs += /mob/proc/make_flag
+ src.verbs += /mob/proc/make_pill
+ src.verbs += /mob/proc/ban
+ src.verbs += /mob/proc/unban
+ src.verbs += /mob/proc/secrets
+ src.verbs += /mob/proc/toggle_alter
+ src.verbs += /mob/proc/carboncopy
+ src.verbs += /mob/proc/list_dna
+ src << text("\blue []", world_message)
+ if (!( isturf(src.loc) ))
+ src.client.eye = src.loc
+ src.client.perspective = EYE_PERSPECTIVE
+ src.name = text("monkey ([])", copytext(md5(src.primary.uni_identity), 2, 6))
+ return
+
+/mob/monkey/Move()
+
+ if ((!( src.buckled ) || src.buckled.loc != src.loc))
+ src.buckled = null
+ if (src.buckled)
+ return
+ if (src.restrained())
+ src.pulling = null
+ var/t7 = 1
+ if (src.restrained())
+ for(var/mob/M in range(src, 1))
+ if ((M.pulling == src && M.stat == 0 && !( M.restrained() )))
+ return 0
+ //Foreach goto(93)
+ if ((t7 && src.pulling && get_dist(src, src.pulling) <= 1))
+ if (src.pulling.anchored)
+ src.pulling = null
+ var/T = src.loc
+ . = ..()
+ if (!( isturf(src.pulling.loc) ))
+ src.pulling = null
+ return
+ if (!( src.restrained() ))
+ var/diag = get_dir(src, src.pulling)
+ if ((diag - 1) & diag)
+ else
+ diag = null
+ if ((ismob(src.pulling) && (get_dist(src, src.pulling) > 1 || diag)))
+ if (istype(src.pulling, src.type))
+ var/mob/M = src.pulling
+ var/mob/t = M.pulling
+ M.pulling = null
+ step(src.pulling, get_dir(src.pulling.loc, T))
+ M.pulling = t
+ else
+ step(src.pulling, get_dir(src.pulling.loc, T))
+ else
+ src.pulling = null
+ . = ..()
+ if ((src.s_active && !( src.contents.Find(src.s_active) )))
+ src.s_active.close(src)
+ return
+
+/mob/monkey/death()
+
+ var/cancel
+ if (src.healths)
+ src.healths.icon_state = "health5"
+ src.stat = 2
+ src.canmove = 0
+ if (src.blind)
+ src.blind.layer = 0
+ src.lying = 1
+ src.icon_state = "dead"
+ for(var/mob/M in world)
+ if ((M.client && !( M.stat )))
+ cancel = 1
+ //Foreach goto(79)
+ if (!( cancel ))
+ world << "Everyone is dead! Resetting in 30 seconds!"
+ if ((ticker && ticker.timing))
+ ticker.check_win()
+ else
+ spawn( 300 )
+ world.Reboot()
+ return
+ return ..()
+ return
+
+/mob/monkey/Life()
+ set background = 1
+ var/plcheck
+ var/oxcheck
+ var/ficheck
+
+ var/turf/T = src.loc
+ if (!( locate(/obj/table, src.loc) ))
+ src.layer = MOB_LAYER
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ if (src.stat != 2)
+ src.t_sl_gas = 0
+ src.t_n2 = 0
+ if (!( src.m_flag ))
+ src.last_move = null
+ src.m_flag = null
+ if (src.mach)
+ if (src.machine)
+ src.mach.icon_state = "mach1"
+ else
+ src.mach.icon_state = null
+ if ((src.internal && !( src.contents.Find(src.internal) )))
+ src.internal = null
+ if ((!( src.wear_mask ) || !( src.wear_mask.flags | 8 )))
+ src.internal = null
+ if (istype(T, /turf))
+ var/t = 1.4E-4
+ if (src.health < 20)
+ t = 5.0E-5
+ else
+ if (src.health < 40)
+ t = 1.0E-4
+ if (locate(/obj/move, T))
+ T = locate(/obj/move, T)
+ var/turf_total = T.oxygen + T.poison + T.sl_gas + T.co2 + T.n2
+ var/obj/substance/gas/G = new /obj/substance/gas( )
+ G.maximum = 10000
+ if (src.internal)
+ src.internal.process(src, G)
+ if (src.wear_mask.flags & 4)
+ G.turf_add(T, G.tot_gas() * 0.5)
+ G.turf_take(T, t / 2 * turf_total - G.tot_gas())
+ else
+ G.turf_take(T, t * turf_total)
+ src.aircheck(G)
+ plcheck = src.t_plasma
+ oxcheck = src.t_oxygen
+ G.turf_add(T, G.tot_gas())
+ ficheck = src.firecheck(T)
+ else
+ if (istype(T, /obj))
+ var/obj/O = T
+ O.alter_health(src)
+ if ((istype(src.loc, /turf/space) && !( locate(/obj/move, src.loc) )))
+ var/layers = 20
+ if ((istype(src.wear_mask, /obj/item/weapon/clothing/mask) && !( src.wear_mask.flags & 4 ) && src.flags & 8))
+ layers -= 5
+ if (layers > oxcheck)
+ oxcheck = layers
+ if ((plcheck && src.health >= 0))
+ if ((src.paralysis <= 0 || src.weakened <= 0))
+ src.toxloss += plcheck
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ else
+ src.toxloss += plcheck
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ if ((oxcheck && src.health >= 0))
+ if ((src.paralysis <= 0 || src.weakened <= 0))
+ src.oxyloss += oxcheck
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ else
+ src.oxyloss += oxcheck
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ else
+ if (src.health >= 0)
+ if (src.oxyloss >= 10)
+ var/amount = max(0.15, 1)
+ src.oxyloss -= amount
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ else
+ src.oxyloss = 0
+ if (ficheck)
+ src.fireloss += ficheck * 10
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ if (src.health <= -100.0)
+ death()
+ else
+ if ((src.sleeping || src.health < 0))
+ if (prob(1))
+ if (src.health <= 20)
+ spawn( 0 )
+ emote("gasp")
+ return
+ else
+ spawn( 0 )
+ emote("snore")
+ return
+ if (src.health < 0)
+ if (src.rejuv <= 0)
+ src.oxyloss++
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ src.stat = 1
+ if (src.paralysis < 5)
+ src.paralysis = 5
+ else
+ if (src.resting)
+ if (src.weakened < 5)
+ src.weakened = 5
+ else
+ if (src.health < 20)
+ if (prob(5))
+ if (prob(1))
+ if (src.health <= 20)
+ spawn( 0 )
+ emote("gasp")
+ return
+ src.stat = 1
+ if (src.paralysis < 2)
+ src.paralysis = 2
+ if (src.rejuv > 0)
+ src.rejuv--
+ if (src.r_epil > 0)
+ src.r_epil--
+ if (src.r_ch_cou > 0)
+ src.r_ch_cou--
+ if (src.r_Tourette > 0)
+ src.r_Tourette--
+ if (src.antitoxs > 0)
+ src.antitoxs--
+ if (src.plasma > 0)
+ src.antitoxs -= 4
+ if (src.plasma > 0)
+ src.plasma--
+ src.blinded = null
+ if (src.drowsyness > 0)
+ src.drowsyness--
+ if (src.paralysis > 1)
+ src.drowsyness -= 0.5
+ else
+ if (src.weakened > 1)
+ src.drowsyness -= 0.25
+ src.eye_blurry = max(2, src.eye_blurry)
+ if (prob(5))
+ src.sleeping = 1
+ src.paralysis = 5
+ if ((src.health > -10.0 && src.drowsyness > 1200))
+ if (src.antitoxs < 1)
+ src.toxloss += plcheck
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ plcheck = 1
+ var/mental_danger = 0
+ if (((src.r_epil > 0 && !( src.disabilities & 2 )) || (src.r_Tourette > 0 && !( src.disabilities & 8 ))))
+ src.stuttering = max(2, src.drowsyness)
+ mental_danger = 1
+ src.drowsyness = max(2, src.drowsyness)
+ if (!( src.paralysis ))
+ if (prob(5))
+ src << "\red You have a seizure!"
+ src.paralysis = 10
+ else
+ if (prob(5))
+ spawn( 0 )
+ emote("twitch")
+ return
+ src.stunned = 10
+ else
+ if (prob(30))
+ spawn( 0 )
+ emote("drool")
+ return
+ if (src.health > -10.0)
+ var/threshold = 45
+ if (mental_danger)
+ threshold = 15
+ if (src.r_ch_cou > 2700)
+ if (src.antitoxs < 1)
+ src.toxloss += 1
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ plcheck = 1
+ if (prob(15))
+ spawn( 0 )
+ emote("twitch")
+ src.stunned = 2
+ return
+ if (src.r_epil > threshold * 60)
+ if (src.antitoxs < 1)
+ src.toxloss += 1
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ plcheck = 1
+ if (prob(15))
+ spawn( 0 )
+ emote("twitch")
+ src.stunned = 2
+ return
+ if (src.r_Tourette > threshold * 60)
+ if (src.antitoxs < 1)
+ src.toxloss += 1
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ plcheck = 1
+ if (prob(15))
+ spawn( 0 )
+ emote("twitch")
+ src.stunned = 2
+ return
+ if (src.antitoxs > 7200)
+ src.toxloss += 1
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ plcheck = 1
+ if (prob(15))
+ spawn( 0 )
+ emote("drool")
+ return
+ if (src.health > -50.0)
+ if (src.plasma > 0)
+ if (src.antitoxs < 1)
+ src.toxloss += 1
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ plcheck = 1
+ if (prob(15))
+ spawn( 0 )
+ emote("moan")
+ return
+ if (src.stat != 2)
+ if (src.paralysis + src.stunned + src.weakened > 0)
+ if (src.stunned > 0)
+ src.stunned--
+ src.stat = 0
+ if (src.weakened > 0)
+ src.weakened--
+ src.lying = 1
+ src.stat = 0
+ if (src.paralysis > 0)
+ src.paralysis--
+ src.blinded = 1
+ src.lying = 1
+ src.stat = 1
+ src.canmove = 0
+ var/h = src.hand
+ src.hand = 0
+ drop_item()
+ src.hand = 1
+ drop_item()
+ src.hand = h
+ else
+ src.canmove = 1
+ src.lying = 0
+ src.stat = 0
+ else
+ src.lying = 1
+ src.blinded = 1
+ src.stat = 2
+ src.canmove = 0
+ var/add_weight = 0
+ if (istype(src.l_hand, /obj/item/weapon/grab))
+ add_weight += 1250000.0
+ if (istype(src.r_hand, /obj/item/weapon/grab))
+ add_weight += 1250000.0
+ if (locate(/obj/item/weapon/grab, src.grabbed_by))
+ var/a_grabs = 0
+ for(var/obj/item/weapon/grab/G in src.grabbed_by)
+ G.process()
+ if (G)
+ if (G.state > 1)
+ a_grabs++
+ if ((G.state > 2 && src.loc == G.assailant.loc))
+ src.density = 0
+ src.lying = 0
+ switch(G.assailant.dir)
+ if(1.0)
+ src.pixel_y = 8
+ if(2.0)
+ src.pixel_y = -8.0
+ if(4.0)
+ src.pixel_x = 8
+ if(8.0)
+ src.pixel_x = -8.0
+
+ //Foreach goto(2333)
+ src.weight = ((src.grabbed_by.len - a_grabs) / 2 + 1) * 1250000.0 + (a_grabs * 2500000.0)
+ else
+ if (src.lying)
+ src.weight = add_weight + 2500000.0
+ else
+ src.weight = add_weight + 1250000.0
+ if (src.stuttering > 0)
+ src.stuttering--
+ if (src.eye_blind > 0)
+ src.eye_blind--
+ src.blinded = 1
+ if (src.ear_deaf > 0)
+ src.ear_deaf--
+ else
+ if (src.ear_damage < 25)
+ src.ear_damage -= 0.05
+ src.ear_damage = max(src.ear_damage, 0)
+ if (src.buckled)
+ src.lying = 0
+ src.density = !( src.lying )
+ if (src.lying)
+ src.weight = 5000000.0
+ else
+ src.weight = 2500000.0
+ if (src.sdisabilities & 1)
+ src.blinded = 1
+ if (src.eye_blurry > 0)
+ src.eye_blurry--
+ src.eye_blurry = max(0, src.eye_blurry)
+ if (src.client)
+ src.client.screen -= main_hud.g_dither
+ if (istype(src.wear_mask, /obj/item/weapon/clothing/mask/gasmask))
+ src.client.screen += main_hud.g_dither
+ if (src.mach)
+ if (src.machine)
+ src.mach.icon_state = "mach1"
+ else
+ src.mach.icon_state = "blank"
+ if (src.sleep)
+ src.sleep.icon_state = text("sleep[]", src.sleeping)
+ if (src.rest)
+ src.rest.icon_state = text("rest[]", src.resting)
+ if (src.healths)
+ if (src.stat < 2)
+ if (src.health >= 100)
+ src.healths.icon_state = "health0"
+ else
+ if (src.health >= 75)
+ src.healths.icon_state = "health1"
+ else
+ if (src.health >= 50)
+ src.healths.icon_state = "health2"
+ else
+ if (src.health > 20)
+ src.healths.icon_state = "health3"
+ else
+ src.healths.icon_state = "health4"
+ else
+ src.healths.icon_state = "health5"
+ if (src.pullin)
+ if (src.pulling)
+ src.pullin.icon_state = "pull1"
+ else
+ src.pullin.icon_state = "pull0"
+ if (src.fire)
+ if (ficheck)
+ src.fire.icon_state = "fire1"
+ else
+ src.fire.icon_state = "fire0"
+ if (src.toxin)
+ if (plcheck)
+ src.toxin.icon_state = "toxin1"
+ else
+ src.toxin.icon_state = "toxin0"
+ if (src.oxygen)
+ if (oxcheck)
+ src.oxygen.icon_state = "oxy1"
+ else
+ src.oxygen.icon_state = "oxy0"
+ src.client.screen -= src.hud_used.blurry
+ src.client.screen -= src.hud_used.vimpaired
+ if ((src.blind && src.stat != 2))
+ if (src.blinded)
+ src.blind.layer = 18
+ else
+ src.blind.layer = 0
+ if (src.eye_blurry)
+ src.client.screen -= src.hud_used.blurry
+ src.client.screen += src.hud_used.blurry
+ else
+ src.client.screen -= src.hud_used.blurry
+ if (src.stat != 2)
+ if (src.machine)
+ if (!( src.machine.check_eye(src) ))
+ src.reset_view(null)
+ else
+ reset_view(null)
+ else
+ if ((src.canmove && prob(10) && isturf(src.loc)))
+ step(src, pick(NORTH, SOUTH, EAST, WEST))
+ if (prob(10))
+ src.emote(pick("drool", "chimper", "scratch", "tail", "sit", "jump"))
+ else
+ if (prob(10))
+ var/mob/human/H = locate(/mob/human, oview(1, null))
+ if (istype(H, /mob/human))
+ src.a_intent = "hurt"
+ spawn( 0 )
+ H.attack_paw(src)
+ return
+ if (src.primary)
+ src.primary.cleanup()
+ src.UpdateClothing()
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ return
+
+/mob/monkey/verb/removeinternal()
+
+ src.internal = null
+ return
+
+/mob/monkey/proc/aircheck(obj/substance/gas/G as obj)
+
+ src.t_oxygen = 0
+ src.t_plasma = 0
+ if (G)
+ var/a_oxygen = G.oxygen * 0.7
+ var/a_plasma = G.plasma
+ var/a_sl_gas = G.sl_gas * 0.7
+ G.oxygen -= a_oxygen
+ G.plasma -= a_plasma
+ G.sl_gas -= a_sl_gas
+ if (a_oxygen < 67.032)
+ src.t_oxygen = round((67.032 - a_oxygen) / 5)
+ if (G.co2 > 5)
+ var/t = round((G.co2 - 5) / 5)
+ if (G.co2 > 25)
+ src.paralysis = max(src.paralysis, 3)
+ if (G.co2 > 50)
+ t = 50
+ src.t_oxygen = max(src.t_oxygen, t)
+ if (a_plasma > 5)
+ src.t_plasma = round((src.t_plasma - 5) / 10) + 1
+ if (a_sl_gas > 10)
+ src.weakened = max(src.weakened, 3)
+ if (G.co2 > 40)
+ src.paralysis = max(src.paralysis, 3)
+ G.co2 += a_oxygen * 0.6
+ return
+
+/mob/monkey/proc/firecheck(turf/T as turf)
+
+ if (T.firelevel < 900000.0)
+ return 0
+ var/total = 0
+ if (src.wear_mask)
+ if (T.firelevel > src.wear_mask.s_fire)
+ total += 0.25
+ else
+ total += 0.25
+ return total
+ return
+
+/mob/monkey/proc/emote(act)
+
+ var/param = null
+ if (findtext(act, "-", 1, null))
+ var/t1 = findtext(act, "-", 1, null)
+ param = copytext(act, t1 + 1, length(act) + 1)
+ act = copytext(act, 1, t1)
+ var/muzzled = istype(src.wear_mask, /obj/item/weapon/clothing/mask/muzzle)
+ var/m_type = 1
+ var/message
+
+ switch(act)
+ if("sign")
+ if (!( src.restrained() ))
+ message = text("The monkey signs[].", (text2num(param) ? text(" the number []", text2num(param)) : null))
+ m_type = 1
+ if("scratch")
+ if (!( src.restrained() ))
+ message = "The monkey scratches."
+ m_type = 1
+ if("whimper")
+ if (!( muzzled ))
+ message = "The monkey whimpers."
+ m_type = 2
+ if("roar")
+ if (!( muzzled ))
+ message = "The monkey roars."
+ m_type = 2
+ if("tail")
+ message = "The monkey waves his tail."
+ m_type = 1
+ if("gasp")
+ message = "The monkey gasps."
+ m_type = 2
+ if("drool")
+ message = "The monkey drools."
+ m_type = 1
+ if("paw")
+ if (!( src.restrained() ))
+ message = "The monkey flails his paw."
+ m_type = 1
+ if("scretch")
+ if (!( muzzled ))
+ message = "The monkey scretches."
+ m_type = 2
+ if("choke")
+ message = "The monkey chokes."
+ m_type = 2
+ if("moan")
+ message = "The monkey moans!"
+ m_type = 2
+ if("nod")
+ message = "The monkey nods his head."
+ m_type = 1
+ if("sit")
+ message = "The monkey sits down."
+ m_type = 1
+ if("sway")
+ message = "The monkey sways around dizzily."
+ m_type = 1
+ if("sulk")
+ message = "The monkey sulks down sadly."
+ m_type = 1
+ if("twitch")
+ message = "The monkey twitches violently."
+ m_type = 1
+ if("dance")
+ if (!( src.restrained() ))
+ message = "The monkey dances around happily."
+ m_type = 1
+ if("roll")
+ if (!( src.restrained() ))
+ message = "The monkey rolls."
+ m_type = 1
+ if("shake")
+ message = "The monkey shakes his head."
+ m_type = 1
+ if("gnarl")
+ if (!( muzzled ))
+ message = "The monkey gnarls and shows his teeth.."
+ m_type = 2
+ if("jump")
+ message = "The monkey jumps!"
+ m_type = 1
+ if("help")
+ src << "choke, dance, drool, gasp, gnarl, jump, paw, moan, nod, roar, roll, scratch,\nscretch, shake, sign-#, sit, sulk, sway, tail, twitch, whimper"
+ else
+ src << text("Invalid Emote: []", act)
+ if ((message && src.stat == 0))
+ if (m_type & 1)
+ for(var/mob/O in viewers(src, null))
+ O.show_message(message, m_type)
+ //Foreach goto(703)
+ else
+ for(var/mob/O in hearers(src, null))
+ O.show_message(message, m_type)
+ //Foreach goto(746)
+ return
+
+/mob/monkey/say(message as text)
+
+ if (src.muted)
+ return
+ message = copytext(message, 1, 128)
+ if (src.stat == 2)
+ for(var/mob/M in world)
+ if (M.stat == 2)
+ M << text("[] []: []", src, (src.stat > 1 ? "\[dead \]" : ""), message)
+ //Foreach goto(50)
+ return
+ if ((copytext(message, 1, 2) == "*" && !( src.stat )))
+ src.emote(copytext(message, 2, length(message) + 1))
+ return
+ if ((!( message ) || istype(src.wear_mask, /obj/item/weapon/clothing/mask/muzzle)))
+ return
+ if (src.stat < 2)
+ var/list/L = list( )
+ var/pre = copytext(message, 1, 4)
+ var/italics = 0
+ var/obj_range = null
+ if (pre == "\[r\]")
+ message = copytext(message, 4, length(message) + 1)
+ if (src.r_hand)
+ src.r_hand.talk_into(usr, message)
+ L += hearers(1, null)
+ italics = 1
+ obj_range = 1
+ else
+ if (pre == "\[l\]")
+ message = copytext(message, 4, length(message) + 1)
+ if (src.l_hand)
+ src.l_hand.talk_into(usr, message)
+ L += hearers(1, null)
+ italics = 1
+ obj_range = 1
+ else
+ if (pre == "\[w\]")
+ message = copytext(message, 4, length(message) + 1)
+ L += hearers(1, null)
+ italics = 1
+ obj_range = 1
+ else
+ L += hearers(null, null)
+ pre = null
+ L -= src
+ L += src
+ if (italics)
+ message = text("[]", message)
+ for(var/mob/M in L)
+ if (istype(M, src.type))
+ M.show_message(text("[]: []", src, message), 2)
+ else
+ M.show_message(text("[] chimpers.", src), 2)
+ //Foreach goto(503)
+ for(var/obj/O in view(obj_range, null))
+ spawn( 0 )
+ if (O)
+ O.hear_talk(usr, message)
+ return
+ //Foreach goto(580)
+ for(var/mob/M in world)
+ if (M.stat > 1)
+ M << text("[] []: []", src, (src.stat > 1 ? "\[dead \]" : ""), message)
+ //Foreach goto(637)
+ return
+
+/mob/monkey/examine()
+ set src in oview()
+
+ usr << "\blue *---------*"
+ usr << text("\blue This is \icon[] []!", src, src.name)
+ if (src.handcuffed)
+ usr << text("\blue \t[] is handcuffed! \icon[]", src.name, src.handcuffed)
+ if (src.wear_mask)
+ usr << text("\blue \t[] has a \icon[] [] on \his[] head!", src.name, src.wear_mask, src.wear_mask.name, src)
+ if (src.l_hand)
+ usr << text("\blue \t[] has a \icon[] [] in \his[] left hand!", src.name, src.l_hand, src.l_hand.name, src)
+ if (src.r_hand)
+ usr << text("\blue [] has a \icon[] [] in \his[] right hand!", src.name, src.r_hand, src.r_hand.name, src)
+ if (src.back)
+ usr << text("\blue [] has a \icon[] [] on \his[] back!", src.name, src.back, src.back.name, src)
+ if (src.bruteloss)
+ if (src.bruteloss < 30)
+ usr << text("\red [] looks slightly bruised!", src.name)
+ else
+ usr << text("\red [] looks severely bruised!", src.name)
+ if (src.fireloss)
+ if (src.fireloss < 30)
+ usr << text("\red [] looks slightly burnt!", src.name)
+ else
+ usr << text("\red [] looks severely burnt!", src.name)
+ return
+
+/mob/monkey/ex_act(severity)
+
+ flick("flash", src.flash)
+ switch(severity)
+ if(1.0)
+ if (src.stat != 2)
+ src.bruteloss += 200
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ if(2.0)
+ if (src.stat != 2)
+ src.bruteloss += 60
+ src.fireloss += 60
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ if(3.0)
+ if (src.stat != 2)
+ src.bruteloss += 30
+ src.health = 100 - src.oxyloss - src.toxloss - src.fireloss - src.bruteloss
+ if (prob(50))
+ src.paralysis += 10
+ else
+ return
+
+/atom/movable/Move(NewLoc, direct)
+
+ if (direct & direct - 1)
+ if (direct & 1)
+ if (direct & 4)
+ if (step(src, NORTH))
+ step(src, EAST)
+ else
+ if (step(src, EAST))
+ step(src, NORTH)
+ else
+ if (direct & 8)
+ if (step(src, NORTH))
+ step(src, WEST)
+ else
+ if (step(src, WEST))
+ step(src, NORTH)
+ else
+ if (direct & 2)
+ if (direct & 4)
+ if (step(src, SOUTH))
+ step(src, EAST)
+ else
+ if (step(src, EAST))
+ step(src, SOUTH)
+ else
+ if (direct & 8)
+ if (step(src, SOUTH))
+ step(src, WEST)
+ else
+ if (step(src, WEST))
+ step(src, SOUTH)
+ else
+ ..()
+ return
+
+/atom/movable/verb/pull()
+ set src in oview(1)
+
+ if (!( usr ))
+ return
+ if (!( src.anchored ))
+ usr.pulling = src
+ return
+
+/atom/verb/examine()
+ set src in oview(1)
+
+ if (!( usr ))
+ return
+ usr << src.desc
+ // *****RM
+ //usr << "[src.name]: Dn:[density] dir:[dir] cont:[contents] icon:[icon] is:[icon_state] loc:[loc]"
+ return
+
+/client/Northeast()
+
+ src.mob.swap_hand()
+ return
+
+/client/Southeast()
+
+ var/obj/item/weapon/W = src.mob.equipped()
+ if (W)
+ W.attack_self(src.mob)
+ return
+
+/client/Northwest()
+
+ src.mob.drop_item_v()
+ return
+
+/client/Southwest()
+
+ src.mob.throw_item_v()
+ return
+
+/client/Center()
+
+ if (isobj(src.mob.loc))
+ var/obj/O = src.mob.loc
+ if (src.mob.canmove)
+ return O.relaymove(src.mob, 16)
+ return
+
+/client/Move(n, direct)
+
+ if (src.moving)
+ return 0
+ if (world.time < src.move_delay)
+ return
+ if (!( src.mob ))
+ return
+ if (src.mob.stat == 2)
+ return
+ if (src.mob.monkeyizing)
+ return
+ var/is_monkey = istype(src.mob, /mob/monkey)
+ if (locate(/obj/item/weapon/grab, locate(/obj/item/weapon/grab, src.mob.grabbed_by.len)))
+ var/list/grabbing = list( )
+ if (istype(src.mob.l_hand, /obj/item/weapon/grab))
+ var/obj/item/weapon/grab/G = src.mob.l_hand
+ grabbing += G.affecting
+ if (istype(src.mob.r_hand, /obj/item/weapon/grab))
+ var/obj/item/weapon/grab/G = src.mob.r_hand
+ grabbing += G.affecting
+ for(var/obj/item/weapon/grab/G in src.mob.grabbed_by)
+ if (G.state == 1)
+ if (!( grabbing.Find(G.assailant) ))
+ //G = null
+ del(G)
+ else
+ if (G.state == 2)
+ src.move_delay = world.time + 10
+ if ((prob(25) && (!( is_monkey ) || prob(25))))
+ for(var/mob/O in viewers(src.mob, null))
+ O.show_message(text("\red [] has broken free of []'s grip!", src.mob, G.assailant), 1)
+ //Foreach goto(309)
+ //G = null
+ del(G)
+ else
+ return
+ else
+ if (G.state == 2)
+ src.move_delay = world.time + 10
+ if ((prob(5) && !( is_monkey ) || prob(25)))
+ for(var/mob/O in viewers(src.mob, null))
+ O.show_message(text("\red [] has broken free of []'s headlock!", src.mob, G.assailant), 1)
+ //Foreach goto(423)
+ //G = null
+ del(G)
+ else
+ return
+ //Foreach goto(189)
+ if (src.mob.canmove)
+ var/j_pack = 0
+ if ((istype(src.mob.loc, /turf/space) && !( locate(/obj/move, src.mob.loc) )))
+ if (!( src.mob.restrained() ))
+ if (!( (locate(/obj/grille, oview(1, src.mob)) || locate(/turf/station, oview(1, src.mob))) ))
+ if (istype(src.mob.back, /obj/item/weapon/tank/jetpack))
+ var/obj/item/weapon/tank/jetpack/J = src.mob.back
+ j_pack = J.allow_thrust(100, src.mob)
+ var/obj/effects/sparks/ion_trails/I = new /obj/effects/sparks/ion_trails( src.mob.loc )
+ flick("ion_fade", I)
+ I.icon_state = "blank"
+ spawn( 20 )
+ //I = null
+ del(I)
+ return
+ if (!( j_pack ))
+ return 0
+ else
+ return 0
+ else
+ return 0
+
+
+ if (isturf(src.mob.loc))
+ src.move_delay = world.time
+ if ((j_pack && j_pack < 1))
+ src.move_delay += 5
+ switch(src.mob.m_intent)
+ if("run")
+ if (src.mob.drowsyness > 0)
+ src.move_delay += 6
+ src.move_delay += 1
+ if("face")
+ src.mob.dir = direct
+ return
+ if("walk")
+ src.move_delay += 7
+
+
+ src.move_delay += src.mob.m_delay()
+
+ src.move_delay += round((100 - src.mob.health) / 20) //*****RM fix
+
+ if (src.mob.restrained())
+ for(var/mob/M in range(src.mob, 1))
+ if (((M.pulling == src.mob && (!( M.restrained() ) && M.stat == 0)) || locate(/obj/item/weapon/grab, src.mob.grabbed_by.len)))
+ src << "\blue You're restrained! You can't move!"
+ return 0
+ //Foreach goto(853)
+ src.moving = 1
+ if (locate(/obj/item/weapon/grab, src.mob))
+ src.move_delay = max(src.move_delay, world.time + 7)
+ var/list/L = src.mob.ret_grab()
+ if (istype(L, /list))
+ if (L.len == 2)
+ L -= src.mob
+ var/mob/M = L[1]
+ if ((get_dist(src.mob, M) <= 1 || M.loc == src.mob.loc))
+ var/turf/T = src.mob.loc
+ . = ..()
+ if (isturf(M.loc))
+ var/diag = get_dir(src.mob, M)
+ if ((diag - 1) & diag)
+ else
+ diag = null
+ if ((get_dist(src.mob, M) > 1 || diag))
+ step(M, get_dir(M.loc, T))
+ else
+ for(var/mob/M in L)
+ M.other_mobs = 1
+ if (src.mob != M)
+ M.animate_movement = 3
+ //Foreach goto(1163)
+ for(var/mob/M in L)
+ spawn( 0 )
+ step(M, direct)
+ return
+ spawn( 1 )
+ M.other_mobs = null
+ M.animate_movement = 1
+ return
+ //Foreach goto(1214)
+ else
+ . = ..()
+ src.moving = null
+ return .
+ else
+ if (isobj(src.mob.loc))
+ var/obj/O = src.mob.loc
+ if (src.mob.canmove)
+ return O.relaymove(src.mob, direct)
+ else
+ return
+ return
+
+/client/proc/show_panel()
+
+ if (src.holder)
+ src.holder.update()
+ return
+
+/client/New()
+
+ if (banned.Find(src.ckey))
+ //SN src = null
+ del(src)
+ return
+ world << text("[] has logged in!", src)
+ if (((world.address == src.address || !( src.address )) && !( host )))
+ host = src.key
+ world.update_stat()
+ ..()
+ spawn( 50 )
+ if (admins.Find(src.ckey))
+ src.holder = new /obj/admins( src )
+ src.holder.rank = admins[text("[]", src.ckey)]
+ switch(admins[text("[]", src.ckey)])
+ if("Primary Administrator")
+ src.holder.level = 5
+ if("Master Administrator")
+ src.holder.level = 4
+ if("Administrator")
+ src.holder.level = 3
+ if("Supervisor")
+ src.holder.level = 2
+ if("Moderator")
+ src.holder.level = 1
+ if("Game Master")
+ src.holder.level = 0
+ if("Banned")
+ //SN src = null
+ del(src)
+ return
+ else
+ //src.holder = null
+ del(src.holder)
+ if (src.holder)
+ src.holder.owner = src
+ src.verbs += /client/proc/show_panel
+ return
+ return
+
+/client/Del()
+
+ if (banned.Find(src.ckey))
+ ..()
+ return
+ world << text("[] has logged out!", src)
+ ..()
+ //src.holder = null
+ del(src.holder)
+ return
diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/s_html.sav b/ss13-40.93.2-base/ss13-40.93.2-base/s_html.sav
new file mode 100644
index 0000000..dd93d4d
Binary files /dev/null and b/ss13-40.93.2-base/ss13-40.93.2-base/s_html.sav differ
diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/shuttle.dm b/ss13-40.93.2-base/ss13-40.93.2-base/shuttle.dm
new file mode 100644
index 0000000..136c528
--- /dev/null
+++ b/ss13-40.93.2-base/ss13-40.93.2-base/shuttle.dm
@@ -0,0 +1,327 @@
+
+/obj/machinery/computer/prison_shuttle/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ //SN src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(58)
+ src.icon_state = "broken"
+ if(3.0)
+ if (prob(25))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(109)
+ src.icon_state = "broken"
+ else
+ return
+
+/obj/machinery/computer/prison_shuttle/verb/take_off()
+ set src in oview(1)
+
+ if ((usr.stat || usr.restrained()))
+ return
+ src.add_fingerprint(usr)
+ if (prison_entered)
+ var/A = locate(/area/shuttle)
+ for(var/turf/T in A)
+ if (T.z == 1)
+ for(var/atom/movable/AM as mob|obj in T)
+ AM.z = PRISON_SHUTTLE_Z
+ //Foreach goto(96)
+ var/turf/U = locate(T.x, T.y, PRISON_SHUTTLE_Z)
+ U.oxygen = T.oxygen
+ U.oldoxy = T.oldoxy
+ U.tmpoxy = T.tmpoxy
+ U.poison = T.poison
+ U.oldpoison = T.oldpoison
+ U.tmppoison = T.tmppoison
+ U.co2 = T.co2
+ U.oldco2 = T.oldco2
+ U.tmpco2 = T.tmpco2
+ //T = null
+ del(T)
+ //Foreach goto(62)
+ prison_entered = null
+ else
+ if (!( prison_entered ))
+ if (ticker.shuttle_location != 1)
+ var/A = locate(/area/shuttle_prison)
+ for(var/turf/T in A)
+ if (T.z == PRISON_SHUTTLE_Z)
+ for(var/atom/movable/AM as mob|obj in T)
+ AM.z = 1
+ //Foreach goto(346)
+ var/turf/U = locate(T.x, T.y, 1)
+ U.oxygen = T.oxygen
+ U.oldoxy = T.oldoxy
+ U.tmpoxy = T.tmpoxy
+ U.poison = T.poison
+ U.oldpoison = T.oldpoison
+ U.tmppoison = T.tmppoison
+ U.co2 = T.co2
+ U.oldco2 = T.oldco2
+ U.tmpco2 = T.tmpco2
+ //T = null
+ del(T)
+ //Foreach goto(312)
+ prison_entered = 1
+ else
+ usr << "\blue There is an obstructing shuttle!"
+ return
+ return
+
+/obj/machinery/computer/prison_shuttle/verb/restabalize()
+ set src in oview(1)
+
+ viewers(null, null) << "\red Restabalizing prison shuttle atmosphere!"
+ var/A = locate(/area/shuttle_prison)
+ for(var/obj/move/T in A)
+ T.firelevel = 0
+ T.oxygen = 756000.0
+ T.oldoxy = 756000.0
+ T.tmpoxy = 756000.0
+ T.poison = 0
+ T.oldpoison = 0
+ T.tmppoison = 0
+ T.co2 = 0
+ T.oldco2 = 0
+ T.tmpco2 = 0
+ T.sl_gas = 0
+ T.osl_gas = 0
+ T.tsl_gas = 0
+ T.n2 = 2844000.0
+ T.on2 = 2844000.0
+ T.tn2 = 2844000.0
+ T.heat = 9.8892006E8
+ T.oheat = 9.8892006E8
+ T.theat = 9.8892006E8
+ //Foreach goto(40)
+ viewers(null, null) << "\red Prison shuttle Restabalized!"
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/computer/shuttle/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ //SN src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(58)
+ src.icon_state = "broken"
+ if(3.0)
+ if (prob(25))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(109)
+ src.icon_state = "broken"
+ else
+ return
+
+/obj/machinery/computer/shuttle/verb/restabalize()
+ set src in oview(1)
+
+ world << "\red Restabalizing shuttle atmosphere!"
+ var/A = locate(/area/shuttle)
+ for(var/obj/move/T in A)
+ T.firelevel = 0
+ T.oxygen = 756000.0
+ T.oldoxy = 756000.0
+ T.tmpoxy = 756000.0
+ T.poison = 0
+ T.oldpoison = 0
+ T.tmppoison = 0
+ T.co2 = 0
+ T.oldco2 = 0
+ T.tmpco2 = 0
+ T.sl_gas = 0
+ T.osl_gas = 0
+ T.tsl_gas = 0
+ T.n2 = 2844000.0
+ T.on2 = 2844000.0
+ T.tn2 = 2844000.0
+ T.heat = 9.8892006E8
+ T.oheat = 9.8892006E8
+ T.theat = 9.8892006E8
+ //Foreach goto(35)
+ world << "\red Shuttle Restabalized!"
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/computer/shuttle/verb/hijack()
+ set src in oview(1)
+
+ if ((!( ticker ) || ticker.shuttle_location != SHUTTLE_Z))
+ return
+ if (usr != ticker.killer)
+ return
+ world << "\blue Alert: The shuttle is has been hijacked prematurely by the traitor!"
+ ticker.timing = 0
+ ticker.check_win()
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/computer/shuttle/attackby(var/obj/item/weapon/card/id/W as obj, var/mob/user as mob)
+
+ if ((!( istype(W, /obj/item/weapon/card/id) ) || !( ticker ) || ticker.shuttle_location == SHUTTLE_Z || !( user )))
+ return
+ if (W.access_level < 1)
+ user << text("The access level ([]) of [] card is not high enough. (It must be at least level 1.)", W.access_level, W.registered)
+ return
+ var/choice = alert(user, text("Would you like to (un)authorize a shortened launch time? [] authorization\s are still needed. Use abort to cancel all authorizations.", src.auth_need - src.authorized.len), "Shuttle Launch", "Authorize", "Repeal", "Abort")
+ switch(choice)
+ if("Authorize")
+ src.authorized -= W.registered
+ src.authorized += W.registered
+ if (src.auth_need - src.authorized.len > 0)
+ world << text("\blue Alert: [] authorizations needed until shuttle is launched early", src.auth_need - src.authorized.len)
+ else
+ world << "\blue Alert: Shuttle launch time shortened to 10 seconds!"
+ ticker.timeleft = 100
+ //src.authorized = null
+ del(src.authorized)
+ src.authorized = list( )
+ if("Repeal")
+ src.authorized -= W.registered
+ world << text("\blue Alert: [] authorizations needed until shuttle is launched early", src.auth_need - src.authorized.len)
+ if("Abort")
+ world << "\blue All authorizations to shorting time for shuttle launch have been revoked!"
+ src.authorized.len = 0
+ src.authorized = list( )
+ else
+ return
+
+/obj/shut_controller/proc/rotate(direct)
+
+ var/SE_X = 1
+ var/SE_Y = 1
+ var/SW_X = 1
+ var/SW_Y = 1
+ var/NE_X = 1
+ var/NE_Y = 1
+ var/NW_X = 1
+ var/NW_Y = 1
+ for(var/obj/move/M in src.parts)
+ if (M.x < SW_X)
+ SW_X = M.x
+ if (M.x > SE_X)
+ SE_X = M.x
+ if (M.y < SW_Y)
+ SW_Y = M.y
+ if (M.y > NW_Y)
+ NW_Y = M.y
+ if (M.y > NE_Y)
+ NE_Y = M.y
+ if (M.y < SE_Y)
+ SE_Y = M.y
+ if (M.x > NE_X)
+ NE_X = M.x
+ if (M.x < NW_X)
+ NW_X = M.y
+ //Foreach goto(75)
+ var/length = abs(NE_X - NW_X)
+ var/width = abs(NE_Y - SE_Y)
+ var/obj/random = pick(src.parts)
+ var/s_direct = null
+ switch(s_direct)
+ if(1.0)
+ switch(direct)
+ if(90.0)
+ var/tx = SE_X
+ var/ty = SE_Y
+ var/t_z = random.z
+ for(var/obj/move/M in src.parts)
+ M.ty = -M.x - tx
+ M.tx = -M.y - ty
+ var/T = locate(M.x, M.y, 11)
+ M.relocate(T)
+ M.ty = -M.ty
+ M.tx += length
+ //Foreach goto(374)
+ for(var/obj/move/M in src.parts)
+ M.tx += tx
+ M.ty += ty
+ var/T = locate(M.tx, M.ty, t_z)
+ M.relocate(T, 90)
+ //Foreach goto(468)
+ if(-90.0)
+ var/tx = SE_X
+ var/ty = SE_Y
+ var/t_z = random.z
+ for(var/obj/move/M in src.parts)
+ M.ty = M.x - tx
+ M.tx = M.y - ty
+ var/T = locate(M.x, M.y, 11)
+ M.relocate(T)
+ M.ty = -M.ty
+ M.ty += width
+ //Foreach goto(571)
+ for(var/obj/move/M in src.parts)
+ M.tx += tx
+ M.ty += ty
+ var/T = locate(M.tx, M.ty, t_z)
+ M.relocate(T, -90.0)
+ //Foreach goto(663)
+ else
+ else
+ return
+
+/obj/shuttle/door/verb/open()
+ set src in oview(1)
+
+ src.add_fingerprint(usr)
+ if (src.operating)
+ return
+ src.operating = 1
+ flick("doorc0", src)
+ src.icon_state = "door0"
+ sleep(15)
+ src.density = 0
+ src.opacity = 0
+ src.verbs -= /obj/shuttle/door/verb/open
+ src.verbs += /obj/shuttle/door/proc/close
+ src.operating = 0
+ return
+
+/obj/shuttle/door/proc/close()
+ set src in oview(1)
+
+ src.add_fingerprint(usr)
+ if (src.operating)
+ return
+ src.operating = 1
+ flick("doorc1", src)
+ src.icon_state = "door1"
+ src.density = 1
+ if (src.visible)
+ src.opacity = 1
+ sleep(15)
+ src.verbs += /obj/shuttle/door/verb/open
+ src.verbs -= /obj/shuttle/door/proc/close
+ src.operating = 0
+ return
+
+/turf/station/shuttle/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ //SN src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ //SN src = null
+ del(src)
+ return
+ else
+ return
diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/ss13_algorithm2.dm b/ss13-40.93.2-base/ss13-40.93.2-base/ss13_algorithm2.dm
new file mode 100644
index 0000000..ad297d4
--- /dev/null
+++ b/ss13-40.93.2-base/ss13-40.93.2-base/ss13_algorithm2.dm
@@ -0,0 +1,558 @@
+
+/proc/SetupOccupationsList()
+
+ var/list/new_occupations = list( )
+ for(var/occupation in occupations)
+ if (!( new_occupations.Find(occupation) ))
+ new_occupations[occupation] = 1
+ else
+ new_occupations[occupation] += 1
+ //Foreach goto(23)
+ occupations = new_occupations
+ return
+
+/proc/DivideOccupations()
+
+ var/list/occupations1 = list( )
+ var/list/occupations2 = list( )
+ var/list/occupations3 = list( )
+ var/list/final_occupations = list( )
+ var/list/unassigned_mobs = list( )
+ var/list/occupation_choices = occupations.Copy()
+ occupation_choices = shuffle(occupation_choices)
+ for(var/occupation in occupations + assistant_occupations)
+ occupations1[occupation] = list( )
+ occupations2[occupation] = list( )
+ occupations3[occupation] = list( )
+ final_occupations[occupation] = list( )
+ //Foreach goto(78)
+ occupations1["Captain"] = list( )
+ occupations2["Captain"] = list( )
+ occupations3["Captain"] = list( )
+ final_occupations["Captain"] = list( )
+ for(var/mob/human/M in world)
+ if ((!( M.client ) || !( M.start ) || M.already_placed))
+ else
+ unassigned_mobs += M
+ if (M.occupation1 != "No Preference")
+ occupations1[M.occupation1] += M
+ if (M.occupation2 != "No Preference")
+ occupations2[M.occupation2] += M
+ if (M.occupation3 != "No Preference")
+ occupations3[M.occupation3] += M
+ //Foreach goto(187)
+ for(var/occupation in occupations)
+ occupations1[occupation] = shuffle(occupations1[occupation])
+ occupations2[occupation] = shuffle(occupations2[occupation])
+ occupations3[occupation] = shuffle(occupations3[occupation])
+ //Foreach goto(339)
+ occupations1["Captain"] = shuffle(occupations1["Captain"])
+ occupations2["Captain"] = shuffle(occupations2["Captain"])
+ occupations3["Captain"] = shuffle(occupations3["Captain"])
+ var/list/captain_choice = occupations1["Captain"]
+ if (captain_choice.len)
+ final_occupations["Captain"] = captain_choice[1]
+ occupation_choices -= "Captain"
+ unassigned_mobs -= final_occupations["Captain"]
+ if (!( final_occupations["Captain"] ))
+ captain_choice = occupations2["Captain"]
+ if (captain_choice.len)
+ final_occupations["Captain"] = captain_choice[1]
+ occupation_choices -= "Captain"
+ unassigned_mobs -= final_occupations["Captain"]
+ if (!( final_occupations["Captain"] ))
+ captain_choice = occupations3["Captain"]
+ if (captain_choice.len)
+ final_occupations["Captain"] = captain_choice[1]
+ occupation_choices -= "Captain"
+ unassigned_mobs -= final_occupations["Captain"]
+ if (!( final_occupations["Captain"] ))
+ var/list/contenders = list( )
+ for(var/mob/human/M in world)
+ if (M.client)
+ contenders += M
+ //Foreach goto(691)
+ var/mob/human/M = pick(contenders)
+ final_occupations["Captain"] = M
+ occupation_choices -= "Captain"
+ unassigned_mobs -= final_occupations["Captain"]
+ occupations1[text("[]", M.occupation1)] -= M
+ occupations2[text("[]", M.occupation2)] -= M
+ occupations3[text("[]", M.occupation3)] -= M
+ for(var/mob/human/M in unassigned_mobs)
+ if (assistant_occupations.Find(M.occupation1))
+ M.Assign_Rank(M.occupation1)
+ unassigned_mobs -= M
+ //Foreach goto(844)
+ for(var/occupation in occupation_choices)
+ var/list/L = occupations1[occupation]
+ if (L.len)
+ var/eligible = occupations[occupation]
+ var/multiple = eligible > 1
+ while(eligible--)
+ var/M = null
+ var/i = null
+ i = 1
+ while((i <= L.len && !( M )))
+ if (unassigned_mobs.Find(L[i]))
+ M = L[i]
+ i++
+ if (M)
+ if (multiple)
+ final_occupations[occupation] += M
+ else
+ final_occupations[occupation] = M
+ unassigned_mobs -= M
+ if (eligible < 1)
+ occupation_choices -= occupation
+ if ((!( occupation_choices.len ) || !( unassigned_mobs.len )))
+ else
+ //Foreach continue //goto(913)
+ for(var/mob/human/M in unassigned_mobs)
+ if (assistant_occupations.Find(M.occupation2))
+ M.Assign_Rank(M.occupation2)
+ unassigned_mobs -= M
+ //Foreach goto(1158)
+ for(var/occupation in occupation_choices)
+ var/list/L = occupations2[occupation]
+ if (L.len)
+ var/eligible = occupations[occupation]
+ var/multiple = eligible > 1
+ if (multiple)
+ var/list/X = final_occupations[occupation]
+ eligible -= X.len
+ while(eligible--)
+ var/M = null
+ var/i = null
+ i = 1
+ while((i <= L.len && !( M )))
+ if (unassigned_mobs.Find(L[i]))
+ M = L[i]
+ i++
+ if (M)
+ if (multiple)
+ final_occupations[occupation] += M
+ else
+ final_occupations[occupation] = M
+ unassigned_mobs -= M
+ if (eligible < 1)
+ occupation_choices -= occupation
+ if ((!( occupation_choices.len ) || !( unassigned_mobs.len )))
+ else
+ //Foreach continue //goto(1227)
+ for(var/mob/human/M in unassigned_mobs)
+ if (assistant_occupations.Find(M.occupation3))
+ M.Assign_Rank(M.occupation3)
+ unassigned_mobs -= M
+ //Foreach goto(1502)
+ for(var/occupation in occupation_choices)
+ var/list/L = occupations3[occupation]
+ if (L.len)
+ var/eligible = occupations[occupation]
+ var/multiple = eligible > 1
+ if (multiple)
+ var/list/X = final_occupations[occupation]
+ eligible -= X.len
+ while(eligible--)
+ var/M = null
+ var/i = null
+ i = 1
+ while((i <= L.len && !( M )))
+ if (unassigned_mobs.Find(L[i]))
+ M = L[i]
+ i++
+ if (M)
+ if (multiple)
+ final_occupations[occupation] += M
+ else
+ final_occupations[occupation] = M
+ unassigned_mobs -= M
+ if (eligible < 1)
+ occupation_choices -= occupation
+ //Foreach goto(1571)
+ if (unassigned_mobs.len)
+ unassigned_mobs = shuffle(unassigned_mobs)
+ for(var/mob/human/M in unassigned_mobs)
+ if (occupation_choices.len)
+ var/occupation = pick(occupation_choices)
+ final_occupations[occupation] = M
+ occupation_choices -= occupation
+ unassigned_mobs -= M
+ break ////
+ //Foreach goto(1846)
+ for(var/occupation in final_occupations)
+ var/mob/human/M = final_occupations[occupation]
+ if (ismob(M))
+ M.Assign_Rank(occupation)
+ else
+ if (istype(M, /list))
+ for(var/mob/human/E in final_occupations[occupation])
+ E.Assign_Rank(occupation)
+ //Foreach goto(2003)
+ //Foreach goto(1931)
+ for(var/mob/human/M in unassigned_mobs)
+ M.Assign_Rank(pick("Research Assistant", "Technical Assistant", "Medical Assistant", "Staff Assistant"))
+ //Foreach goto(2051)
+ return
+
+/proc/shuffle(var/list/shufflelist)
+
+ if (!( shufflelist ))
+ return
+ var/list/old_list = shufflelist.Copy()
+ var/list/new_list = list( )
+ while(old_list.len)
+ var/item = old_list[rand(1, old_list.len)]
+ new_list += item
+ old_list -= item
+ return new_list
+ return
+
+/world/New()
+
+ ..()
+ spawn( 0 )
+ SetupOccupationsList()
+ return
+ return
+
+/mob/human/verb/char_setup()
+
+ if (src.start)
+ return
+ src.ShowChoices()
+ return
+
+/mob/human/proc/ShowChoices()
+
+ var/list/destructive = assistant_occupations.Copy()
+ var/dat = ""
+ dat += text("Name: []
", src, src.rname)
+ dat += text("Gender: []
", src, (src.gender == "male" ? "Male" : "Female"))
+ dat += text("Age - []
", src, src.age)
+ dat += "
Occupation Choices:
"
+ if (destructive.Find(src.occupation1))
+ dat += text("\t[]
", src, src.occupation1)
+ else
+ if (src.occupation1 != "No Preference")
+ dat += text("\tFirst Choice: []
", src, src.occupation1)
+ if (destructive.Find(src.occupation2))
+ dat += text("\tSecond Choice: []
", src, src.occupation2)
+ else
+ if (src.occupation2 != "No Preference")
+ dat += text("\tSecond Choice: []
", src, src.occupation2)
+ if (destructive.Find(src.occupation3))
+ dat += text("\tLast Choice: []
", src, src.occupation3)
+ else
+ if (src.occupation3 != "No Preference")
+ dat += text("\tLast Choice: []
", src, src.occupation3)
+ else
+ dat += text("\tLast Choice: No Preference
", src)
+ else
+ dat += text("\tSecond Choice: No Preference
", src)
+ else
+ dat += text("\tNo Preference
", src)
+ dat += "
Body Data
"
+ dat += text("Blood Type: []
", src, src.b_type)
+ dat += text("Skin Tone: []/220
", src, -src.ns_tone + 35)
+ dat += text("Hair Color: test
", num2hex(src.nr_hair, 2), num2hex(src.ng_hair, 2), num2hex(src.nb_hair))
+ dat += text(" Red - []", num2hex(src.nr_hair, 2), src, src.nr_hair)
+ dat += text(" Green - []", num2hex(src.ng_hair, 2), src, src.ng_hair)
+ dat += text(" Blue - []", num2hex(src.nb_hair, 2), src, src.nb_hair)
+ dat += text("
Style - []", src, src.h_style)
+ dat += text("
Eye Color: test
", num2hex(src.r_eyes, 2), num2hex(src.g_eyes, 2), num2hex(src.b_eyes, 2))
+ dat += text(" Red - []", num2hex(src.r_eyes, 2), src, src.r_eyes)
+ dat += text(" Green - []", num2hex(src.g_eyes, 2), src, src.g_eyes)
+ dat += text(" Blue - []", num2hex(src.b_eyes, 2), src, src.b_eyes)
+ dat += "
Disabilities
"
+ dat += text("Need Glasses: []
", src, (src.need_gl ? "Yes" : "No"))
+ dat += text("Epileptic: []
", src, (src.be_epil ? "Yes" : "No"))
+ dat += text("Tourette Syndrome: []
", src, (src.be_tur ? "Yes" : "No"))
+ dat += text("Chronic Cough: []
", src, (src.be_cough ? "Yes" : "No"))
+ dat += text("Stutter: []
", src, (src.be_stut ? "Yes" : "No"))
+ dat += "
"
+ dat += text("Load Setup
", src)
+ dat += text("Save Setup
", src)
+ dat += ""
+ src << browse(dat, "window=mob_occupations;size=300x600")
+ return
+
+/mob/human/proc/SetChoices(occ)
+
+ if (occ == null)
+ occ = 1
+ var/HTML = ""
+ HTML += ""
+ switch(occ)
+ if(1.0)
+ HTML += "Which occupation would you like most?
"
+ if(2.0)
+ HTML += "Which occupation would you like if you couldn't have your first?
"
+ if(3.0)
+ HTML += "Which occupation would you like if you couldn't have the others?
"
+ else
+ for(var/job in occupations + assistant_occupations)
+ HTML += text("[]
", src, occ, job, job)
+ //Foreach goto(105)
+ HTML += text("Captain
", src, occ)
+ HTML += "
"
+ HTML += text("\[No Preference\]
", src, occ)
+ HTML += text("\[Cancel\]", src, occ)
+ HTML += " "
+ usr << browse(HTML, "window=mob_occupation;size=300x500")
+ return
+
+/mob/human/proc/SetJob(occ, job)
+
+ if (occ == null)
+ occ = 1
+ if (job == null)
+ job = "Captain"
+ if ((!( occupations.Find(job) ) && !( assistant_occupations.Find(job) ) && job != "Captain"))
+ return
+ switch(occ)
+ if(1.0)
+ if (job == src.occupation1)
+ usr << browse(null, "window=mob_occupation")
+ return
+ else
+ if (job == "No Preference")
+ src.occupation1 = "No Preference"
+ else
+ if (job == src.occupation2)
+ job = src.occupation1
+ src.occupation1 = src.occupation2
+ src.occupation2 = job
+ else
+ if (job == src.occupation3)
+ job = src.occupation1
+ src.occupation1 = src.occupation3
+ src.occupation3 = job
+ else
+ src.occupation1 = job
+ if(2.0)
+ if (job == src.occupation2)
+ src << browse(null, "window=mob_occupation")
+ return
+ else
+ if (job == "No Preference")
+ if (src.occupation3 != "No Preference")
+ src.occupation2 = src.occupation3
+ src.occupation3 = "No Preference"
+ else
+ src.occupation2 = "No Preference"
+ else
+ if (job == src.occupation1)
+ if (src.occupation2 == "No Preference")
+ src << browse(null, "window=mob_occupation")
+ return
+ job = src.occupation2
+ src.occupation2 = src.occupation1
+ src.occupation1 = job
+ else
+ if (job == src.occupation3)
+ job = src.occupation2
+ src.occupation2 = src.occupation3
+ src.occupation3 = job
+ else
+ src.occupation2 = job
+ if(3.0)
+ if (job == src.occupation3)
+ usr << browse(null, "window=mob_occupation")
+ return
+ else
+ if (job == "No Preference")
+ src.occupation3 = "No Preference"
+ else
+ if (job == src.occupation1)
+ if (src.occupation3 == "No Preference")
+ src << browse(null, "window=mob_occupation")
+ return
+ job = src.occupation3
+ src.occupation3 = src.occupation1
+ src.occupation1 = job
+ else
+ if (job == src.occupation2)
+ if (src.occupation3 == "No Preference")
+ src << browse(null, "window=mob_occupation")
+ return
+ job = src.occupation3
+ src.occupation3 = src.occupation2
+ src.occupation2 = job
+ else
+ src.occupation3 = job
+ else
+ src.ShowChoices()
+ src << browse(null, "window=mob_occupation")
+ return
+
+/mob/human/proc/Assign_Rank(rank)
+
+ if (rank == "Captain")
+ world << text("[] is the captain!", src)
+ if (!( src.w_radio ))
+ var/obj/item/weapon/radio/headset/H = new /obj/item/weapon/radio/headset( src )
+ src.w_radio = H
+ H.layer = 20
+ if (!( src.back ))
+ var/obj/item/weapon/storage/backpack/H = new /obj/item/weapon/storage/backpack( src )
+ src.back = H
+ H.layer = 20
+ if (!( src.glasses ))
+ if (src.disabilities & 1)
+ var/obj/item/weapon/clothing/glasses/regular/G = new /obj/item/weapon/clothing/glasses/regular( src )
+ src.glasses = G
+ G.layer = 20
+ if ((!( src.belt ) && src.w_uniform))
+ var/obj/item/weapon/radio/signaler/S = new /obj/item/weapon/radio/signaler( src )
+ src.belt = S
+ S.layer = 20
+ if ((!( src.r_store ) && src.w_uniform))
+ var/obj/item/weapon/pen/S = new /obj/item/weapon/pen( src )
+ src.r_store = S
+ S.layer = 20
+ if ((src.client && !( src.wear_id ) && src.w_uniform))
+ var/obj/item/weapon/card/id/C = new /obj/item/weapon/card/id( src )
+ src.wear_id = C
+ C.assignment = rank
+ C.layer = 20
+ C.registered = src.rname
+ switch(C.assignment)
+ if("Research Assistant")
+ C.access_level = 1
+ C.lab_access = 1
+ C.engine_access = 0
+ C.air_access = 0
+ if("Technical Assistant")
+ C.access_level = 1
+ C.lab_access = 0
+ C.engine_access = 1
+ C.air_access = 0
+ if("Staff Assistant")
+ C.access_level = 2
+ C.lab_access = 0
+ C.engine_access = 0
+ C.air_access = 0
+ if("Medical Assistant")
+ if (!( src.l_hand ))
+ var/obj/item/weapon/storage/firstaid/regular/W = new /obj/item/weapon/storage/firstaid/regular( src )
+ src.l_hand = W
+ W.layer = 20
+ src.UpdateClothing()
+ C.access_level = 1
+ C.lab_access = 1
+ C.engine_access = 0
+ C.air_access = 0
+ if("Engineer")
+ if (!( src.l_hand ))
+ var/obj/item/weapon/storage/toolbox/W = new /obj/item/weapon/storage/toolbox( src )
+ src.l_hand = W
+ W.layer = 20
+ src.UpdateClothing()
+ C.access_level = 2
+ C.lab_access = 1
+ C.engine_access = 3
+ C.air_access = 0
+ if("Research Technician")
+ C.access_level = 2
+ C.lab_access = 3
+ C.engine_access = 0
+ C.air_access = 0
+ if("Forensic Technician")
+ C.access_level = 3
+ C.lab_access = 2
+ C.engine_access = 0
+ C.air_access = 0
+ if("Medical Doctor")
+ if (!( src.l_hand ))
+ var/obj/item/weapon/storage/firstaid/regular/W = new /obj/item/weapon/storage/firstaid/regular( src )
+ src.l_hand = W
+ W.layer = 20
+ src.UpdateClothing()
+ C.access_level = 2
+ C.lab_access = 0
+ C.engine_access = 0
+ C.air_access = 0
+ if("Prison Doctor")
+ if (!( src.l_hand ))
+ var/obj/item/weapon/storage/firstaid/regular/W = new /obj/item/weapon/storage/firstaid/regular( src )
+ src.l_hand = W
+ W.layer = 20
+ src.UpdateClothing()
+ C.access_level = 2
+ C.lab_access = 0
+ C.engine_access = 0
+ C.air_access = 0
+ if("Captain")
+ C.access_level = 5
+ C.air_access = 5
+ C.engine_access = 5
+ C.lab_access = 5
+ if("Security Officer")
+ if (!( src.l_hand ))
+ var/obj/item/weapon/handcuffs/W = new /obj/item/weapon/handcuffs( src )
+ src.l_hand = W
+ W.layer = 20
+ src.UpdateClothing()
+ C.access_level = 3
+ C.lab_access = 0
+ C.engine_access = 0
+ C.air_access = 0
+ if("Prison Security")
+ if (!( src.l_hand ))
+ var/obj/item/weapon/handcuffs/W = new /obj/item/weapon/handcuffs( src )
+ src.l_hand = W
+ W.layer = 20
+ src.UpdateClothing()
+ C.access_level = 3
+ C.lab_access = 0
+ C.engine_access = 0
+ C.air_access = 0
+ if("Medical Researcher")
+ C.access_level = 2
+ C.lab_access = 5
+ C.engine_access = 0
+ C.air_access = 0
+ if("Toxin Researcher")
+ C.access_level = 2
+ C.lab_access = 5
+ C.engine_access = 0
+ C.air_access = 0
+ if("Head of Research")
+ C.access_level = 4
+ C.air_access = 2
+ C.engine_access = 2
+ C.lab_access = 5
+ if("Head of Personnel")
+ C.access_level = 4
+ C.air_access = 2
+ C.engine_access = 2
+ C.lab_access = 4
+ if("Prison Warden")
+ C.access_level = 4
+ C.air_access = 2
+ C.engine_access = 2
+ C.lab_access = 4
+ if("Station Technician")
+ if (!( src.l_hand ))
+ var/obj/item/weapon/storage/toolbox/W = new /obj/item/weapon/storage/toolbox( src )
+ src.l_hand = W
+ W.layer = 20
+ src.UpdateClothing()
+ C.access_level = 2
+ C.lab_access = 0
+ C.engine_access = 2
+ C.air_access = 3
+ if("Atmospheric Technician")
+ C.access_level = 3
+ C.lab_access = 0
+ C.engine_access = 0
+ C.air_access = 4
+ else
+ C.name = text("[]'s ID Card ([]>[]-[]-[])", C.registered, C.access_level, C.lab_access, C.engine_access, C.air_access)
+ src << text("You are the [].", C.assignment)
+ var/obj/S = locate(text("start*[]", C.assignment))
+ if ((istype(S, /obj/start) && istype(S.loc, /turf) && !( ctf )))
+ src << "\blue You have been teleported to your new starting location!"
+ src.loc = S.loc
+ return
diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/weap_sat.dm b/ss13-40.93.2-base/ss13-40.93.2-base/weap_sat.dm
new file mode 100644
index 0000000..d96e58d
--- /dev/null
+++ b/ss13-40.93.2-base/ss13-40.93.2-base/weap_sat.dm
@@ -0,0 +1,349 @@
+
+/obj/machinery/computer/teleporter/New()
+
+ src.id = text("[]", rand(1000, 9999))
+ ..()
+ return
+
+/obj/machinery/computer/teleporter/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ //SN src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(58)
+ src.icon_state = "broken"
+ if(3.0)
+ if (prob(25))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(109)
+ src.icon_state = "broken"
+ else
+ return
+
+/obj/machinery/computer/teleporter/verb/lock_in(freq as num)
+ set src in oview(1)
+ set desc = "Frequency to check"
+
+ var/list/L = list( )
+ for(var/obj/item/weapon/radio/R in world)
+ if (R.freq != freq)
+ continue //goto(26)
+ var/turf/T = src.find_loc(R)
+ if (!( T ))
+ continue //goto(26)
+ var/t1 = text("-[],[],[]", T.x, T.y, T.z)
+ t1 = text("[][]", R.text, t1)
+ L[t1] = R
+ //Foreach goto(26)
+ var/t1 = input("Please select a location to lock in.", "Locking Computer", null, null) in L
+ var/R = L[t1]
+ if ((prob(30) || istype(R, /obj/item/weapon/radio/beacon) && prob(50)))
+ src.locked = src.find_loc(R)
+ else
+ if (L.len)
+ R = L[text("[]", pick(L))]
+ src.locked = src.find_loc(R)
+ else
+ src.locked = null
+ for(var/mob/O in hearers(src, null))
+ O.show_message("\blue Locked In", 2)
+ //Foreach goto(270)
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/computer/teleporter/verb/set_id(t as text)
+ set src in oview(1)
+ set desc = "ID Tag:"
+
+ if (t)
+ src.id = t
+ return
+
+/obj/machinery/computer/teleporter/proc/find_loc(obj/R as obj)
+
+ if (!( R ))
+ return null
+ var/turf/T = R.loc
+ while(!( istype(T, /turf) ))
+ T = T.loc
+ if (istype(T, /area))
+ return null
+ return T
+ return
+
+/obj/machinery/computer/data/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ //SN src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(58)
+ src.icon_state = "broken"
+ if(3.0)
+ if (prob(25))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(109)
+ src.icon_state = "broken"
+ else
+ return
+
+/obj/machinery/computer/data/weapon/log/New()
+
+ ..()
+ src.topics["Super-heater"] = "This turns a can of semi-liquid plasma into a super-heated ball of plasma."
+ src.topics["Amplifier"] = "This increases the intensity of a laser."
+ src.topics["Class 11 Laser"] = "This creates a very slow laser that is capable of penetrating most objects."
+ src.topics["Plasma Energizer"] = "This combines super-heated plasma with a laser beam."
+ src.topics["Generator"] = "This controls the entire power grid."
+ src.topics["Mirror"] = "this can reflect LOW power lasers. HIGH power goes through it!"
+ src.topics["Targetting Prism"] = "This focuses a laser coming from any direction forward."
+ return
+
+/obj/machinery/computer/data/weapon/log/display()
+ set src in oview(1)
+
+ usr << "Research Log:"
+ ..()
+ return
+
+/obj/machinery/computer/data/weapon/info/New()
+
+ ..()
+ src.topics["LOG(001)"] = "System: Deployment successful"
+ src.topics["LOG(002)"] = "System: Safe orbit at inclination .003 established"
+ src.topics["LOG(003)"] = "CenCom: Attempting test fire...ALERT(001)"
+ src.topics["ALERT(001)"] = "System: Cannot attempt test fire"
+ src.topics["LOG(004)"] = "System: Airlock accessed..."
+ src.topics["LOG(005)"] = "System: System successfully reset...Generator engaged"
+ src.topics["LOG(006)"] = "Physical: Super-heater (W005) added to power grid"
+ src.topics["LOG(007)"] = "Physical: Amplifier (W007) added to power grid"
+ src.topics["LOG(008)"] = "Physical: Plasma Energizer (W006) added to power grid"
+ src.topics["LOG(009)"] = "Physical: Laser (W004) added to power grid"
+ src.topics["LOG(010)"] = "Physical: Laser test firing"
+ src.topics["LOG(011)"] = "Physical: Plasma added to Super-heater"
+ src.topics["LOG(012)"] = "Physical: Orient N12.525,E22.124"
+ src.topics["LOG(013)"] = "System: Location N12.525,E22.124"
+ src.topics["LOG(014)"] = "Physical: Test fire...successful"
+ src.topics["LOG(015)"] = "Physical: Airlock accessed..."
+ src.topics["LOG(016)"] = "******: Disable locater systems"
+ src.topics["LOG(017)"] = "System: Locater Beacon-Disengaged,CenCom link-Cut...ALERT(002)"
+ src.topics["ALERT(002)"] = "System: Cannot seem to establish contact with Central Command"
+ src.topics["LOG(018)"] = "******: Shutting down all systems...ALERT(003)"
+ src.topics["ALERT(003)"] = "System: Power grid failure-Activating back-up power...ALERT(004)"
+ src.topics["ALERT(004)"] = "System: Engine failure...All systems deactivated."
+ return
+
+/obj/machinery/computer/data/weapon/info/display()
+ set src in oview(1)
+
+ usr << "Research Information:"
+ ..()
+ return
+
+/obj/machinery/computer/data/verb/display()
+ set src in oview(1)
+
+ for(var/x in src.topics)
+ usr << text("[], \...", x)
+ //Foreach goto(19)
+ usr << ""
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/computer/data/verb/read(topic as text)
+ set src in oview(1)
+
+ if (src.topics[text("[]", topic)])
+ usr << text("[]\n\t []", topic, src.topics[text("[]", topic)])
+ else
+ usr << text("Unable to find- []", topic)
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/teleport/hub/Bumped(M as mob|obj)
+
+ spawn( 0 )
+ if (src.icon_state == "tele1")
+ teleport(M)
+ return
+ return
+
+/obj/machinery/teleport/hub/proc/teleport(atom/movable/M as mob|obj)
+
+ var/atom/l = src.loc
+ var/obj/machinery/computer/teleporter/com = locate(/obj/machinery/computer/teleporter, locate(l.x - 2, l.y, l.z))
+ if (!( com ))
+ return
+ var/atom/target = com.locked
+ if (!( com.locked ))
+ for(var/mob/O in hearers(src, null))
+ O.show_message("\red Failure: Cannot authenticate locked on coordinates. Please reinstantiat coordinate matrix.", 1, "\red Error!", 2)
+ //Foreach goto(80)
+ return
+ var/obj/effects/sparks/O = new /obj/effects/sparks( target )
+ O.dir = pick(1, 2, 4, 8)
+ spawn( 0 )
+ O.Life()
+ return
+ if (istype(M, /atom/movable))
+ if (rand(1, 1000) == 7)
+ M << "\red You see a fainting blue light."
+ M.loc = null
+ else
+ var/tx = target.x + rand(-2.0, 2)
+ var/ty = target.y + rand(-2.0, 2)
+ tx = max(min(tx, world.maxx), 1)
+ ty = max(min(ty, world.maxy), 1)
+ M.loc = locate(tx, ty, target.z)
+ else
+ for(var/mob/B in hearers(src, null))
+ B.show_message("\blue Test fire completed.", 2)
+ //Foreach goto(316)
+ return
+
+/obj/machinery/teleport/station/verb/engage()
+ set src in oview(1)
+
+ var/atom/l = src.loc
+ var/atom/com = locate(/obj/machinery/teleport/hub, locate(l.x + 1, l.y, l.z))
+ if (com)
+ com.icon_state = "tele1"
+ for(var/mob/O in hearers(src, null))
+ O.show_message("\blue Teleporter engaged!", 2)
+ //Foreach goto(70)
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/teleport/station/verb/disengage()
+ set src in oview(1)
+
+ var/atom/l = src.loc
+ var/atom/com = locate(/obj/machinery/teleport/hub, locate(l.x + 1, l.y, l.z))
+ if (com)
+ com.icon_state = "tele0"
+ for(var/mob/O in hearers(src, null))
+ O.show_message("\blue Teleporter disengaged!", 2)
+ //Foreach goto(70)
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/teleport/station/verb/testfire()
+ set src in oview(1)
+
+ var/atom/l = src.loc
+ var/obj/machinery/teleport/hub/com = locate(/obj/machinery/teleport/hub, locate(l.x + 1, l.y, l.z))
+ if (com)
+ for(var/mob/O in hearers(src, null))
+ O.show_message("\blue Test firing!", 2)
+ //Foreach goto(60)
+ com.teleport()
+ src.add_fingerprint(usr)
+ return
+
+/obj/effects/smoke/proc/Life()
+
+ if (src.amount > 1)
+ var/obj/effects/smoke/W = new src.type( src.loc )
+ W.amount = src.amount - 1
+ W.dir = src.dir
+ spawn( 0 )
+ W.Life()
+ return
+ src.amount--
+ if (src.amount <= 0)
+ sleep(50)
+ //SN src = null
+ del(src)
+ return
+ var/turf/T = get_step(src, turn(src.dir, pick(90, 0, 0, -90.0)))
+ if ((T && T.density))
+ src.dir = turn(src.dir, pick(-90.0, 90))
+ else
+ step_to(src, T, null)
+ T = src.loc
+ if (istype(T, /turf))
+ T.firelevel = T.poison
+ spawn( 3 )
+ src.Life()
+ return
+ return
+
+/obj/effects/sparks/proc/Life()
+
+ if (src.amount > 1)
+ var/obj/effects/sparks/W = new src.type( src.loc )
+ W.amount = src.amount - 1
+ W.dir = src.dir
+ spawn( 0 )
+ W.Life()
+ return
+ src.amount--
+ if (src.amount <= 0)
+ sleep(50)
+ //SN src = null
+ del(src)
+ return
+ var/turf/T = get_step(src, turn(src.dir, pick(90, 0, 0, -90.0)))
+ if ((T && T.density))
+ src.dir = turn(src.dir, pick(-90.0, 90))
+ else
+ step_to(src, T, null)
+ T = src.loc
+ if (istype(T, /turf))
+ T.firelevel = T.poison
+ spawn( 3 )
+ src.Life()
+ return
+ return
+
+/obj/effects/sparks/New()
+
+ ..()
+ var/turf/T = src.loc
+ if (istype(T, /turf))
+ T.firelevel = T.poison
+ return
+
+/obj/effects/sparks/Del()
+
+ var/turf/T = src.loc
+ if (istype(T, /turf))
+ T.firelevel = T.poison
+ ..()
+ return
+
+/obj/effects/sparks/Move()
+
+ ..()
+ var/turf/T = src.loc
+ if (istype(T, /turf))
+ T.firelevel = T.poison
+ return
+
+/obj/laser/Bump()
+
+ src.range--
+ return
+
+/obj/laser/Move()
+
+ src.range--
+ return
+
+/atom/proc/laserhit(L as obj)
+
+ return 1
+ return
diff --git a/ss13-40.93.2-base/ss13-40.93.2-base/weapons.dm b/ss13-40.93.2-base/ss13-40.93.2-base/weapons.dm
new file mode 100644
index 0000000..5069a23
--- /dev/null
+++ b/ss13-40.93.2-base/ss13-40.93.2-base/weapons.dm
@@ -0,0 +1,1364 @@
+
+/obj/machinery/nuclearbomb/New()
+
+ if (nuke_code)
+ src.r_code = text("[]", nuke_code)
+ ..()
+ return
+
+/obj/machinery/nuclearbomb/process()
+
+ if (src.timing)
+ src.timeleft--
+ if (src.timeleft <= 0)
+ explode()
+ for(var/mob/M in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(46)
+ return
+
+/obj/machinery/nuclearbomb/attack_paw(mob/user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/nuclearbomb/attack_hand(mob/user as mob)
+
+ if (src.extended)
+ user.machine = src
+ var/dat = text("Nuclear Fission Explosive
\nAuth. Disk: []
", src, (src.auth ? "++++++++++" : "----------"))
+ if (src.auth)
+ if (src.yes_code)
+ dat += text("\nStatus: []-[]
\nTimer: []
\n
\nTimer: [] Toggle
\nTime: - - [] + +
\n
\nSafety: [] Toggle
\nAnchor: [] Toggle
\n", (src.timing ? "Func/Set" : "Functional"), (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src, src, src, src.timeleft, src, src, (src.safety ? "On" : "Off"), src, (src.anchored ? "Engaged" : "Off"), src)
+ else
+ dat += text("\nStatus: Auth. S2-[]
\nTimer: []
\n
\nTimer: [] Toggle
\nTime: - - [] + +
\n
\n[] Safety: Toggle
\nAnchor: [] Toggle
\n", (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src.timeleft, (src.safety ? "On" : "Off"), (src.anchored ? "Engaged" : "Off"))
+ else
+ if (src.timing)
+ dat += text("\nStatus: Set-[]
\nTimer: []
\n
\nTimer: [] Toggle
\nTime: - - [] + +
\n
\nSafety: [] Toggle
\nAnchor: [] Toggle
\n", (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src.timeleft, (src.safety ? "On" : "Off"), (src.anchored ? "Engaged" : "Off"))
+ else
+ dat += text("\nStatus: Auth. S1-[]
\nTimer: []
\n
\nTimer: [] Toggle
\nTime: - - [] + +
\n
\nSafety: [] Toggle
\nAnchor: [] Toggle
\n", (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src.timeleft, (src.safety ? "On" : "Off"), (src.anchored ? "Engaged" : "Off"))
+ var/message = "AUTH"
+ if (src.auth)
+ message = text("[]", src.code)
+ if (src.yes_code)
+ message = "*****"
+ dat += text("
\n>[]
\n1-2-3
\n4-5-6
\n7-8-9
\nR-0-E
\n", message, src, src, src, src, src, src, src, src, src, src, src, src)
+ user << browse(dat, "window=nuclearbomb;size=300x400")
+ else
+ src.anchored = 1
+ flick("nuclearbombc", src)
+ src.icon_state = "nuclearbomb1"
+ src.extended = 1
+ return
+
+/obj/machinery/nuclearbomb/Topic(href, href_list)
+
+ if (usr.stat)
+ return
+ if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey"))))
+ usr << "\red You don't have the dexterity to do this!"
+ return
+ if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf))))
+ usr.machine = src
+ if (href_list["auth"])
+ if (src.auth)
+ src.auth.loc = src.loc
+ src.yes_code = 0
+ src.auth = null
+ else
+ var/obj/item/I = usr.equipped()
+ if (istype(I, /obj/item/weapon/disk/nuclear))
+ usr.drop_item()
+ I.loc = src
+ src.auth = I
+ if (src.auth)
+ if (href_list["type"])
+ if (href_list["type"] == "E")
+ if (src.code == src.r_code)
+ src.yes_code = 1
+ src.code = null
+ else
+ src.code = "ERROR"
+ else
+ if (href_list["type"] == "R")
+ src.yes_code = 0
+ src.code = null
+ else
+ src.code += text("[]", href_list["type"])
+ if (length(src.code) > 5)
+ src.code = "ERROR"
+ if (src.yes_code)
+ if (href_list["time"])
+ var/time = text2num(href_list["time"])
+ src.timeleft += time
+ src.timeleft = min(max(round(src.timeleft), 5), 600)
+ if (href_list["timer"])
+ if (src.timing == -1.0)
+ return
+ src.timing = !( src.timing )
+ if (src.timing)
+ src.icon_state = "nuclearbomb2"
+ else
+ src.icon_state = "nuclearbomb1"
+ if (href_list["safety"])
+ src.safety = !( src.safety )
+ if (href_list["anchor"])
+ src.anchored = !( src.anchored )
+ src.add_fingerprint(usr)
+ for(var/mob/M in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(511)
+ else
+ usr << browse(null, "window=nuclearbomb")
+ return
+ return
+
+/obj/machinery/nuclearbomb/ex_act()
+
+ if (src.timing == -1.0)
+ return
+ else
+ return ..()
+ return
+
+/obj/machinery/nuclearbomb/proc/explode()
+
+ if (src.safety)
+ src.timing = 0
+ return
+ src.timing = -1.0
+ src.yes_code = 0
+ src.icon_state = "nuclearbomb3"
+ sleep(20)
+ var/turf/T = src.loc
+ while(!( istype(T, /turf) ))
+ T = T.loc
+ var/min = 50
+ var/med = 250
+ var/max = 500
+ var/sw = locate(1, 1, T.z)
+ var/ne = locate(world.maxx, world.maxy, T.z)
+ for(var/turf/U in block(sw, ne))
+ var/zone = 4
+ if ((U.y <= T.y + max && U.y >= T.y - max && U.x <= T.x + max && U.x >= T.x - max))
+ zone = 3
+ if ((U.y <= T.y + med && U.y >= T.y - med && U.x <= T.x + med && U.x >= T.x - med))
+ zone = 2
+ if ((U.y <= T.y + min && U.y >= T.y - min && U.x <= T.x + min && U.x >= T.x - min))
+ zone = 1
+ for(var/atom/A as mob|obj|turf|area in U)
+ A.ex_act(zone)
+ //Foreach goto(404)
+ U.ex_act(zone)
+ //Foreach goto(148)
+ ticker.nuclear(src.z)
+ //SN src = null
+ del(src)
+ return
+ return
+
+/obj/item/weapon/infra_sensor/New()
+
+ ..()
+ spawn( 0 )
+ src.process()
+ return
+ return
+
+/obj/item/weapon/infra_sensor/proc/process()
+
+ if (src.passive)
+ for(var/obj/beam/i_beam/I in range(2, src.loc))
+ I.left = 2
+ //Foreach goto(30)
+ spawn( 10 )
+ src.process()
+ return
+ return
+
+/obj/item/weapon/infra_sensor/proc/burst()
+
+ for(var/obj/beam/i_beam/I in range(src.loc, null))
+ I.left = 10
+ //Foreach goto(22)
+ for(var/obj/item/weapon/infra/I in range(src.loc, null))
+ I.visible = 1
+ spawn( 0 )
+ if ((I && I.first))
+ I.first.vis_spread(1)
+ return
+ //Foreach goto(69)
+ for(var/obj/item/weapon/assembly/rad_infra/I in range(src.loc, null))
+ I.part2.visible = 1
+ spawn( 0 )
+ if ((I.part2 && I.part2.first))
+ I.part2.first.vis_spread(1)
+ return
+ //Foreach goto(145)
+ return
+
+/obj/item/weapon/infra_sensor/attack_self(mob/user as mob)
+
+ user.machine = src
+ var/dat = text("Infrared Sensor
\nPassive Emitter: []
\nActive Emitter: Burst Fire\n", (src.passive ? text("On", src) : text("Off", src)), src)
+ user << browse(dat, "window=infra_sensor")
+ return
+
+/obj/item/weapon/infra_sensor/Topic(href, href_list)
+
+ if (usr.stat)
+ return
+ if ((usr.contents.Find(src) || (usr.contents.Find(src.master) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf)))))
+ usr.machine = src
+ if (href_list["passive"])
+ src.passive = !( src.passive )
+ if (href_list["active"])
+ spawn( 0 )
+ src.burst()
+ return
+ if (!( src.master ))
+ if (istype(src.loc, /mob))
+ attack_self(src.loc)
+ else
+ for(var/mob/M in viewers(1, src))
+ if (M.client)
+ src.attack_self(M)
+ //Foreach goto(164)
+ else
+ if (istype(src.master.loc, /mob))
+ src.attack_self(src.master.loc)
+ else
+ for(var/mob/M in viewers(1, src.master))
+ if (M.client)
+ src.attack_self(M)
+ //Foreach goto(240)
+ src.add_fingerprint(usr)
+ else
+ usr << browse(null, "window=infra_sensor")
+ return
+ return
+
+/obj/item/weapon/prox_sensor/dropped()
+
+ spawn( 0 )
+ src.sense()
+ return
+ return
+
+/obj/item/weapon/prox_sensor/proc/sense()
+
+ if (src.state)
+ if (src.master)
+ spawn( 0 )
+ src.master:r_signal(1, src)
+ return
+ else
+ for(var/mob/O in hearers(null, null))
+ O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
+ //Foreach goto(58)
+ return
+
+/obj/item/weapon/prox_sensor/HasProximity(atom/movable/AM as mob|obj)
+
+ if (istype(AM, /obj/beam))
+ return
+ if (AM.move_speed < 12)
+
+ src.sense()
+ return
+
+/obj/item/weapon/prox_sensor/attackby(obj/item/weapon/radio/signaler/S as obj, mob/user as mob)
+
+ if ((!( istype(S, /obj/item/weapon/radio/signaler) ) || !( S.b_stat )))
+ return
+ var/obj/item/weapon/assembly/rad_prox/R = new /obj/item/weapon/assembly/rad_prox( user )
+ S.loc = R
+ R.part1 = S
+ S.layer = initial(S.layer)
+ if (user.client)
+ user.client.screen -= S
+ if (user.r_hand == S)
+ user.u_equip(S)
+ user.r_hand = R
+ else
+ user.u_equip(S)
+ user.l_hand = R
+ S.master = R
+ src.master = R
+ src.layer = initial(src.layer)
+ user.u_equip(src)
+ if (user.client)
+ user.client.screen -= src
+ src.loc = R
+ R.part2 = src
+ R.layer = 20
+ R.loc = user
+ R.dir = src.dir
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/prox_sensor/attack_self(mob/user as mob)
+
+ user.machine = src
+ var/dat = text("Proximity Sensor\nStatus: []
\n[]\n", (src.state ? text("On", src) : text("Off", src)), (src.state ? "\red Time On (30)" : text("Time On (30)", src)))
+ user << browse(dat, "window=prox")
+ return
+
+
+
+
+/obj/item/weapon/prox_sensor/Topic(href, href_list)
+
+ if (usr.stat)
+ return
+ if ((usr.contents.Find(src) || usr.contents.Find(src.master) || get_dist(src, usr) <= 1 && istype(src.loc, /turf)))
+ usr.machine = src
+ if (href_list["state"])
+ src.state = !( src.state )
+ src.icon_state = text("motion[]", src.state)
+ if (src.master)
+ src.master:c_state(src.state, src)
+ if (href_list["time"])
+ spawn( 100 )
+ if (src.state == 0)
+ src.state = !( src.state )
+ src.icon_state = text("motion[]", src.state)
+ if (src.master)
+ src.master:c_state(src.state, src)
+ return
+ if (!( src.master ))
+ if (istype(src.loc, /mob))
+ attack_self(src.loc)
+ else
+ for(var/mob/M in viewers(1, src))
+ if (M.client)
+ src.attack_self(M)
+ //Foreach goto(234)
+ else
+ if (istype(src.master.loc, /mob))
+ src.attack_self(src.master.loc)
+ else
+ for(var/mob/M in viewers(1, src.master))
+ if (M.client)
+ src.attack_self(M)
+ //Foreach goto(310)
+ else
+ usr << browse(null, "window=prox")
+ return
+ return
+
+/obj/item/weapon/prox_sensor/attack_paw(mob/user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/item/weapon/prox_sensor/Move()
+
+ ..()
+ src.sense()
+ return
+
+/obj/item/weapon/infra/proc/hit()
+
+ if (src.master)
+ spawn( 0 )
+ src.master:r_signal(1, src)
+ return
+ else
+ for(var/mob/O in hearers(null, null))
+ O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
+ //Foreach goto(51)
+ return
+
+/obj/item/weapon/infra/proc/process()
+
+
+ if ((!( src.first ) && (src.state && (istype(src.loc, /turf) || (src.master && istype(src.master.loc, /turf))))))
+
+ var/obj/beam/i_beam/I = new /obj/beam/i_beam( (src.master ? src.master.loc : src.loc) )
+ I.master = src
+ I.density = 1
+ I.dir = src.dir
+ step(I, I.dir)
+ if (I)
+ I.density = 0
+ src.first = I
+ I.vis_spread(src.visible)
+ spawn( 0 )
+ if (I)
+ I.limit = 20
+ I.process()
+ return
+ if (!( src.state ))
+ //src.first = null
+ del(src.first)
+ spawn( 10 )
+ src.process()
+ return
+ return
+
+/obj/item/weapon/infra/attackby(obj/item/weapon/radio/signaler/S as obj, mob/user as mob)
+
+ if ((!( istype(S, /obj/item/weapon/radio/signaler) ) || !( S.b_stat )))
+ return
+ var/obj/item/weapon/assembly/rad_infra/R = new /obj/item/weapon/assembly/rad_infra( user )
+ S.loc = R
+ R.part1 = S
+ S.layer = initial(S.layer)
+ if (user.client)
+ user.client.screen -= S
+ if (user.r_hand == S)
+ user.u_equip(S)
+ user.r_hand = R
+ else
+ user.u_equip(S)
+ user.l_hand = R
+ S.master = R
+ src.master = R
+ src.layer = initial(src.layer)
+ user.u_equip(src)
+ if (user.client)
+ user.client.screen -= src
+ src.loc = R
+ R.part2 = src
+ R.layer = 20
+ R.loc = user
+ R.dir = src.dir
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/infra/New()
+
+ spawn( 0 )
+ src.process()
+ return
+ ..()
+ return
+
+/obj/item/weapon/infra/attack_self(mob/user as mob)
+
+ user.machine = src
+ var/dat = text("Infrared Laser\nStatus: []
\nVisibility: []
\n", (src.state ? text("On", src) : text("Off", src)), (src.visible ? text("Visible", src) : text("Invisible", src)))
+ user << browse(dat, "window=infra")
+ return
+
+/obj/item/weapon/infra/Topic(href, href_list)
+
+ if (usr.stat)
+ return
+ if ((usr.contents.Find(src) || usr.contents.Find(src.master) || get_dist(src, usr) <= 1 && istype(src.loc, /turf)))
+ usr.machine = src
+ if (href_list["state"])
+ src.state = !( src.state )
+ src.icon_state = text("infrared[]", src.state)
+ if (src.master)
+ src.master:c_state(src.state, src)
+ if (href_list["visible"])
+ src.visible = !( src.visible )
+ spawn( 0 )
+ if (src.first)
+ src.first.vis_spread(src.visible)
+ return
+ if (!( src.master ))
+ if (istype(src.loc, /mob))
+ attack_self(src.loc)
+ else
+ for(var/mob/M in viewers(1, src))
+ if (M.client)
+ src.attack_self(M)
+ //Foreach goto(211)
+ else
+ if (istype(src.master.loc, /mob))
+ src.attack_self(src.master.loc)
+ else
+ for(var/mob/M in viewers(1, src.master))
+ if (M.client)
+ src.attack_self(M)
+ //Foreach goto(287)
+ else
+ usr << browse(null, "window=infra")
+ return
+ return
+
+/obj/item/weapon/infra/attack_paw(mob/user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/item/weapon/infra/attack_hand()
+
+ //src.first = null
+ del(src.first)
+ ..()
+ return
+
+/obj/item/weapon/infra/Move()
+
+ var/t = src.dir
+ ..()
+ src.dir = t
+ //src.first = null
+ del(src.first)
+ return
+
+/obj/item/weapon/infra/verb/rotate()
+ set src in usr
+
+ src.dir = turn(src.dir, 90)
+ return
+
+/obj/item/weapon/timer/proc/time()
+
+ if (src.master)
+ spawn( 0 )
+ src.master:r_signal(1, src)
+ return
+ else
+ for(var/mob/O in hearers(null, null))
+ O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
+ //Foreach goto(51)
+ return
+
+
+/obj/item/weapon/timer/proc/process()
+
+ if (src.timing)
+ if (src.time > 0)
+ src.time = round(src.time) - 1
+ else
+ time()
+ src.time = 0
+ src.timing = 0
+ if (!( src.master ))
+ if (istype(src.loc, /mob))
+ attack_self(src.loc)
+ else
+ for(var/mob/M in viewers(1, src))
+ if (M.client)
+ src.attack_self(M)
+ //Foreach goto(100)
+ else
+ if (istype(src.master.loc, /mob))
+ src.attack_self(src.master.loc)
+ else
+ for(var/mob/M in viewers(1, src.master))
+ if (M.client)
+ src.attack_self(M)
+ //Foreach goto(176)
+ spawn( 10 )
+ src.process()
+ return
+ return
+
+/obj/item/weapon/timer/attackby(obj/item/weapon/radio/signaler/S as obj, mob/user as mob)
+
+
+ if ((!( istype(S, /obj/item/weapon/radio/signaler) ) || !( S.b_stat )))
+ return
+ var/obj/item/weapon/assembly/rad_time/R = new /obj/item/weapon/assembly/rad_time( user )
+ S.loc = R
+ R.part1 = S
+ S.layer = initial(S.layer)
+ if (user.client)
+ user.client.screen -= S
+ if (user.r_hand == S)
+ user.u_equip(S)
+ user.r_hand = R
+ else
+ user.u_equip(S)
+ user.l_hand = R
+ S.master = R
+ src.master = R
+ src.layer = initial(src.layer)
+ user.u_equip(src)
+ if (user.client)
+ user.client.screen -= src
+ src.loc = R
+ R.part2 = src
+ R.layer = 20
+ R.loc = user
+ R.dir = src.dir
+ src.add_fingerprint(user)
+ R.add_fingerprint(user)
+ return
+
+/obj/item/weapon/timer/New()
+
+ spawn( 0 )
+ src.process()
+ return
+ ..()
+ return
+
+/obj/item/weapon/timer/attack_self(mob/user as mob)
+
+ user.machine = src
+ var/second = src.time % 60
+ var/minute = (src.time - second) / 60
+ var/dat = text("Timing Unit\n[] []:[]\n- - + +\n", (src.timing ? text("Timing", src) : text("Not Timing", src)), minute, second, src, src, src, src)
+ user << browse(dat, "window=timer")
+ return
+
+/obj/item/weapon/timer/Topic(href, href_list)
+
+ if (usr.stat)
+ return
+ if ((usr.contents.Find(src) || usr.contents.Find(src.master) || get_dist(src, usr) <= 1 && istype(src.loc, /turf)))
+ usr.machine = src
+ if (href_list["time"])
+ src.timing = text2num(href_list["time"])
+
+ if (href_list["tp"])
+ var/tp = text2num(href_list["tp"])
+ src.time += tp
+ src.time = min(max(round(src.time), 0), 600)
+ if (!( src.master ))
+ if (istype(src.loc, /mob))
+ attack_self(src.loc)
+ else
+ for(var/mob/M in viewers(1, src))
+ if (M.client)
+ src.attack_self(M)
+ //Foreach goto(192)
+ else
+ if (istype(src.master.loc, /mob))
+ src.attack_self(src.master.loc)
+ else
+ for(var/mob/M in viewers(1, src.master))
+ if (M.client)
+ src.attack_self(M)
+ //Foreach goto(268)
+ src.add_fingerprint(usr)
+ else
+ usr << browse(null, "window=timer")
+ return
+ return
+
+/obj/item/weapon/assembly/proc/r_signal(signal)
+
+ return
+
+/obj/item/weapon/assembly/proc/c_state(n, O as obj)
+
+ return
+
+/obj/item/weapon/assembly/shock_kit/Del()
+
+ //src.part1 = null
+ del(src.part1)
+ //src.part2 = null
+ del(src.part2)
+ ..()
+ return
+
+/obj/item/weapon/assembly/shock_kit/attackby(obj/item/weapon/W as obj, mob/user as mob)
+
+ if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
+ var/turf/T = src.loc
+ if (ismob(T))
+ T = T.loc
+ src.part1.loc = T
+ src.part2.loc = T
+ src.part1.master = null
+ src.part2.master = null
+ src.part1 = null
+ src.part2 = null
+ //SN src = null
+ del(src)
+ return
+ if (!( istype(W, /obj/item/weapon/screwdriver) ))
+ return
+ src.status = !( src.status )
+ if (src.status)
+ user.show_message("\blue The shock pack is now secured!", 1)
+ else
+ user.show_message("\blue The shock pack is now unsecured!", 1)
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/shock_kit/attack_self(mob/user as mob)
+
+ src.part1.attack_self(user, src.status)
+ src.part2.attack_self(user, src.status)
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/shock_kit/r_signal(n, source)
+
+ if (istype(src.loc, /obj/stool/chair/e_chair))
+ var/obj/stool/chair/e_chair/C = src.loc
+ C.shock()
+ return
+
+
+/obj/item/weapon/assembly/rad_time/Del()
+
+ //src.part1 = null
+ del(src.part1)
+ //src.part2 = null
+ del(src.part2)
+ ..()
+ return
+
+/obj/item/weapon/assembly/rad_time/attackby(obj/item/weapon/W as obj, mob/user as mob)
+
+ if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
+ var/turf/T = src.loc
+ if (ismob(T))
+ T = T.loc
+ src.part1.loc = T
+ src.part2.loc = T
+ src.part1.master = null
+ src.part2.master = null
+ src.part1 = null
+ src.part2 = null
+ //SN src = null
+ del(src)
+ return
+ if (!( istype(W, /obj/item/weapon/screwdriver) ))
+ return
+ src.status = !( src.status )
+ if (src.status)
+ user.show_message("\blue The signaler is now secured!", 1)
+ else
+ user.show_message("\blue The signaler is now unsecured!", 1)
+ src.part1.b_stat = !( src.status )
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/rad_time/attack_self(mob/user as mob)
+
+ src.part1.attack_self(user, src.status)
+ src.part2.attack_self(user, src.status)
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/rad_time/r_signal(n, source)
+
+ if (source == src.part2)
+ src.part1.s_signal(1)
+ return
+
+/obj/item/weapon/assembly/rad_prox/c_state(n)
+
+ src.icon_state = text("motion[]", n)
+ return
+
+/obj/item/weapon/assembly/rad_prox/Del()
+
+ //src.part1 = null
+ del(src.part1)
+ //src.part2 = null
+ del(src.part2)
+ ..()
+ return
+
+/obj/item/weapon/assembly/rad_prox/HasProximity(atom/movable/AM as mob|obj)
+
+ if (istype(AM, /obj/beam))
+ return
+ if (AM.move_speed < 12)
+ src.part2.sense()
+ return
+
+/obj/item/weapon/assembly/rad_prox/attackby(obj/item/weapon/W as obj, mob/user as mob)
+
+ if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
+ var/turf/T = src.loc
+ if (ismob(T))
+ T = T.loc
+ src.part1.loc = T
+ src.part2.loc = T
+ src.part1.master = null
+ src.part2.master = null
+ src.part1 = null
+ src.part2 = null
+ //SN src = null
+ del(src)
+ return
+ if (!( istype(W, /obj/item/weapon/screwdriver) ))
+ return
+ src.status = !( src.status )
+ if (src.status)
+ user.show_message("\blue The proximity sensor is now secured!", 1)
+ else
+ user.show_message("\blue The proximity sensor is now unsecured!", 1)
+ src.part1.b_stat = !( src.status )
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/rad_prox/attack_self(mob/user as mob)
+
+ src.part1.attack_self(user, src.status)
+ src.part2.attack_self(user, src.status)
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/rad_prox/r_signal(n, source)
+
+ if (source == src.part2)
+ src.part1.s_signal(1)
+ return
+
+/obj/item/weapon/assembly/rad_prox/Move()
+
+ ..()
+ src.part2.sense()
+ return
+
+/obj/item/weapon/assembly/rad_prox/attack_paw(mob/user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/item/weapon/assembly/rad_prox/dropped()
+
+ spawn( 0 )
+ src.part2.sense()
+ return
+ return
+
+/obj/item/weapon/assembly/rad_infra/c_state(n)
+
+ src.icon_state = text("infrared[]", n)
+ return
+
+/obj/item/weapon/assembly/rad_infra/Del()
+
+ //src.part1 = null
+ del(src.part1)
+ //src.part2 = null
+ del(src.part2)
+ ..()
+ return
+
+/obj/item/weapon/assembly/rad_infra/attackby(obj/item/weapon/W as obj, mob/user as mob)
+
+ if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
+ var/turf/T = src.loc
+ if (ismob(T))
+ T = T.loc
+ src.part1.loc = T
+ src.part2.loc = T
+ src.part1.master = null
+ src.part2.master = null
+ src.part1 = null
+ src.part2 = null
+ //SN src = null
+ del(src)
+ return
+ if (!( istype(W, /obj/item/weapon/screwdriver) ))
+ return
+ src.status = !( src.status )
+ if (src.status)
+ user.show_message("\blue The infrared laser is now secured!", 1)
+ else
+ user.show_message("\blue The infrared laser is now unsecured!", 1)
+ src.part1.b_stat = !( src.status )
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/rad_infra/attack_self(mob/user as mob)
+
+ src.part1.attack_self(user, src.status)
+ src.part2.attack_self(user, src.status)
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/rad_infra/r_signal(n, source)
+
+ if (source == src.part2)
+ src.part1.s_signal(1)
+ return
+
+/obj/item/weapon/assembly/rad_infra/verb/rotate()
+ set src in usr
+
+ src.dir = turn(src.dir, 90)
+ src.part2.dir = src.dir
+ src.add_fingerprint(usr)
+ return
+
+/obj/item/weapon/assembly/rad_infra/Move()
+
+ var/t = src.dir
+ ..()
+ src.dir = t
+ //src.part2.first = null
+ del(src.part2.first)
+ return
+
+/obj/item/weapon/assembly/rad_infra/attack_paw(mob/user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/item/weapon/assembly/rad_infra/attack_hand(M)
+
+ //src.part2.first = null
+ del(src.part2.first)
+ ..()
+ return
+
+/obj/item/weapon/assembly/prox_ignite/HasProximity(atom/movable/AM as mob|obj)
+
+ if (istype(AM, /obj/beam))
+ return
+ if (AM.move_speed < 12)
+ src.part1.sense()
+ return
+
+/obj/item/weapon/assembly/prox_ignite/dropped()
+
+ spawn( 0 )
+ src.part1.sense()
+ return
+ return
+
+/obj/item/weapon/assembly/prox_ignite/Del()
+
+ //src.part1 = null
+ del(src.part1)
+ //src.part2 = null
+ del(src.part2)
+ ..()
+ return
+
+/obj/item/weapon/assembly/prox_ignite/c_state(n)
+
+ src.icon_state = text("prox_igniter[]", n)
+ return
+
+/obj/item/weapon/assembly/prox_ignite/attackby(obj/item/weapon/W as obj, mob/user as mob)
+
+ if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
+ var/turf/T = src.loc
+ if (ismob(T))
+ T = T.loc
+ src.part1.loc = T
+ src.part2.loc = T
+ src.part1.master = null
+ src.part2.master = null
+ src.part1 = null
+ src.part2 = null
+ //SN src = null
+ del(src)
+ return
+ if (!( istype(W, /obj/item/weapon/screwdriver) ))
+ return
+ src.status = !( src.status )
+ if (src.status)
+ user.show_message("\blue The proximity sensor is now secured! The igniter now works!", 1)
+ else
+ user.show_message("\blue The proximity sensor is now unsecured! The igniter will not work.", 1)
+ src.part2.status = src.status
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/prox_ignite/attack_self(mob/user as mob)
+
+ src.part1.attack_self(user, src.status)
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/prox_ignite/r_signal()
+
+ for(var/mob/O in hearers(1, src.loc))
+ O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
+ //Foreach goto(20)
+ src.part2.ignite()
+ return
+
+/obj/item/weapon/assembly/rad_ignite/Del()
+
+ //src.part1 = null
+ del(src.part1)
+ //src.part2 = null
+ del(src.part2)
+ ..()
+ return
+
+/obj/item/weapon/assembly/rad_ignite/attackby(obj/item/weapon/W as obj, mob/user as mob)
+
+ if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
+ var/turf/T = src.loc
+ if (ismob(T))
+ T = T.loc
+ src.part1.loc = T
+ src.part2.loc = T
+ src.part1.master = null
+ src.part2.master = null
+ src.part1 = null
+ src.part2 = null
+ //SN src = null
+ del(src)
+ return
+ if (!( istype(W, /obj/item/weapon/screwdriver) ))
+ return
+ src.status = !( src.status )
+ if (src.status)
+ user.show_message("\blue The radio is now secured! The igniter now works!", 1)
+ else
+ user.show_message("\blue The radio is now unsecured! The igniter will not work.", 1)
+ src.part2.status = src.status
+ src.part1.b_stat = !( src.status )
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/rad_ignite/attack_self(mob/user as mob)
+
+ src.part1.attack_self(user, src.status)
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/rad_ignite/r_signal()
+
+ for(var/mob/O in hearers(1, src.loc))
+ O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
+ //Foreach goto(20)
+ src.part2.ignite()
+ return
+
+/obj/item/weapon/assembly/m_i_ptank/c_state(n)
+
+ src.icon_state = text("m_i_ptank[]", n)
+ return
+
+/obj/item/weapon/assembly/m_i_ptank/HasProximity(atom/movable/AM as mob|obj)
+
+ if (istype(AM, /obj/beam))
+ return
+ if (AM.move_speed < 12)
+ src.part1.sense()
+ return
+
+
+/obj/item/weapon/assembly/m_i_ptank/dropped()
+
+ spawn( 0 )
+ src.part1.sense()
+ return
+ return
+
+/obj/item/weapon/assembly/m_i_ptank/Del()
+
+ //src.part1 = null
+ del(src.part1)
+ //src.part2 = null
+ del(src.part2)
+ //src.part3 = null
+ del(src.part3)
+ ..()
+ return
+
+/obj/item/weapon/assembly/m_i_ptank/attackby(obj/item/weapon/W as obj, mob/user as mob)
+
+ if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
+ var/obj/item/weapon/assembly/prox_ignite/R = new /obj/item/weapon/assembly/prox_ignite( )
+ R.part1 = src.part1
+ R.part2 = src.part2
+ R.loc = src.loc
+ if (user.r_hand == src)
+ user.r_hand = R
+ R.layer = 20
+ else
+ if (user.l_hand == src)
+ user.l_hand = R
+ R.layer = 20
+ src.part1.loc = R
+ src.part2.loc = R
+ src.part1.master = R
+ src.part2.master = R
+ var/turf/T = src.loc
+ if (!( istype(T, /turf) ))
+ T = T.loc
+ if (!( istype(T, /turf) ))
+ T = T.loc
+ src.part3.loc = T
+ src.part1 = null
+ src.part2 = null
+ src.part3 = null
+ //SN src = null
+ del(src)
+ return
+ if (!( istype(W, /obj/item/weapon/weldingtool) ))
+ return
+ if (!( src.status ))
+ src.status = 1
+ bombers -= user.ckey
+ bombers += user.ckey
+ user.show_message("\blue A pressure hole has been bored to the plasma tank valve. The plasma tank can now be ignited.", 1)
+ else
+ src.status = 0
+ user << "\blue The hole has been closed."
+ src.part2.status = src.status
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/m_i_ptank/attack_self(mob/user as mob)
+
+ src.part1.attack_self(user, 1)
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/m_i_ptank/r_signal()
+ for(var/mob/O in hearers(1, null))
+ O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
+ //Foreach goto(19)
+
+ if ((src.status && prob(90)))
+ src.part3.ignite()
+ return
+
+/obj/item/weapon/assembly/r_i_ptank/Del()
+
+ //src.part1 = null
+ del(src.part1)
+ //src.part2 = null
+ del(src.part2)
+ //src.part3 = null
+ del(src.part3)
+ ..()
+ return
+
+/obj/item/weapon/assembly/r_i_ptank/attackby(obj/item/weapon/W as obj, mob/user as mob)
+
+ if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
+ var/obj/item/weapon/assembly/rad_ignite/R = new /obj/item/weapon/assembly/rad_ignite( )
+ R.part1 = src.part1
+ R.part2 = src.part2
+ R.loc = src.loc
+ if (user.r_hand == src)
+ user.r_hand = R
+ R.layer = 20
+ else
+ if (user.l_hand == src)
+ user.l_hand = R
+ R.layer = 20
+ src.part1.loc = R
+ src.part2.loc = R
+ src.part1.master = R
+ src.part2.master = R
+ var/turf/T = src.loc
+ if (!( istype(T, /turf) ))
+ T = T.loc
+ if (!( istype(T, /turf) ))
+ T = T.loc
+ src.part3.loc = T
+ src.part1 = null
+ src.part2 = null
+ src.part3 = null
+ //SN src = null
+ del(src)
+ return
+ if (!( istype(W, /obj/item/weapon/weldingtool) ))
+ return
+ if (!( src.status ))
+ src.status = 1
+ bombers -= user.ckey
+ bombers += user.ckey
+ user.show_message("\blue A pressure hole has been bored to the plasma tank valve. The plasma tank can now be ignited.", 1)
+ else
+ src.status = 0
+ user << "\blue The hole has been closed."
+ src.part2.status = src.status
+ src.part1.b_stat = !( src.status )
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/r_i_ptank/attack_self(mob/user as mob)
+
+ if (src.part1)
+ src.part1.attack_self(user, 1)
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/r_i_ptank/r_signal()
+ for(var/mob/O in hearers(1, null))
+ O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
+ //Foreach goto(19)
+ if ((src.status && prob(90)))
+ src.part3.ignite()
+ return
+
+/obj/bullet/Bump(atom/A as mob|obj|turf|area)
+
+ spawn( 0 )
+ A.las_act("bullet", src)
+ //SN src = null
+ del(src)
+ return
+ return
+ return
+
+/obj/bullet/CheckPass(B as obj)
+
+ if (istype(B, /obj/bullet))
+ return prob(95)
+ else
+ return 1
+ return
+
+/obj/bullet/proc/process()
+
+ if ((!( src.current ) || src.loc == src.current))
+ src.current = locate(min(max(src.x + src.xo, 1), world.maxx), min(max(src.y + src.yo, 1), world.maxy), src.z)
+ if ((src.x == 1 || src.x == world.maxx || src.y == 1 || src.y == world.maxy))
+ //SN src = null
+ del(src)
+ return
+ step_towards(src, src.current)
+ spawn( 1 )
+ process()
+ return
+ return
+
+/obj/beam/a_laser/Bump(atom/A as mob|obj|turf|area)
+
+ spawn( 0 )
+ A.las_act(null, src)
+ //SN src = null
+ del(src)
+ return
+ return
+ return
+
+/obj/beam/a_laser/proc/process()
+
+ if ((!( src.current ) || src.loc == src.current))
+ src.current = locate(min(max(src.x + src.xo, 1), world.maxx), min(max(src.y + src.yo, 1), world.maxy), src.z)
+ if ((src.x == 1 || src.x == world.maxx || src.y == 1 || src.y == world.maxy))
+ //SN src = null
+ del(src)
+ return
+ step_towards(src, src.current)
+ src.life--
+ if (src.life <= 0)
+ //SN src = null
+ del(src)
+ return
+ spawn( 1 )
+ src.process()
+ return
+ return
+
+/obj/beam/a_laser/s_laser/Bump(atom/A as mob|obj|turf|area)
+
+ spawn( 0 )
+ A.las_act(1)
+ //SN src = null
+ del(src)
+ return
+ return
+ return
+
+/obj/beam/i_beam/proc/hit()
+
+ if (src.master)
+ src.master.hit()
+ //SN src = null
+ del(src)
+ return
+ return
+
+/obj/beam/i_beam/proc/vis_spread(v)
+ src.visible = v
+ spawn( 0 )
+ if (src.next)
+ src.next.vis_spread(v)
+ return
+ return
+
+/obj/beam/i_beam/proc/process()
+
+ if ((src.loc.density || !( src.master )))
+ //SN src = null
+ del(src)
+ return
+
+ if (src.left > 0)
+ src.left--
+ if (src.left < 1)
+ if (!( src.visible ))
+ src.invisibility = 100
+ else
+ src.invisibility = 0
+ else
+ src.invisibility = 0
+
+ var/obj/beam/i_beam/I = new /obj/beam/i_beam( src.loc )
+ I.master = src.master
+ I.density = 1
+ I.dir = src.dir
+ step(I, I.dir)
+
+ if (I)
+ if (!( src.next ))
+ I.density = 0
+ I.vis_spread(src.visible)
+ src.next = I
+ spawn( 0 )
+ if ((I && src.limit > 0))
+ I.limit = src.limit - 1
+ I.process()
+ return
+ else
+ //I = null
+ del(I)
+ else
+ //src.next = null
+ del(src.next)
+ spawn( 10 )
+ src.process()
+ return
+ return
+
+/obj/beam/i_beam/Bump()
+
+ //SN src = null
+
+ del(src)
+ return
+
+/obj/beam/i_beam/Bumped()
+
+ src.hit()
+ return
+
+/obj/beam/i_beam/HasEntered(atom/movable/AM as mob|obj)
+
+ if (istype(AM, /obj/beam))
+ return
+ spawn( 0 )
+ src.hit()
+ return
+ return
+
+/obj/beam/i_beam/Del()
+
+ //src.next = null
+ del(src.next)
+ ..()
+ return
+
+/atom/proc/ex_act()
+
+ return
+
+/atom/proc/las_act()
+
+ return
+
+/turf/Entered(atom/A as mob|obj)
+
+ ..()
+ if ((A && A.density && !( istype(A, /obj/beam) )))
+ for(var/obj/beam/i_beam/I in src)
+ spawn( 0 )
+ if (I)
+ I.hit()
+ return
+ //Foreach goto(44)
+ return
diff --git a/ss13-40.93.2-decomp/README.md b/ss13-40.93.2-decomp/README.md
new file mode 100644
index 0000000..e691ab6
--- /dev/null
+++ b/ss13-40.93.2-decomp/README.md
@@ -0,0 +1 @@
+The raw output of Hobnob's decompiler. This is as close as you can get to the original source of the 40.93.2 version that was played from 2006-2008.
\ No newline at end of file
diff --git a/ss13-40.93.2-decomp/spacestation13/Cryogenic2.dmi b/ss13-40.93.2-decomp/spacestation13/Cryogenic2.dmi
new file mode 100644
index 0000000..2ead3b6
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/Cryogenic2.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/Door1.dmi b/ss13-40.93.2-decomp/spacestation13/Door1.dmi
new file mode 100644
index 0000000..13206c3
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/Door1.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/Doorf.dmi b/ss13-40.93.2-decomp/spacestation13/Doorf.dmi
new file mode 100644
index 0000000..7a5442d
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/Doorf.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/Icons.dmi b/ss13-40.93.2-decomp/spacestation13/Icons.dmi
new file mode 100644
index 0000000..9ff68ed
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/Icons.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/Test.dm b/ss13-40.93.2-decomp/spacestation13/Test.dm
new file mode 100644
index 0000000..cb4869c
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/Test.dm
@@ -0,0 +1,23 @@
+
+/proc/dd_run_tests()
+
+ var/test_classes = typesof(/obj/test)
+ for(var/class in test_classes)
+ varclass/tester = new class( )
+ for(var/test in tester.verbs)
+ call(tester, test)()
+ if (!( tester.success ))
+ else
+ //Foreach continue //goto(59)
+ if (!( tester.success ))
+ world << "Test failed."
+ return
+ //Foreach goto(26)
+ world << "All tests passed."
+ return
+
+/obj/test/proc/die(message)
+
+ src.success = 0
+ CRASH(message)
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/TextHandling.dm b/ss13-40.93.2-decomp/spacestation13/TextHandling.dm
new file mode 100644
index 0000000..713728b
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/TextHandling.dm
@@ -0,0 +1,139 @@
+
+/proc/dd_file2list(file_path, separator)
+
+ if (separator == null)
+ separator = "\n"
+ if (isfile(file_path))
+ var/file = file_path
+ else
+ file = new /file( file_path )
+ return dd_text2list(file2text(file), separator)
+ return
+
+/proc/dd_replacetext(text, search_string, replacement_string)
+
+ var/textList = dd_text2list(text, search_string)
+ return dd_list2text(textList, replacement_string)
+ return
+
+/proc/dd_replaceText(text, search_string, replacement_string)
+
+ var/textList = dd_text2List(text, search_string)
+ return dd_list2text(textList, replacement_string)
+ return
+
+/proc/dd_hasprefix(text, prefix)
+
+ var/start = 1
+ var/end = length(prefix) + 1
+ return findtext(text, prefix, start, end)
+ return
+
+/proc/dd_hasPrefix(text, prefix)
+
+ var/start = 1
+ var/end = length(prefix) + 1
+ return findText(text, prefix, start, end)
+ return
+
+/proc/dd_hassuffix(text, suffix)
+
+ var/start = length(text) - length(suffix)
+ if (start)
+ return findtext(text, suffix, start, null)
+ return
+
+/proc/dd_hasSuffix(text, suffix)
+
+ var/start = length(text) - length(suffix)
+ if (start)
+ return findText(text, suffix, start, null)
+ return
+
+/proc/dd_text2list(text, separator)
+
+ var/textlength = length(text)
+ var/separatorlength = length(separator)
+ var/textList = new (List:0)( )
+ var/searchPosition = 1
+ var/findPosition = 1
+ while(1)
+ findPosition = findtext(text, separator, searchPosition, 0)
+ var/buggyText = copytext(text, searchPosition, findPosition)
+ textList += text("[]", buggyText)
+ searchPosition = findPosition + separatorlength
+ if (findPosition == 0)
+ return textList
+ else
+ if (searchPosition > textlength)
+ textList += ""
+ return textList
+ return
+
+/proc/dd_text2List(text, separator)
+
+ var/textlength = length(text)
+ var/separatorlength = length(separator)
+ var/textList = new (List:0)( )
+ var/searchPosition = 1
+ var/findPosition = 1
+ while(1)
+ findPosition = findText(text, separator, searchPosition, 0)
+ var/buggyText = copytext(text, searchPosition, findPosition)
+ textList += text("[]", buggyText)
+ searchPosition = findPosition + separatorlength
+ if (findPosition == 0)
+ return textList
+ else
+ if (searchPosition > textlength)
+ textList += ""
+ return textList
+ return
+
+/proc/dd_list2text(the_list, separator)
+
+ var/total = the_list.len
+ if (total == 0)
+ return
+ var/newText = text("[]", the_list[1])
+ var/count = 2
+ while(count <= total)
+ if (separator)
+ newText += separator
+ newText += text("[]", the_list[count])
+ count++
+ return newText
+ return
+
+/proc/dd_centertext(message, length)
+
+ var/new_message = message
+ var/size = length(message)
+ if (size == length)
+ return new_message
+ if (size > length)
+ return copytext(new_message, 1, length + 1)
+ var/delta = length - size
+ if (delta == 1)
+ return new_message + " "
+ if (delta % 2)
+ new_message = " " + new_message
+ delta--
+ delta = delta / 2
+ var/spaces = ""
+ var/count = null
+ count = 1
+ while(count <= delta)
+ spaces += " "
+ count++
+ return (spaces + new_message) + spaces
+ return
+
+/proc/dd_limittext(message, length)
+
+ var/size = length(message)
+ if (size <= length)
+ return message
+ else
+ return copytext(message, 1, length + 1)
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/aaaDefines.dm b/ss13-40.93.2-decomp/spacestation13/aaaDefines.dm
new file mode 100644
index 0000000..f713a90
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/aaaDefines.dm
@@ -0,0 +1,77 @@
+
+/proc/add_zero(t, u)
+
+ while(length(t) < u)
+ t = text("0[]", t)
+ return t
+ return
+
+/obj/bomb/New()
+
+ ..()
+ var/obj/item/weapon/assembly/r_i_ptank/R = new /obj/item/weapon/assembly/r_i_ptank( src.loc )
+ var/obj/item/weapon/tank/plasmatank/p3 = new /obj/item/weapon/tank/plasmatank( R )
+ var/obj/item/weapon/radio/signaler/p1 = new /obj/item/weapon/radio/signaler( R )
+ var/obj/item/weapon/igniter/p2 = new /obj/item/weapon/igniter( R )
+ R.part1 = p1
+ R.part2 = p2
+ R.part3 = p3
+ p1.master = R
+ p2.master = R
+ p3.master = R
+ R.status = 1
+ p1.b_stat = 0
+ p2.status = 1
+ src = null
+ del(src)
+ return
+ return
+
+/obj/proc/throwing(t_dir, rs)
+
+ if (src.throwspeed <= 1)
+ src.throwing = 0
+ src.throwspeed--
+ if (rs == 0)
+ rs = 1
+ if (src.throwing)
+ if (rs == 1)
+ step(src, t_dir)
+ sleep(1)
+ spawn( 0 )
+ src.throwing(t_dir, rs)
+ return
+ else
+ if (rs > 1)
+ var/t = null
+ while(t < rs)
+ step(src, t_dir)
+ t++
+ sleep(10)
+ spawn( 0 )
+ src.throwing(t_dir, rs)
+ return
+ else
+ step(src, t_dir)
+ sleep(10 / rs)
+ spawn( 0 )
+ src.throwing(t_dir, rs)
+ return
+ else
+ src.density = 0
+ return
+
+/atom/proc/burn(fi_amount)
+
+ return
+
+/atom/movable/Move()
+
+ var/A = src.loc
+ . = ..()
+ src.move_speed = world.time - src.l_move_time
+ src.l_move_time = world.time
+ src.m_flag = 1
+ if ((A != src.loc && (A && A.z == src.z)))
+ src.last_move = get_dir(A, src.loc)
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/aircontrol.dmi b/ss13-40.93.2-decomp/spacestation13/aircontrol.dmi
new file mode 100644
index 0000000..11bea3f
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/aircontrol.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/airtunnel.dm b/ss13-40.93.2-decomp/spacestation13/airtunnel.dm
new file mode 100644
index 0000000..35a359c
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/airtunnel.dm
@@ -0,0 +1,659 @@
+
+/obj/move/airtunnel/process()
+
+ if (!( src.deployed ))
+ return null
+ else
+ ..()
+ return
+
+/obj/move/airtunnel/connector/create()
+
+ src.current = src
+ src.next = new /obj/move/airtunnel( null )
+ src.next.master = src.master
+ src.next.previous = src
+ spawn( 0 )
+ src.next.create(36, src.y)
+ return
+ return
+
+/obj/move/airtunnel/connector/wall/create()
+
+ src.current = src
+ src.next = new /obj/move/airtunnel/wall( null )
+ src.next.master = src.master
+ src.next.previous = src
+ spawn( 0 )
+ src.next.create(36, src.y)
+ return
+ return
+
+/obj/move/airtunnel/connector/wall/process()
+
+ return
+
+/obj/move/airtunnel/wall/create(num, y_coord)
+
+ if (((num < 7 || (num > 14 && num < 21)) && y_coord == 72))
+ src.next = new /obj/move/airtunnel( null )
+ else
+ src.next = new /obj/move/airtunnel/wall( null )
+ src.next.master = src.master
+ src.next.previous = src
+ if (num > 1)
+ spawn( 0 )
+ src.next.create(num - 1, y_coord)
+ return
+ return
+
+/obj/move/airtunnel/wall/move_right()
+
+ flick("wall-m", src)
+ return ..()
+ return
+
+/obj/move/airtunnel/wall/move_left()
+
+ flick("wall-m", src)
+ return ..()
+ return
+
+/obj/move/airtunnel/wall/process()
+
+ return
+
+/obj/move/airtunnel/proc/move_left()
+
+ src.relocate(get_step(src, WEST))
+ if ((src.next && src.next.deployed))
+ return src.next.move_left()
+ else
+ return src.next
+ return
+
+/obj/move/airtunnel/proc/move_right()
+
+ src.relocate(get_step(src, EAST))
+ if ((src.previous && src.previous.deployed))
+ src.previous.move_right()
+ return src.previous
+ return
+
+/obj/move/airtunnel/proc/create(num, y_coord)
+
+ if (y_coord == 72)
+ if ((num < 7 || (num > 14 && num < 21)))
+ src.next = new /obj/move/airtunnel( null )
+ else
+ src.next = new /obj/move/airtunnel/wall( null )
+ else
+ src.next = new /obj/move/airtunnel( null )
+ src.next.master = src.master
+ src.next.previous = src
+ if (num > 1)
+ spawn( 0 )
+ src.next.create(num - 1, y_coord)
+ return
+ return
+
+/obj/machinery/at_indicator/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(58)
+ src.icon_state = "reader_broken"
+ if(3.0)
+ if (prob(25))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(109)
+ src.icon_state = "reader_broken"
+ else
+ return
+
+/obj/machinery/at_indicator/proc/update_icon()
+
+ var/status = 0
+ if (SS13_airtunnel.operating == 1)
+ status = "r"
+ else
+ if (SS13_airtunnel.operating == 2)
+ status = "e"
+ else
+ var/C = pick(SS13_airtunnel.connectors)
+ if (C.current == C)
+ status = 0
+ else
+ if (!( C.current.next ))
+ status = 2
+ else
+ status = 1
+ src.icon_state = text("reader[][]", (SS13_airtunnel.siphon_status == 2 ? "1" : "0"), status)
+ return
+
+/obj/machinery/at_indicator/process()
+
+ src.update_icon()
+ return
+
+/obj/machinery/computer/airtunnel/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(58)
+ src.icon_state = "broken"
+ if(3.0)
+ if (prob(25))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(109)
+ src.icon_state = "broken"
+ else
+ return
+
+/obj/machinery/computer/airtunnel/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/computer/airtunnel/attack_hand(user as mob)
+
+ var/dat = "Air Tunnel Controls
"
+ user.machine = src
+ if (SS13_airtunnel.operating == 1)
+ dat += "Status: RETRACTING
"
+ else
+ if (SS13_airtunnel.operating == 2)
+ dat += "Status: EXPANDING
"
+ else
+ var/C = pick(SS13_airtunnel.connectors)
+ if (C.current == C)
+ dat += "Status: Fully Retracted
"
+ else
+ if (!( C.current.next ))
+ dat += "Status: Fully Extended
"
+ else
+ dat += "Status: Stopped Midway
"
+ dat += text("Retract Stop Extend
", src, src, src)
+ dat += text("
Air Level: []
", (SS13_airtunnel.air_stat ? "Acceptable" : "DANGEROUS"))
+ dat += "Air System Status: "
+ switch(SS13_airtunnel.siphon_status)
+ if(0.0)
+ dat += "Stopped "
+ if(1.0)
+ dat += "Siphoning (Siphons only) "
+ if(2.0)
+ dat += "Regulating (BOTH) "
+ if(3.0)
+ dat += "RELEASING MAX (Siphons only) "
+ else
+ dat += text("(Refresh)
", src)
+ dat += text("RELEASE (Siphons only) Siphon (Siphons only) Stop Regulate
", src, src, src, src)
+ dat += text("
Close", user)
+ user << browse(dat, "window=computer;size=400x500")
+ return
+
+/obj/machinery/computer/airtunnel/proc/update_icon()
+
+ var/status = 0
+ if (SS13_airtunnel.operating == 1)
+ status = "r"
+ else
+ if (SS13_airtunnel.operating == 2)
+ status = "e"
+ else
+ var/C = pick(SS13_airtunnel.connectors)
+ if (C.current == C)
+ status = 0
+ else
+ if (!( C.current.next ))
+ status = 2
+ else
+ status = 1
+ src.icon_state = text("console[][]", (SS13_airtunnel.siphon_status >= 2 ? "1" : "0"), status)
+ return
+
+/obj/machinery/computer/airtunnel/process()
+
+ src.update_icon()
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(27)
+ return
+
+/obj/machinery/computer/airtunnel/Topic(href, href_list)
+
+ if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey"))))
+ usr << "\red You don't have the dexterity to do this!"
+ return
+ if ((usr.stat || usr.restrained()))
+ return
+ if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf))))
+ usr.machine = src
+ if (href_list["retract"])
+ SS13_airtunnel.retract()
+ else
+ if (href_list["stop"])
+ SS13_airtunnel.operating = 0
+ else
+ if (href_list["extend"])
+ SS13_airtunnel.extend()
+ else
+ if (href_list["release"])
+ SS13_airtunnel.siphon_status = 3
+ siphons()
+ else
+ if (href_list["siphon"])
+ SS13_airtunnel.siphon_status = 1
+ siphons()
+ else
+ if (href_list["stop_siph"])
+ SS13_airtunnel.siphon_status = 0
+ siphons()
+ else
+ if (href_list["auto"])
+ SS13_airtunnel.siphon_status = 2
+ siphons()
+ else
+ if (href_list["refresh"])
+ SS13_airtunnel.siphons()
+ src.add_fingerprint(usr)
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(346)
+ return
+
+/obj/machinery/camera/attackby(W as obj, user as mob)
+
+ if (istype(W, /obj/item/weapon/wirecutters))
+ src.status = !( src.status )
+ if (!( src.status ))
+ for(var/O as mob in viewers(user, null))
+ O.show_message(text("\red [] has deactivated []!", user, src), 1)
+ //Foreach goto(49)
+ src.icon_state = "camera1"
+ else
+ for(var/O as mob in viewers(user, null))
+ O.show_message(text("\red [] has reactivated []!", user, src), 1)
+ //Foreach goto(106)
+ src.icon_state = "camera"
+ return
+
+/obj/machinery/sec_lock/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/sec_lock/attack_hand(user as mob)
+
+ if (src.loc == user.loc)
+ var/dat = text("Security Pad:
\nKeycard: []
\nToggle Outer Door
\nToggle Inner Door
\n
\nEmergency Close
\nEmergency Open
", (src.scan ? text("[]", src, src.scan.name) : text("-----", src)), src, src, src, src)
+ user << browse(dat, "window=sec_lock")
+ return
+
+/obj/machinery/sec_lock/attackby(nothing, user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/sec_lock/New()
+
+ ..()
+ spawn( 2 )
+ if (src.a_type == 1)
+ src.d2 = locate(/obj/machinery/door, locate(src.x - 2, src.y - 1, src.z))
+ src.d1 = locate(/obj/machinery/door, get_step(src, SOUTHWEST))
+ else
+ if (src.a_type == 2)
+ src.d2 = locate(/obj/machinery/door, locate(src.x - 2, src.y + 1, src.z))
+ src.d1 = locate(/obj/machinery/door, get_step(src, NORTHWEST))
+ else
+ src.d1 = locate(/obj/machinery/door, get_step(src, SOUTH))
+ src.d2 = locate(/obj/machinery/door, get_step(src, SOUTHEAST))
+ return
+ return
+
+/obj/machinery/sec_lock/Topic(href, href_list)
+
+ if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey"))))
+ usr << "\red You don't have the dexterity to do this!"
+ return
+ if ((usr.stat || usr.restrained()))
+ return
+ if ((!( src.d1 ) || !( src.d2 )))
+ usr << "\red Error: Cannot interface with door security!"
+ return
+ if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf))))
+ usr.machine = src
+ if (href_list["card"])
+ if (src.scan)
+ src.scan.loc = src.loc
+ src.scan = null
+ else
+ var/I = usr.equipped()
+ if (istype(I, /obj/item/weapon/card/id))
+ usr.drop_item()
+ I.loc = src
+ src.scan = I
+ if (href_list["door1"])
+ if (src.scan)
+ var/list/L = list( "Prison Security", "Prison Warden", "Security Officer", "Head of Personnel", "Captain" )
+ if ((L.Find(src.scan.assignment) || (src.scan.lab_access > 4 && src.access_level > 4)))
+ if (src.d1.density)
+ spawn( 0 )
+ src.open()
+ return
+ else
+ spawn( 0 )
+ src.close()
+ return
+ if (href_list["door2"])
+ if (src.scan)
+ var/list/L = list( "Prison Security", "Prison Warden", "Security Officer", "Head of Personnel", "Captain" )
+ if ((L.Find(src.scan.assignment) || (src.scan.lab_access > 4 && src.access_level > 4)))
+ if (src.d2.density)
+ spawn( 0 )
+ src.open()
+ return
+ else
+ spawn( 0 )
+ src.close()
+ return
+ if (href_list["em_cl"])
+ if (src.scan)
+ var/list/L = list( "Prison Security", "Prison Warden", "Security Officer", "Head of Personnel", "Captain" )
+ if ((L.Find(src.scan.assignment) || (src.scan.lab_access > 4 && src.access_level > 4)))
+ spawn( 0 )
+ if (!( src.d1.density ))
+ src.close()
+ return
+ sleep(1)
+ spawn( 0 )
+ if (!( src.d2.density ))
+ src.close()
+ return
+ if (href_list["em_op"])
+ if (src.scan)
+ var/list/L = list( "Prison Security", "Prison Warden", "Security Officer", "Head of Personnel", "Captain" )
+ if ((L.Find(src.scan.assignment) || (src.scan.lab_access > 4 && src.access_level > 4)))
+ spawn( 0 )
+ if (src.d1.density)
+ src.open()
+ return
+ sleep(1)
+ spawn( 0 )
+ if (src.d2.density)
+ src.open()
+ return
+ src.add_fingerprint(usr)
+ for(var/M as mob in src.loc)
+ if ((M.client && M.machine == src))
+ spawn( 0 )
+ src.attack_hand(M)
+ return
+ //Foreach goto(737)
+ return
+
+/obj/machinery/autolathe/attackby(O as obj, user as mob)
+
+ if (istype(O, /obj/item/weapon/sheet/metal))
+ if (src.m_amount < 150000.0)
+ src.m_amount += ((O.height * O.width) * O.length) * 1000000.0
+ O.amount--
+ if (O.amount < 1)
+ O = null
+ del(O)
+ else
+ if (istype(O, /obj/item/weapon/sheet/glass))
+ if (src.g_amount < 75000.0)
+ src.g_amount += ((O.height * O.width) * O.length) * 1000000.0
+ O.amount--
+ if (O.amount < 1)
+ O = null
+ del(O)
+ else
+ if (istype(O, /obj/item/weapon/screwdriver))
+ if (!( src.operating ))
+ src.opened = !( src.opened )
+ src.icon_state = text("autolathe[]", (src.opened ? "f" : null))
+ else
+ user << "\red The machine is in use. You can not maintain it now."
+ else
+ spawn( 0 )
+ src.attack_hand(user)
+ return
+ return
+
+/obj/machinery/autolathe/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/autolathe/attack_hand(user as mob)
+
+ if (src.temp)
+ var/dat = text("[]
Clear Screen", src.temp, src)
+ else
+ dat = text("Metal Amount: [] cubic centimeters (MAX: 150,000)
\nGlass Amount: [] cubic centimeters (MAX: 75,000)
", src.m_amount, src.g_amount)
+ var/list/L = list( )
+ L["screwdriver"] = "Make Screwdriver {40 cc}"
+ L["wirecutters"] = "Make Wirecutters {80 cc}"
+ L["wrench"] = "Make Wrench {150 cc}"
+ L["crowbar"] = "Make Crowbar {150 cc}"
+ L["screw"] = "Make Screw (1) {3 cc}"
+ L["5screws"] = "Make Screws (5) {14 cc}"
+ L["rod_t"] = "Make Rod (1x20) {20 cc}"
+ L["rod_l"] = "Make Rod (5x250) {1250 cc}"
+ L["grille_1"] = "Make Grille (250x250x1) {27345 cc}"
+ L["sheet_1"] = "Make Sheet (20x10x.01) {2 cc}"
+ L["sheet_2"] = "Make Sheet (30x10x.01) {3 cc}"
+ L["sheet_3"] = "Make Sheet (30x20x.01) {6 cc}"
+ L["sheet_4"] = "Make Sheet (30x30x.01) {9 cc}"
+ L["sheet_5"] = "Make Sheet (62.5x62.5x4) {15625 cc}"
+ for(var/t in L)
+ dat += text("[]
", src, t, L[text("[]", t)])
+ //Foreach goto(230)
+ user << browse(text("Autolathe Control Panel []", dat), "window=autolathe")
+ return
+
+/obj/machinery/autolathe/Topic(href, href_list)
+
+ if ((usr.stat || usr.restrained()))
+ return
+ if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf))))
+ usr.machine = src
+ if (href_list["temp"])
+ src.temp = null
+ src.add_fingerprint(usr)
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(108)
+ return
+
+/obj/machinery/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ src = null
+ del(src)
+ return
+ if(3.0)
+ if (prob(25))
+ src = null
+ del(src)
+ return
+ else
+ return
+
+/obj/machinery/injector/attackby(W as obj, user as mob)
+
+ var/ptank = W
+ if (!( istype(ptank, /obj/item/weapon/tank) ))
+ return
+ var/T = get_step(src.loc, get_dir(user, src))
+ ptank.gas.turf_add(T, -1.0)
+ src.add_fingerprint(user)
+ return
+
+/obj/machinery/alarm/process()
+
+ var/safe = 1
+ var/T = src.loc
+ if (!( istype(T, /turf) ))
+ return
+ if (locate(/obj/move, T))
+ T = locate(/obj/move, T)
+ var/turf_total = (((T.co2 + T.oxygen) + T.poison) + T.sl_gas) + T.n2
+ turf_total = max(turf_total, 1)
+ var/t1 = (turf_total / 3600000.0) * 100
+ if (!( (90 < t1 && t1 < 110) ))
+ safe = 0
+ t1 = (T.oxygen / turf_total) * 100
+ if (!( (20 < t1 && t1 < 30) ))
+ safe = 0
+ src.icon_state = text("alarm:[]", !( safe ))
+ return
+
+/obj/machinery/alarm/indicator/process()
+
+ var/safe = 1
+ var/T = src.loc
+ if (!( istype(T, /turf) ))
+ return
+ if (locate(/obj/move, T))
+ T = locate(/obj/move, T)
+ var/turf_total = (((T.co2 + T.oxygen) + T.poison) + T.sl_gas) + T.n2
+ turf_total = max(turf_total, 1)
+ var/t1 = (turf_total / 3600000.0) * 100
+ if (!( (90 < t1 && t1 < 110) ))
+ safe = 0
+ t1 = (T.oxygen / turf_total) * 100
+ if (!( (20 < t1 && t1 < 30) ))
+ safe = 0
+ src.icon_state = text("indicator[]", safe)
+ SS13_airtunnel.air_stat = safe
+ return
+
+/datum/air_tunnel/air_tunnel1/New()
+
+ ..()
+ for(var/obj/move/airtunnel/A as obj in locate(/area/airtunnel1))
+ A.master = src
+ create()
+ src.connectors += A
+ //Foreach goto(21)
+ return
+
+/datum/air_tunnel/proc/siphons()
+
+ switch(src.siphon_status)
+ if(0.0)
+ for(var/obj/machinery/atmoalter/siphs/S as obj in locate(/area/airtunnel1))
+ S.t_status = 3
+ //Foreach goto(42)
+ if(1.0)
+ for(var/obj/machinery/atmoalter/siphs/fullairsiphon/S as obj in locate(/area/airtunnel1))
+ S.t_status = 2
+ S.t_per = 1000000.0
+ //Foreach goto(86)
+ for(var/obj/machinery/atmoalter/siphs/scrubbers/S as obj in locate(/area/airtunnel1))
+ S.t_status = 3
+ //Foreach goto(136)
+ if(2.0)
+ for(var/obj/machinery/atmoalter/siphs/S as obj in locate(/area/airtunnel1))
+ S.t_status = 4
+ //Foreach goto(180)
+ if(3.0)
+ for(var/obj/machinery/atmoalter/siphs/fullairsiphon/S as obj in locate(/area/airtunnel1))
+ S.t_status = 1
+ S.t_per = 1000000.0
+ //Foreach goto(224)
+ for(var/obj/machinery/atmoalter/siphs/scrubbers/S as obj in locate(/area/airtunnel1))
+ S.t_status = 3
+ //Foreach goto(274)
+ else
+ return
+
+/datum/air_tunnel/proc/stop()
+
+ src.operating = 0
+ return
+
+/datum/air_tunnel/proc/extend()
+
+ if (src.operating)
+ return
+ src.operating = 2
+ while(src.operating == 2)
+ var/ok = 1
+ for(var/obj/move/airtunnel/connector/A as obj in src.connectors)
+ if (!( A.current.next ))
+ src.operating = 0
+ return
+ if (!( A.move_left() ))
+ ok = 0
+ //Foreach goto(56)
+ if (!( ok ))
+ src.operating = 0
+ else
+ for(var/obj/move/airtunnel/connector/A as obj in src.connectors)
+ if (A.current)
+ A.current.next.loc = get_step(A.current.loc, EAST)
+ A.current = A.current.next
+ A.current.deployed = 1
+ else
+ src.operating = 0
+ //Foreach goto(150)
+ sleep(20)
+ return
+
+/datum/air_tunnel/proc/retract()
+
+ if (src.operating)
+ return
+ src.operating = 1
+ while(src.operating == 1)
+ var/ok = 1
+ for(var/obj/move/airtunnel/connector/A as obj in src.connectors)
+ if (A.current == A)
+ src.operating = 0
+ return
+ if (A.current)
+ A.current.loc = null
+ A.current.deployed = 0
+ A.current = A.current.previous
+ else
+ ok = 0
+ //Foreach goto(56)
+ if (!( ok ))
+ src.operating = 0
+ else
+ for(var/obj/move/airtunnel/connector/A as obj in src.connectors)
+ if (!( A.current.move_right() ))
+ src.operating = 0
+ //Foreach goto(188)
+ sleep(20)
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/airtunnel.dmi b/ss13-40.93.2-decomp/spacestation13/airtunnel.dmi
new file mode 100644
index 0000000..bb7e378
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/airtunnel.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/airtunnelcomputer.dmi b/ss13-40.93.2-decomp/spacestation13/airtunnelcomputer.dmi
new file mode 100644
index 0000000..5c6d89b
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/airtunnelcomputer.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/alert.dmi b/ss13-40.93.2-decomp/spacestation13/alert.dmi
new file mode 100644
index 0000000..83cbfde
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/alert.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/ammo.dmi b/ss13-40.93.2-decomp/spacestation13/ammo.dmi
new file mode 100644
index 0000000..f8e70c8
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/ammo.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/assemblies.dmi b/ss13-40.93.2-decomp/spacestation13/assemblies.dmi
new file mode 100644
index 0000000..eb3ce0f
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/assemblies.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/atmo_control.dm b/ss13-40.93.2-decomp/spacestation13/atmo_control.dm
new file mode 100644
index 0000000..ed6fc3e
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/atmo_control.dm
@@ -0,0 +1,663 @@
+
+/obj/machinery/proc/process()
+
+ return
+
+/obj/machinery/proc/receive_gas(gas as obj, machinery as obj)
+
+ return
+
+/obj/machinery/proc/orient_pipe(source as obj)
+
+ return
+
+/obj/machinery/proc/cut_pipes()
+
+ return
+
+/obj/machinery/proc/disc_pipe(target as obj)
+
+ return
+
+/obj/machinery/meter/New()
+
+ ..()
+ src.target = locate(/obj/machinery/pipes, src.loc)
+ return
+
+/obj/machinery/meter/Click()
+
+ if (get_dist(usr, src) <= 3)
+ if (src.target)
+ usr << text("\green [] / []", src.target.gas.tot_gas(), src.maximum)
+ else
+ usr << "\green Results: Connection Error!"
+ else
+ usr << "\green You are too far away."
+ return
+
+/obj/machinery/connector/receive_gas(t_gas as obj)
+
+ var/C = locate(/obj/machinery/atmoalter/canister, src.loc)
+ if (C.destroyed)
+ var/T = src.loc
+ if (!( istype(T, /turf) ))
+ return
+ t_gas.turf_add(T, -1.0)
+ return
+ var/amount = C.gas.maximum - ((C.oxygen + C.co2) + C.plasma)
+ if (((t_gas.co2 + t_gas.plasma) + t_gas.oxygen) < amount)
+ amount = (t_gas.co2 + t_gas.plasma) + t_gas.oxygen
+ C.gas.transfer_from(t_gas, amount)
+ return
+
+/obj/machinery/mass_driver/proc/drive(amount)
+
+ for(var/obj/O as obj in src.loc)
+ if (O.flags & 64)
+ O.throwing = 1
+ O.throwspeed = 100
+ spawn( 0 )
+ O.throwing(src.dir, src.power)
+ return
+ //Foreach goto(17)
+ flick("mass_driver1", src)
+ return
+
+/obj/machinery/pipes/orient_pipe(P as obj)
+
+ if (!( src.node1 ))
+ src.node1 = P
+ else
+ if (!( src.node2 ))
+ src.node2 = P
+ else
+ return 0
+ return 1
+ return
+
+/obj/machinery/pipes/proc/update()
+
+ var/T = src.loc
+ if ((src.level == 1 && (isturf(src.loc) && T.intact)))
+ src.invisibility = 100
+ else
+ src.invisibility = null
+ if ((src.node1 && src.node2))
+ src.icon_state = text("[]", get_dir(src, src.node1) | get_dir(src, src.node2))
+ else
+ var/con = 0
+ var/dis = 0
+ var/n1d = (src.node1 ? get_dir(src, src.node1) : null)
+ var/n2d = (src.node2 ? get_dir(src, src.node2) : null)
+ if (src.p_dir & 1)
+ if ((n1d == 1 || n2d == 1))
+ con |= 1
+ else
+ dis |= 1
+ if (src.p_dir & 2)
+ if ((n1d == 2 || n2d == 2))
+ con |= 2
+ else
+ dis |= 2
+ if (src.p_dir & 4)
+ if ((n1d == 4 || n2d == 4))
+ con |= 4
+ else
+ dis |= 4
+ if (src.p_dir & 8)
+ if ((n1d == 8 || n2d == 8))
+ con |= 8
+ else
+ dis |= 8
+ if (con == 0)
+ con = null
+ src.icon_state = text("[]-[]", con, dis)
+ return
+
+/obj/machinery/pipes/proc/explode()
+
+ src.gas.turf_add(src.loc, -1.0)
+ return
+
+/obj/machinery/pipes/New()
+
+ ..()
+ src.gas = new /obj/substance/gas( src )
+ src.gas.maximum = src.capacity
+ if (world.time > 100)
+ return
+ spawn( 50 )
+ if (src.p_dir & 1)
+ if (!( var/b1 ))
+ b1 = 1
+ else
+ if (!( var/b2 ))
+ b2 = 1
+ if (src.p_dir & 2)
+ if (!( b1 ))
+ b1 = 2
+ else
+ if (!( b2 ))
+ b2 = 2
+ if (src.p_dir & 4)
+ if (!( b1 ))
+ b1 = 4
+ else
+ if (!( b2 ))
+ b2 = 4
+ if (src.p_dir & 8)
+ if (!( b1 ))
+ b1 = 8
+ else
+ if (!( b2 ))
+ b2 = 8
+ for(var/obj/machinery/M as obj in orange(src, 1))
+ var/ob1 = null
+ var/ob2 = null
+ if (M.p_dir & 1)
+ if (!( ob1 ))
+ ob1 = 1
+ else
+ if (!( ob2 ))
+ ob2 = 1
+ if (M.p_dir & 2)
+ if (!( ob1 ))
+ ob1 = 2
+ else
+ if (!( ob2 ))
+ ob2 = 2
+ if (M.p_dir & 4)
+ if (!( ob1 ))
+ ob1 = 4
+ else
+ if (!( ob2 ))
+ ob2 = 4
+ if (M.p_dir & 8)
+ if (!( ob1 ))
+ ob1 = 8
+ else
+ if (!( ob2 ))
+ ob2 = 8
+ var/t1 = get_dir(src, M)
+ var/t2 = get_dir(M, src)
+ if ((M.level == src.level && ((b1 == t1 || b2 == t1) && (ob1 == t2 || ob2 == t2))))
+ if (src.node1)
+ if (!( src.node2 ))
+ src.node2 = M
+ else
+ src.node1 = M
+ //Foreach goto(253)
+ src.update()
+ return
+ return
+
+/obj/machinery/pipes/receive_gas(t_gas as obj, from as obj)
+
+ if (t_gas.tot_gas() > src.gas.maximum)
+ src.merge_into(t_gas)
+ src.explode()
+ return
+ spawn( 1 )
+ if (from == src.node1)
+ spawn( 0 )
+ src.node2.receive_gas(t_gas, src)
+ return
+ else
+ spawn( 0 )
+ src.node1.receive_gas(t_gas, src)
+ return
+ return
+ return
+ return
+
+/obj/machinery/atmoalter/siphs/New()
+
+ ..()
+ src.gas = new /obj/substance/gas( src )
+ src.gas.maximum = src.maximum
+ return
+
+/obj/machinery/atmoalter/siphs/proc/releaseall()
+
+ src.t_status = 1
+ src.t_per = 1000000.0
+ return
+
+/obj/machinery/atmoalter/siphs/proc/reset(valve, auto)
+
+ if (valve < 0)
+ src.t_per = -valve
+ src.t_status = 1
+ else
+ if (valve > 0)
+ src.t_per = valve
+ src.t_status = 2
+ else
+ src.t_status = 3
+ if (auto)
+ src.t_status = 4
+ src.setstate()
+ return
+
+/obj/machinery/atmoalter/siphs/proc/release(amount, flag)
+
+ var/T = src.loc
+ if (!( istype(T, /turf) ))
+ return
+ if (locate(/obj/move, T))
+ T = locate(/obj/move, T)
+ if (!( amount ))
+ return
+ if (!( flag ))
+ amount = min(amount, 1000000.0)
+ src.gas.turf_add(T, amount)
+ return
+
+/obj/machinery/atmoalter/siphs/proc/siphon(amount, flag)
+
+ var/T = src.loc
+ if (!( istype(T, /turf) ))
+ return
+ if (locate(/obj/move, T))
+ T = locate(/obj/move, T)
+ if (!( amount ))
+ return
+ if (!( flag ))
+ amount = min(amount, 900000.0)
+ src.gas.turf_take(T, amount)
+ return
+
+/obj/machinery/atmoalter/siphs/proc/setstate()
+
+ if (src.holding)
+ src.icon_state = "siphon:T"
+ else
+ if (src.t_status != 3)
+ src.icon_state = "siphon:1"
+ else
+ src.icon_state = "siphon:0"
+ return
+
+/obj/machinery/atmoalter/siphs/fullairsiphon/New()
+
+ ..()
+ src.gas.oxygen = 2.73E7
+ src.gas.n2 = 1.027E8
+ return
+
+/obj/machinery/atmoalter/siphs/fullairsiphon/port/reset(valve, auto)
+
+ if (valve < 0)
+ src.t_per = -valve
+ src.t_status = 1
+ else
+ if (valve > 0)
+ src.t_per = valve
+ src.t_status = 2
+ else
+ src.t_status = 3
+ if (auto)
+ src.t_status = 4
+ src.setstate()
+ return
+
+/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent/attackby(W as obj, user as mob)
+
+ if (istype(W, /obj/item/weapon/screwdriver))
+ if (src.c_status)
+ src.anchored = 0
+ src.c_status = 0
+ else
+ if (locate(/obj/machinery/connector, src.loc))
+ src.anchored = 1
+ src.c_status = 3
+ else
+ if (istype(W, /obj/item/weapon/wrench))
+ src.alterable = !( src.alterable )
+ return
+
+/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent/setstate()
+
+ if (src.t_status == 4)
+ src.icon_state = "vent2"
+ else
+ if (src.t_status == 3)
+ src.icon_state = "vent0"
+ else
+ src.icon_state = "vent1"
+ return
+
+/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent/reset(valve, auto)
+
+ if (auto)
+ src.t_status = 4
+ return
+
+/obj/machinery/atmoalter/siphs/scrubbers/process()
+
+ if (src.t_status != 3)
+ var/T = src.loc
+ if (istype(T, /turf))
+ if (locate(/obj/move, T))
+ T = locate(/obj/move, T)
+ if (T.firelevel < 900000.0)
+ T.oxygen += src.gas.oxygen
+ src.gas.oxygen = 0
+ else
+ T = null
+ switch(src.t_status)
+ if(1.0)
+ if (src.holding)
+ var/t1 = src.gas.tot_gas()
+ var/t2 = t1
+ var/t = src.t_per
+ if (src.t_per > t2)
+ t = t2
+ src.holding.gas.transfer_from(src.gas, t)
+ else
+ if (T)
+ var/t1 = src.gas.tot_gas()
+ var/t2 = t1
+ var/t = src.t_per
+ if (src.t_per > t2)
+ t = t2
+ src.gas.turf_add(T, t)
+ if(2.0)
+ if (src.holding)
+ var/t1 = src.gas.tot_gas()
+ var/t2 = src.maximum - t1
+ var/t = src.t_per
+ if (src.t_per > t2)
+ t = t2
+ src.gas.transfer_from(src.holding.gas, t)
+ else
+ if (T)
+ var/t1 = src.gas.tot_gas()
+ var/t2 = src.maximum - t1
+ var/t = src.t_per
+ if (t > t2)
+ t = t2
+ src.gas.turf_take(T, t)
+ if(4.0)
+ if (T)
+ if (T.firelevel > 900000.0)
+ src.f_time = world.time + 400
+ else
+ if (world.time > src.f_time)
+ src.gas.extract_toxs(T)
+ var/contain = tot_gas()
+ if (contain > 1.3E8)
+ src.turf_add(T, 1.3E8 - contain)
+ else
+ if (src.c_status == 1)
+ var/C = locate(/obj/machinery/connector, src.loc)
+ if (C)
+ var/obj/substance/gas/G = new /obj/substance/gas( )
+ G.transfer_from(src.gas, src.c_per)
+ spawn( 0 )
+ C.receive_gas(G, null)
+ return
+ else
+ C.c_status = 0
+ src.setstate()
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(654)
+ return
+
+/obj/machinery/atmoalter/siphs/scrubbers/air_filter/setstate()
+
+ if (src.t_status == 4)
+ src.icon_state = "vent2"
+ else
+ if (src.t_status == 3)
+ src.icon_state = "vent0"
+ else
+ src.icon_state = "vent1"
+ return
+
+/obj/machinery/atmoalter/siphs/scrubbers/air_filter/attackby(W as obj, user as mob)
+
+ if (istype(W, /obj/item/weapon/screwdriver))
+ if (src.c_status)
+ src.anchored = 0
+ src.c_status = 0
+ else
+ if (locate(/obj/machinery/connector, src.loc))
+ src.anchored = 1
+ src.c_status = 3
+ else
+ if (istype(W, /obj/item/weapon/wrench))
+ src.alterable = !( src.alterable )
+ return
+
+/obj/machinery/atmoalter/siphs/scrubbers/air_filter/reset(valve, auto)
+
+ if (auto)
+ src.t_status = 4
+ src.setstate()
+ return
+
+/obj/machinery/atmoalter/siphs/scrubbers/port/setstate()
+
+ if (src.holding)
+ src.icon_state = "scrubber:T"
+ else
+ if (src.t_status != 3)
+ src.icon_state = "scrubber:1"
+ else
+ src.icon_state = "scrubber:0"
+ return
+
+/obj/machinery/atmoalter/siphs/scrubbers/port/reset(valve, auto)
+
+ if (valve < 0)
+ src.t_per = -valve
+ src.t_status = 1
+ else
+ if (valve > 0)
+ src.t_per = valve
+ src.t_status = 2
+ else
+ src.t_status = 3
+ if (auto)
+ src.t_status = 4
+ src.setstate()
+ return
+
+/obj/machinery/atmoalter/siphs/process()
+
+ if (src.t_status != 3)
+ var/T = src.loc
+ if (istype(T, /turf))
+ if (locate(/obj/move, T))
+ T = locate(/obj/move, T)
+ else
+ T = null
+ switch(src.t_status)
+ if(1.0)
+ if (src.holding)
+ var/t1 = src.gas.tot_gas()
+ var/t2 = t1
+ var/t = src.t_per
+ if (src.t_per > t2)
+ t = t2
+ src.holding.gas.transfer_from(src.gas, t)
+ else
+ if (T)
+ var/t1 = src.gas.tot_gas()
+ var/t2 = t1
+ var/t = src.t_per
+ if (src.t_per > t2)
+ t = t2
+ src.gas.turf_add(T, t)
+ if(2.0)
+ if (src.holding)
+ var/t1 = src.gas.tot_gas()
+ var/t2 = src.maximum - t1
+ var/t = src.t_per
+ if (src.t_per > t2)
+ t = t2
+ src.gas.transfer_from(src.holding.gas, t)
+ else
+ if (T)
+ var/t1 = src.gas.tot_gas()
+ var/t2 = src.maximum - t1
+ var/t = src.t_per
+ if (t > t2)
+ t = t2
+ src.gas.turf_take(T, t)
+ if(4.0)
+ if (T)
+ if (T.firelevel > 900000.0)
+ src.f_time = world.time + 300
+ else
+ if (world.time > src.f_time)
+ var/difference = 3600000.0 - (T.oxygen + T.n2)
+ if (difference > 0)
+ var/t1 = src.gas.tot_gas()
+ if (difference > t1)
+ difference = t1
+ src.gas.turf_add(T, difference)
+ else
+ if (src.c_status == 1)
+ var/C = locate(/obj/machinery/connector, src.loc)
+ if (C)
+ var/obj/substance/gas/G = new /obj/substance/gas( )
+ G.transfer_from(src.gas, src.c_per)
+ spawn( 0 )
+ C.receive_gas(G, null)
+ return
+ else
+ C.c_status = 0
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(632)
+ src.setstate()
+ return
+
+/obj/machinery/atmoalter/siphs/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/atmoalter/siphs/attack_hand(user as mob)
+
+ user.machine = src
+ switch(src.t_status)
+ if(1.0)
+ var/tt = text("Releasing Siphon Stop", src, src)
+ if(2.0)
+ tt = text("Release Siphoning Stop", src, src)
+ if(3.0)
+ tt = text("Release Siphon Stopped Automatic", src, src, src)
+ else
+ tt = "Automatic equalizers are on!"
+ var/ct = null
+ switch(src.c_status)
+ if(1.0)
+ ct = text("Releasing Accept Stop", src, src)
+ if(2.0)
+ ct = text("Release Accepting Stop", src, src)
+ if(3.0)
+ ct = text("Release Accept Stopped", src, src)
+ else
+ ct = "Disconnected"
+ var/at = null
+ if (src.t_status == 4)
+ at = text("Automatic On Stop", src)
+ var/dat = text("Canister Valves []
\n\tContains/Capacity [] / []
\n\tUpper Valve Status: [] []
\n\t\tM - - - - [] + + + + M
\n\tPipe Valve Status: []
\n\t\tM - - - - [] + + + + M
\n
\n\nClose
\n\t", (!( src.alterable ) ? "Valves are locked. Unlock with wrench!" : "You can lock this interface with a wrench."), num2text(src.gas.tot_gas(), 10), num2text(src.maximum, 10), (src.t_status == 4 ? text("[]", at) : text("[]", tt)), (src.holding ? text("
(Tank ([])", src, src.holding.gas.tot_gas()) : null), src, num2text(1000000.0, 7), src, src, src, src, src.t_per, src, src, src, src, src, num2text(1000000.0, 7), ct, src, num2text(1000000.0, 7), src, src, src, src, src.c_per, src, src, src, src, src, num2text(1000000.0, 7), user)
+ user << browse(dat, "window=siphon;size=600x300")
+ return
+
+/obj/machinery/atmoalter/siphs/Topic(href, href_list)
+
+ if (usr.stat)
+ return
+ if (!( src.alterable ))
+ return
+ if ((get_dist(src, usr) <= 1 && istype(src.loc, /turf)))
+ usr.machine = src
+ if (href_list["c"])
+ var/c = text2num(href_list["c"])
+ switch(c)
+ if(1.0)
+ src.c_status = 1
+ if(2.0)
+ src.c_status = 2
+ if(3.0)
+ src.c_status = 3
+ else
+ else
+ if (href_list["t"])
+ var/t = text2num(href_list["t"])
+ if (src.t_status == 0)
+ return
+ switch(t)
+ if(1.0)
+ src.t_status = 1
+ if(2.0)
+ src.t_status = 2
+ if(3.0)
+ src.t_status = 3
+ if(4.0)
+ src.t_status = 4
+ src.f_time = 1
+ else
+ else
+ if (href_list["tp"])
+ var/tp = text2num(href_list["tp"])
+ src.t_per += tp
+ src.t_per = min(max(round(src.t_per), 0), 1000000.0)
+ else
+ if (href_list["cp"])
+ var/cp = text2num(href_list["cp"])
+ src.c_per += cp
+ src.c_per = min(max(round(src.c_per), 0), 1000000.0)
+ else
+ if (href_list["tank"])
+ var/cp = text2num(href_list["tank"])
+ if (cp == 1)
+ src.holding.loc = src.loc
+ src.holding = null
+ if (src.t_status == 2)
+ src.t_status = 3
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(433)
+ src.add_fingerprint(usr)
+ else
+ usr << browse(null, "window=canister")
+ return
+ return
+
+/obj/machinery/atmoalter/siphs/attackby(W as obj, user as mob)
+
+ if (istype(W, /obj/item/weapon/tank))
+ if (src.holding)
+ return
+ var/T = W
+ user.drop_item()
+ T.loc = src
+ src.holding = T
+ else
+ if (istype(W, /obj/item/weapon/screwdriver))
+ if (src.c_status)
+ src.anchored = 0
+ src.c_status = 0
+ else
+ if (locate(/obj/machinery/connector, src.loc))
+ src.anchored = 1
+ src.c_status = 3
+ else
+ if (istype(W, /obj/item/weapon/wrench))
+ src.alterable = !( src.alterable )
+ if (src.alterable)
+ user << "\blue You unlock the interface!"
+ else
+ user << "\blue You lock the interface!"
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/b_items.dmi b/ss13-40.93.2-decomp/spacestation13/b_items.dmi
new file mode 100644
index 0000000..e8756e2
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/b_items.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/belt.dmi b/ss13-40.93.2-decomp/spacestation13/belt.dmi
new file mode 100644
index 0000000..f9b425a
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/belt.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/canister.dmi b/ss13-40.93.2-decomp/spacestation13/canister.dmi
new file mode 100644
index 0000000..2346c2b
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/canister.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/cell_process.dm b/ss13-40.93.2-decomp/spacestation13/cell_process.dm
new file mode 100644
index 0000000..2ef43cf
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/cell_process.dm
@@ -0,0 +1,869 @@
+
+/obj/move/CheckPass(O as mob|obj)
+
+ return !( src.density )
+ return
+
+/obj/move/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/move/attack_hand(user as mob)
+
+ if ((!( user.canmove ) || (user.restrained() || !( user.pulling ))))
+ return
+ if (user.pulling.anchored)
+ return
+ if ((user.pulling.loc != user.loc && get_dist(user, user.pulling) > 1))
+ return
+ if (ismob(user.pulling))
+ var/M = user.pulling
+ var/t = M.pulling
+ M.pulling = null
+ step(user.pulling, get_dir(user.pulling.loc, src))
+ M.pulling = t
+ else
+ step(M.pulling, get_dir(user.pulling.loc, src))
+ return
+
+/obj/move/proc/res_vars()
+
+ src.oldoxy = src.oxygen
+ src.tmpoxy = src.oxygen
+ src.oldpoison = src.poison
+ src.tmppoison = src.poison
+ src.oldco2 = src.co2
+ src.tmpco2 = src.co2
+ src.osl_gas = src.sl_gas
+ src.tsl_gas = src.sl_gas
+ src.on2 = src.n2
+ src.tn2 = src.n2
+ src.oheat = src.heat
+ src.theat = src.heat
+ return
+
+/obj/move/proc/relocate(T as turf, degree)
+
+ if (degree)
+ for(var/atom/movable/A as mob|obj in src.loc)
+ A.dir = turn(A.dir, degree)
+ //Foreach goto(25)
+ else
+ for(var/atom/movable/A as mob|obj in src.loc)
+ A.loc = T
+ //Foreach goto(73)
+ return
+
+/obj/move/proc/unburn()
+
+ src.icon_state = src.initial(src.icon_state)
+ return
+
+/obj/move/proc/Neighbors()
+
+ var/list/L = list( NORTH, SOUTH, EAST, WEST )
+ for(var/obj/machinery/door/window/D as obj in src.loc)
+ if (!( D.density ))
+ goto Label_98
+ if (D.dir & 12)
+ L -= SOUTH
+ else
+ L -= EAST
+ Label_98:
+//Foreach goto(36)
+ for(var/obj/window/D as obj in src.loc)
+ if (!( D.density ))
+ goto Label_182
+ L -= D.dir
+ if (D.dir == SOUTHWEST)
+ L.len = null
+ return L
+ Label_182:
+//Foreach goto(115)
+ return L
+ return
+
+/obj/move/proc/FindTurfs()
+
+ var/list/L = list( )
+ for(var/dir in src.Neighbors())
+ var/T = get_step(src.loc, dir)
+ if (!( T ))
+ goto Label_299
+ L += T
+ for(var/obj/machinery/door/window/D as obj in T)
+ if (!( D.density ))
+ goto Label_181
+ var/direct = get_dir(src, T)
+ if ((D.dir & 12 && direct & 1))
+ L -= T
+ goto Label_181
+ else
+ if (direct & 8)
+ L -= T
+ goto Label_181
+ Label_181:
+Label_181:
+Label_181:
+//Foreach goto(81)
+ for(var/obj/window/D as obj in T)
+ if (!( D.density ))
+ goto Label_294
+ var/direct = get_dir(T, src.loc)
+ if (D.dir == SOUTHWEST)
+ L -= T
+ goto Label_294
+ else
+ if (direct == D.dir)
+ L -= T
+ goto Label_294
+ Label_294:
+Label_294:
+Label_294:
+//Foreach goto(199)
+ Label_299:
+ if ((locate(/obj/move, T) && L.Find(T)))
+ L -= T
+ var/O = locate(/obj/move, T)
+ if (O.updatecell)
+ L += O
+ else
+ if ((isturf(T) && !( T.updatecell )))
+ L -= T
+ //Foreach goto(26)
+ return L
+ return
+
+/obj/move/proc/process()
+
+ if (locate(/obj/shuttle/door, src.loc))
+ var/D = locate(/obj/shuttle/door, src.loc)
+ src.updatecell = !( D.density )
+ if (!( src.updatecell ))
+ return
+ src.checkfire = !( src.checkfire )
+ if (src.checkfire)
+ if (cellcontrol.var_swap)
+ var/divideby = 1
+ var/total = src.oxygen
+ var/tpoison = src.poison
+ var/tco2 = src.co2
+ var/tosl_gas = src.sl_gas
+ var/ton2 = src.n2
+ var/toheat = src.heat
+ var/space = 0
+ var/burn = src.firelevel >= 10
+ for(var/S in src.FindTurfs())
+ var/T = S
+ if (istype(T, /turf/space))
+ space = 1
+ else
+ divideby++
+ total += T.oldoxy
+ tpoison += T.oldpoison
+ tco2 += T.oldco2
+ tosl_gas += T.osl_gas
+ ton2 += T.on2
+ toheat += T.oheat
+ if (T.firelevel >= 900000.0)
+ burn = 1
+ //Foreach continue //goto(158)
+ if (space)
+ src.oxygen = 0
+ src.poison = 0
+ src.co2 = 0
+ src.sl_gas = 0
+ src.n2 = 0
+ src.heat = 0
+ else
+ src.oxygen = total / divideby
+ src.poison = tpoison / divideby
+ src.co2 = tco2 / divideby
+ src.sl_gas = tosl_gas / divideby
+ src.n2 = ton2 / divideby
+ src.heat = toheat / divideby
+ if (src.sl_gas > 0)
+ src.sl_gas--
+ if (src.poison > 100000.0)
+ src.overlays = list( plmaster )
+ else
+ if (src.sl_gas > 101000.0)
+ src.overlays = list( slmaster )
+ else
+ src.overlays = null
+ if (burn)
+ src.firelevel = src.oxygen + src.poison
+ if (src.firelevel >= 900000.0)
+ src.icon_state = "burning"
+ if (src.oxygen > 5000)
+ src.co2 += 2500
+ src.oxygen -= 5000
+ else
+ src.oxygen = 0
+ src.poison = max(0, src.poison - 1000)
+ if (locate(/obj/effects/water, src))
+ src.firelevel = 0
+ for(var/atom/movable/A as mob|obj in src)
+ A.burn(src.firelevel)
+ //Foreach goto(561)
+ else
+ A.firelevel = 0
+ if (A.icon_state == "burning")
+ unburn()
+ src.tmpoxy = src.oxygen
+ src.tmppoison = src.poison
+ src.tmpco2 = src.co2
+ src.tsl_gas = src.sl_gas
+ src.tn2 = src.n2
+ src.theat = src.heat
+ else
+ var/divideby = 1
+ var/total = src.oxygen
+ var/tpoison = src.poison
+ var/tco2 = src.co2
+ var/tosl_gas = src.sl_gas
+ var/ton2 = src.n2
+ var/toheat = src.heat
+ var/space = 0
+ var/burn = src.firelevel >= 10
+ for(var/S in src.FindTurfs())
+ var/T = S
+ if (istype(T, /turf/space))
+ space = 1
+ else
+ divideby++
+ total += T.tmpoxy
+ tpoison += T.tmppoison
+ tco2 += T.tmpco2
+ tosl_gas += T.tsl_gas
+ ton2 += T.tn2
+ toheat += T.theat
+ if (T.firelevel >= 900000.0)
+ burn = 1
+ //Foreach continue //goto(744)
+ if (space)
+ src.oxygen = 0
+ src.poison = 0
+ src.co2 = 0
+ src.sl_gas = 0
+ src.n2 = 0
+ src.heat = 0
+ else
+ src.oxygen = total / divideby
+ src.poison = tpoison / divideby
+ src.co2 = tco2 / divideby
+ src.sl_gas = tosl_gas / divideby
+ src.n2 = ton2 / divideby
+ src.heat = toheat / divideby
+ if (src.sl_gas > 0)
+ src.sl_gas--
+ if (src.poison > 100000.0)
+ src.overlays = list( plmaster )
+ else
+ if (src.sl_gas > 101000.0)
+ src.overlays = list( slmaster )
+ else
+ src.overlays = null
+ if (burn)
+ src.firelevel = src.oxygen + src.poison
+ if (src.firelevel >= 900000.0)
+ src.icon_state = "burning"
+ if (src.oxygen > 5000)
+ src.co2 += 2500
+ src.oxygen -= 5000
+ else
+ src.oxygen = 0
+ src.poison = max(0, src.poison - 1000)
+ src.co2 += 2500
+ if (locate(/obj/effects/water, src))
+ src.firelevel = 0
+ for(var/atom/movable/A as mob|obj in src)
+ A.burn(src.firelevel)
+ //Foreach goto(1153)
+ else
+ if (A.icon_state == "burning")
+ A.firelevel = 0
+ unburn()
+ src.oldoxy = src.oxygen
+ src.oldpoison = src.poison
+ src.oldco2 = src.co2
+ src.osl_gas = src.sl_gas
+ src.on2 = src.n2
+ src.oheat = src.heat
+ else
+ if (cellcontrol.var_swap)
+ var/divideby = 1
+ var/total = src.oxygen
+ var/tpoison = src.poison
+ var/tco2 = src.co2
+ var/tosl_gas = src.sl_gas
+ var/ton2 = src.n2
+ var/toheat = src.heat
+ var/space = 0
+ src.airdir = null
+ src.airforce = 0
+ var/adiff = null
+ for(var/S in src.FindTurfs())
+ var/T = S
+ if (istype(T, /turf/space))
+ space = 1
+ src.airforce = (((src.oxygen + src.n2) + src.poison) + src.co2) + 25000
+ src.airdir = get_dir(src, T)
+ else
+ divideby++
+ total += T.oldoxy
+ tpoison += T.oldpoison
+ tco2 += T.oldco2
+ tosl_gas += T.osl_gas
+ ton2 += T.on2
+ toheat += T.oheat
+ adiff = ((src.oldoxy + src.oldco2) + src.on2) - ((T.oldoxy + T.oldco2) + T.on2)
+ if (adiff > src.airforce)
+ src.airforce = adiff
+ src.airdir = get_dir(src, T)
+ //Foreach continue //goto(1356)
+ if (src.airforce > 25000)
+ for(var/atom/movable/AM as mob|obj in src.loc)
+ if ((!( AM.anchored ) && AM.weight <= src.airforce))
+ spawn( 0 )
+ step(AM, src.airdir)
+ return
+ //Foreach goto(1559)
+ if (space)
+ src.oxygen = 0
+ src.poison = 0
+ src.co2 = 0
+ src.sl_gas = 0
+ src.n2 = 0
+ src.heat = 0
+ else
+ src.oxygen = total / divideby
+ src.poison = tpoison / divideby
+ src.co2 = tco2 / divideby
+ src.sl_gas = tosl_gas / divideby
+ src.n2 = ton2 / divideby
+ src.heat = toheat / divideby
+ if (src.sl_gas > 0)
+ src.sl_gas--
+ if (src.co2 >= src.poison)
+ src.co2 -= src.poison
+ src.oxygen += src.poison
+ src.poison = 0
+ else
+ src.poison -= src.co2
+ src.oxygen += src.co2
+ src.co2 = 0
+ src.tmpoxy = src.oxygen
+ src.tmppoison = src.poison
+ src.tmpco2 = src.co2
+ src.tsl_gas = src.sl_gas
+ src.tn2 = src.n2
+ src.theat = src.heat
+ else
+ var/divideby = 1
+ var/total = src.oxygen
+ var/tpoison = src.poison
+ var/tco2 = src.co2
+ var/tosl_gas = src.sl_gas
+ var/ton2 = src.n2
+ var/toheat = src.heat
+ var/space = 0
+ src.airdir = null
+ src.airforce = 0
+ var/adiff = null
+ for(var/S in src.FindTurfs())
+ var/T = S
+ if (istype(T, /turf/space))
+ space = 1
+ src.airforce = (((src.oxygen + src.poison) + src.n2) + src.co2) + 25000
+ src.airdir = get_dir(src, T)
+ else
+ divideby++
+ total += T.tmpoxy
+ tpoison += T.tmppoison
+ tco2 += T.tmpco2
+ tosl_gas += T.tsl_gas
+ ton2 += T.tn2
+ toheat += T.theat
+ adiff = ((src.tmpoxy + src.tmpco2) + src.tn2) - ((T.tmpoxy + T.tmpco2) + T.tn2)
+ if (adiff > src.airforce)
+ src.airforce = adiff
+ src.airdir = get_dir(src, T)
+ //Foreach continue //goto(1927)
+ if (src.airforce > 25000)
+ for(var/atom/movable/AM as mob|obj in src.loc)
+ if ((!( AM.anchored ) && AM.weight <= src.airforce))
+ spawn( 0 )
+ step(AM, src.airdir)
+ return
+ //Foreach goto(2130)
+ if (space)
+ src.oxygen = 0
+ src.poison = 0
+ src.co2 = 0
+ src.sl_gas = 0
+ src.n2 = 0
+ src.heat = 0
+ else
+ src.oxygen = total / divideby
+ src.poison = tpoison / divideby
+ src.co2 = tco2 / divideby
+ src.sl_gas = tosl_gas / divideby
+ src.n2 = ton2 / divideby
+ src.heat = toheat / divideby
+ if (src.sl_gas > 0)
+ src.sl_gas--
+ if (src.co2 >= src.poison)
+ src.co2 -= src.poison
+ src.oxygen += src.poison
+ src.poison = 0
+ else
+ src.poison -= src.co2
+ src.oxygen += src.co2
+ src.co2 = 0
+ src.oldoxy = src.oxygen
+ src.oldpoison = src.poison
+ src.oldco2 = src.co2
+ src.osl_gas = src.sl_gas
+ src.on2 = src.n2
+ src.oheat = src.heat
+ if ((locate(/obj/effects/water, src.loc) || src.firelevel < 900000.0))
+ src.firelevel = 0
+ return
+
+/obj/move/wall/New()
+
+ var/F = locate(/obj/move/floor, src.loc)
+ if (F)
+ F = null
+ del(F)
+ return
+
+/obj/move/wall/process()
+
+ src.updatecell = 0
+ return
+ return
+
+/obj/move/New()
+
+ if ((src.x & 1) == (src.y & 1))
+ src.checkfire = 0
+ src.tmpoxy = src.oxygen
+ src.oldoxy = src.oxygen
+ src.tmppoison = src.poison
+ src.oldpoison = src.poison
+ src.tmpco2 = src.co2
+ src.oldco2 = src.co2
+ src.oheat = 9.8892006E8
+ src.theat = 9.8892006E8
+ ..()
+ return
+
+/turf/proc/res_vars()
+
+ src.oldoxy = src.oxygen
+ src.tmpoxy = src.oxygen
+ src.oldpoison = src.poison
+ src.tmppoison = src.poison
+ src.oldco2 = src.co2
+ src.tmpco2 = src.co2
+ src.osl_gas = src.sl_gas
+ src.tsl_gas = src.sl_gas
+ src.on2 = src.n2
+ src.tn2 = src.n2
+ src.oheat = src.heat
+ src.theat = src.heat
+ return
+
+/turf/proc/unburn()
+
+ src.icon_state = src.initial(src.icon_state)
+ return
+
+/turf/proc/Neighbors()
+
+ var/list/L = list( NORTH, SOUTH, EAST, WEST )
+ for(var/obj/machinery/door/window/D as obj in src)
+ if (!( D.density ))
+ goto Label_96
+ if (D.dir & 12)
+ L -= SOUTH
+ else
+ L -= EAST
+ Label_96:
+//Foreach goto(34)
+ for(var/obj/window/D as obj in src)
+ if (!( D.density ))
+ goto Label_178
+ L -= D.dir
+ if (D.dir == SOUTHWEST)
+ L.len = null
+ return L
+ Label_178:
+//Foreach goto(111)
+ return L
+ return
+
+/turf/proc/FindTurfs()
+
+ var/list/L = list( )
+ if (locate(/obj/move, src))
+ return list( )
+ for(var/dir in src.Neighbors())
+ var/T = get_step(src, dir)
+ if ((!( T ) || !( T.updatecell )))
+ goto Label_317
+ L += T
+ for(var/obj/machinery/door/window/D as obj in T)
+ if (!( D.density ))
+ goto Label_201
+ var/direct = get_dir(src, T)
+ if ((D.dir & 12 && direct & 1))
+ L -= T
+ goto Label_201
+ else
+ if (direct & 8)
+ L -= T
+ goto Label_201
+ Label_201:
+Label_201:
+Label_201:
+//Foreach goto(101)
+ for(var/obj/window/D as obj in T)
+ if (!( D.density ))
+ goto Label_312
+ var/direct = get_dir(T, src)
+ if (D.dir == SOUTHWEST)
+ L -= T
+ goto Label_312
+ else
+ if (direct == D.dir)
+ L -= T
+ goto Label_312
+ Label_312:
+Label_312:
+Label_312:
+//Foreach goto(219)
+ Label_317:
+//Foreach goto(40)
+ for(var/T as turf in L)
+ if (locate(/obj/move, T))
+ L -= T
+ var/O = locate(/obj/move, T)
+ if (O.updatecell)
+ L += O
+ //Foreach goto(333)
+ return L
+ return
+
+/turf/New()
+
+ if ((src.x & 1) == (src.y & 1))
+ src.checkfire = 0
+ src.tmpoxy = src.oxygen
+ src.oldoxy = src.oxygen
+ src.tmppoison = src.poison
+ src.oldpoison = src.poison
+ src.tmpco2 = src.co2
+ src.oldco2 = src.co2
+ src.osl_gas = src.sl_gas
+ src.tsl_gas = src.sl_gas
+ src.on2 = src.n2
+ src.tn2 = src.n2
+ src.oheat = src.heat
+ src.theat = src.heat
+ ..()
+ return
+
+/turf/updatecell()
+
+ src.checkfire = !( src.checkfire )
+ if (src.checkfire)
+ if (cellcontrol.var_swap)
+ var/divideby = 1
+ var/total = src.oxygen
+ var/tpoison = src.poison
+ var/tco2 = src.co2
+ var/tosl_gas = src.sl_gas
+ var/ton2 = src.n2
+ var/toheat = src.heat
+ var/space = 0
+ var/burn = src.firelevel >= 10
+ for(var/S in src.FindTurfs())
+ var/T = S
+ if (istype(T, /turf/space))
+ space = 1
+ else
+ divideby++
+ total += T.oldoxy
+ tpoison += T.oldpoison
+ tco2 += T.oldco2
+ tosl_gas += T.osl_gas
+ ton2 += T.on2
+ toheat += T.oheat
+ if (T.firelevel >= 900000.0)
+ burn = 1
+ //Foreach continue //goto(113)
+ if (space)
+ src.oxygen = 0
+ src.poison = 0
+ src.co2 = 0
+ src.sl_gas = 0
+ src.n2 = 0
+ src.heat = 0
+ else
+ src.oxygen = total / divideby
+ src.poison = tpoison / divideby
+ src.co2 = tco2 / divideby
+ src.sl_gas = tosl_gas / divideby
+ src.n2 = ton2 / divideby
+ src.heat = toheat / divideby
+ if (src.sl_gas > 0)
+ src.sl_gas--
+ if (src.poison > 100000.0)
+ src.overlays = list( plmaster )
+ else
+ if (src.sl_gas > 101000.0)
+ src.overlays = list( slmaster )
+ else
+ src.overlays = null
+ if (burn)
+ src.firelevel = src.oxygen + src.poison
+ if (src.firelevel >= 900000.0)
+ src.icon_state = "burning"
+ if (src.oxygen > 5000)
+ src.co2 += 2500
+ src.oxygen -= 5000
+ else
+ src.oxygen = 0
+ src.poison = max(0, src.poison - 1000)
+ src.co2 += 2500
+ if (locate(/obj/effects/water, src))
+ src.firelevel = 0
+ for(var/atom/movable/A as mob|obj in src)
+ A.burn(src.firelevel)
+ //Foreach goto(522)
+ else
+ A.firelevel = 0
+ if (A.icon_state == "burning")
+ unburn()
+ src.tmpoxy = src.oxygen
+ src.tmppoison = src.poison
+ src.tmpco2 = src.co2
+ src.tsl_gas = src.sl_gas
+ src.tn2 = src.n2
+ src.theat = src.heat
+ else
+ var/divideby = 1
+ var/total = src.oxygen
+ var/tpoison = src.poison
+ var/tco2 = src.co2
+ var/tosl_gas = src.sl_gas
+ var/ton2 = src.n2
+ var/toheat = src.heat
+ var/space = 0
+ var/burn = src.firelevel >= 10
+ for(var/S in src.FindTurfs())
+ var/T = S
+ if (istype(T, /turf/space))
+ space = 1
+ else
+ divideby++
+ total += T.tmpoxy
+ tpoison += T.tmppoison
+ tco2 += T.tmpco2
+ tosl_gas += T.tsl_gas
+ ton2 += T.tn2
+ toheat += T.theat
+ if (T.firelevel >= 900000.0)
+ burn = 1
+ //Foreach continue //goto(705)
+ if (space)
+ src.oxygen = 0
+ src.poison = 0
+ src.co2 = 0
+ src.sl_gas = 0
+ src.n2 = 0
+ src.heat = 0
+ else
+ src.oxygen = total / divideby
+ src.poison = tpoison / divideby
+ src.co2 = tco2 / divideby
+ src.sl_gas = tosl_gas / divideby
+ src.n2 = ton2 / divideby
+ src.heat = toheat / divideby
+ if (src.sl_gas > 0)
+ src.sl_gas--
+ if (src.poison > 100000.0)
+ src.overlays = list( plmaster )
+ else
+ if (src.sl_gas > 101000.0)
+ src.overlays = list( slmaster )
+ else
+ src.overlays = null
+ if (burn)
+ src.firelevel = src.oxygen + src.poison
+ if (src.firelevel >= 900000.0)
+ src.icon_state = "burning"
+ if (src.oxygen > 5000)
+ src.co2 += 2500
+ src.oxygen -= 5000
+ else
+ src.oxygen = 0
+ src.poison = max(0, src.poison - 1000)
+ src.co2 += 2500
+ if (locate(/obj/effects/water, src))
+ src.firelevel = 0
+ for(var/atom/movable/A as mob|obj in src)
+ A.burn(src.firelevel)
+ //Foreach goto(1114)
+ else
+ if (A.icon_state == "burning")
+ A.firelevel = 0
+ unburn()
+ src.oldoxy = src.oxygen
+ src.oldpoison = src.poison
+ src.oldco2 = src.co2
+ src.osl_gas = src.sl_gas
+ src.on2 = src.n2
+ src.oheat = src.heat
+ else
+ if (cellcontrol.var_swap)
+ var/divideby = 1
+ var/total = src.oxygen
+ var/tpoison = src.poison
+ var/tco2 = src.co2
+ var/tosl_gas = src.sl_gas
+ var/ton2 = src.n2
+ var/toheat = src.heat
+ var/space = 0
+ src.airdir = null
+ src.airforce = 0
+ var/adiff = null
+ for(var/S in src.FindTurfs())
+ var/T = S
+ if (istype(T, /turf/space))
+ space = 1
+ src.airforce = (((src.oxygen + src.poison) + src.n2) + src.co2) + 25000
+ src.airdir = get_dir(src, T)
+ else
+ divideby++
+ total += T.oldoxy
+ tpoison += T.oldpoison
+ tco2 += T.oldco2
+ tosl_gas += T.osl_gas
+ ton2 += T.on2
+ toheat += T.oheat
+ adiff = ((src.oldoxy + src.oldco2) + src.on2) - ((T.oldoxy + T.oldco2) + T.on2)
+ if (adiff > src.airforce)
+ src.airforce = adiff
+ src.airdir = get_dir(src, T)
+ //Foreach continue //goto(1317)
+ if (src.airforce > 25000)
+ for(var/atom/movable/AM as mob|obj in src)
+ if ((!( AM.anchored ) && AM.weight <= src.airforce))
+ spawn( 0 )
+ step(AM, src.airdir)
+ return
+ //Foreach goto(1518)
+ if (space)
+ src.oxygen = 0
+ src.poison = 0
+ src.co2 = 0
+ src.sl_gas = 0
+ src.n2 = 0
+ src.heat = 0
+ else
+ src.oxygen = total / divideby
+ src.poison = tpoison / divideby
+ src.co2 = tco2 / divideby
+ src.sl_gas = tosl_gas / divideby
+ src.n2 = ton2 / divideby
+ src.heat = toheat / divideby
+ if (src.co2 >= src.poison)
+ src.co2 -= src.poison
+ src.oxygen += src.poison
+ src.poison = 0
+ else
+ src.poison -= src.co2
+ src.oxygen += src.co2
+ src.co2 = 0
+ src.tmpoxy = src.oxygen
+ src.tmppoison = src.poison
+ src.tmpco2 = src.co2
+ src.tsl_gas = src.sl_gas
+ src.tn2 = src.n2
+ src.theat = src.heat
+ else
+ var/divideby = 1
+ var/total = src.oxygen
+ var/tpoison = src.poison
+ var/tco2 = src.co2
+ var/tosl_gas = src.sl_gas
+ var/ton2 = src.n2
+ var/toheat = src.heat
+ var/space = 0
+ src.airdir = null
+ src.airforce = 0
+ var/adiff = null
+ for(var/S in src.FindTurfs())
+ var/T = S
+ if (istype(T, /turf/space))
+ space = 1
+ src.airforce = (((src.oxygen + src.poison) + src.n2) + src.co2) + 25000
+ src.airdir = get_dir(src, T)
+ else
+ divideby++
+ total += T.tmpoxy
+ tpoison += T.tmppoison
+ tco2 += T.tmpco2
+ tosl_gas += T.tsl_gas
+ ton2 += T.tn2
+ toheat += T.theat
+ adiff = ((src.tmpoxy + src.tmpco2) + src.tn2) - ((T.tmpoxy + T.tmpco2) + T.tn2)
+ if (adiff > src.airforce)
+ src.airforce = adiff
+ src.airdir = get_dir(src, T)
+ //Foreach continue //goto(1872)
+ if (src.airforce > 25000)
+ for(var/atom/movable/AM as mob|obj in src)
+ if ((!( AM.anchored ) && AM.weight <= src.airforce))
+ spawn( 0 )
+ step(AM, src.airdir)
+ return
+ //Foreach goto(2073)
+ if (space)
+ src.oxygen = 0
+ src.poison = 0
+ src.co2 = 0
+ src.sl_gas = 0
+ src.n2 = 0
+ src.heat = 0
+ else
+ src.oxygen = total / divideby
+ src.poison = tpoison / divideby
+ src.co2 = tco2 / divideby
+ src.sl_gas = tosl_gas / divideby
+ src.n2 = ton2 / divideby
+ src.heat = toheat / divideby
+ if (src.sl_gas > 0)
+ src.sl_gas--
+ if (src.co2 >= src.poison)
+ src.co2 -= src.poison
+ src.oxygen += src.poison
+ src.poison = 0
+ else
+ src.poison -= src.co2
+ src.oxygen += src.co2
+ src.co2 = 0
+ src.oldoxy = src.oxygen
+ src.oldpoison = src.poison
+ src.oldco2 = src.co2
+ src.osl_gas = src.sl_gas
+ src.on2 = src.n2
+ src.oheat = src.heat
+ if ((locate(/obj/effects/water, src) || src.firelevel < 900000.0))
+ src.firelevel = 0
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/cellautomata.dm b/ss13-40.93.2-decomp/spacestation13/cellautomata.dm
new file mode 100644
index 0000000..145d878
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/cellautomata.dm
@@ -0,0 +1,1637 @@
+
+/obj/team/proc/process()
+
+ if (src.base)
+ var/starting = locate(text("landmark*CTF-base-[]", src.base))
+ while(locate(text("landmark*CTF-supply-[]", src.base)))
+ var/L = locate(text("landmark*CTF-supply-[]", src.base))
+ var/obj/item/weapon/card/id/I = new /obj/item/weapon/card/id( L.loc )
+ I.access_level = 5
+ I.lab_access = 5
+ I.engine_access = 5
+ I.air_access = 5
+ I.assignment = "Captain"
+ I.registered = text("[]", uppertext((src.color ? src.color : "rogue")))
+ I.name = text("[]'s ID Card ([]>[]-[]-[])", I.registered, I.access_level, I.lab_access, I.engine_access, I.air_access)
+ var/obj/item/weapon/paper/flag/F = new /obj/item/weapon/paper/flag( L.loc )
+ if (src.color)
+ F.icon_state = text("flag_[]", src.color)
+ F.name = text("flag- '[] Team's Flag'", uppertext(src.color))
+ else
+ F.name = "flag- 'NEUTRAL Team's Flag'"
+ F.icon_state = "flag_neutral"
+ F.info = text("This is an authentic [] flag!\nCapture the Flag", (src.color ? src.color : "neutral"))
+ if (src.master.paint_cans)
+ var/obj/item/weapon/paint/P = new /obj/item/weapon/paint( L.loc )
+ if (src.color)
+ P.color = src.color
+ P.icon_state = text("paint_[]", src.color)
+ else
+ P.color = "neutral"
+ P.icon_state = text("paint_[]", src.color)
+ L = null
+ del(L)
+ while(locate(text("landmark*CTF-wardrobe-[]", src.base)))
+ var/L = locate(text("landmark*CTF-wardrobe-[]", src.base))
+ switch(src.color)
+ if("blue")
+ new /obj/closet/wardrobe( L.loc )
+ if("green")
+ new /obj/closet/wardrobe/green( L.loc )
+ if("yellow")
+ new /obj/closet/wardrobe/yellow( L.loc )
+ if("black")
+ new /obj/closet/wardrobe/black( L.loc )
+ if("white")
+ new /obj/closet/wardrobe/white( L.loc )
+ if("red")
+ new /obj/closet/wardrobe/red( L.loc )
+ else
+ L = null
+ del(L)
+ if (starting)
+ for(var/mob/human/H as mob in src.members)
+ H.loc = starting.loc
+ if ((src.master.autodress && src.color))
+ H.w_uniform = null
+ del(H.w_uniform)
+ H.shoes = null
+ del(H.shoes)
+ switch(src.color)
+ if("blue")
+ H.w_uniform = new /obj/item/weapon/clothing/under/blue( H )
+ H.shoes = new /obj/item/weapon/clothing/shoes/brown( H )
+ if("green")
+ H.w_uniform = new /obj/item/weapon/clothing/under/green( H )
+ H.shoes = new /obj/item/weapon/clothing/shoes/black( H )
+ if("yellow")
+ H.w_uniform = new /obj/item/weapon/clothing/under/yellow( H )
+ H.shoes = new /obj/item/weapon/clothing/shoes/orange( H )
+ if("black")
+ H.w_uniform = new /obj/item/weapon/clothing/under/black( H )
+ H.shoes = new /obj/item/weapon/clothing/shoes/black( H )
+ if("white")
+ H.w_uniform = new /obj/item/weapon/clothing/under/white( H )
+ H.shoes = new /obj/item/weapon/clothing/shoes/brown( H )
+ if("red")
+ H.w_uniform = new /obj/item/weapon/clothing/under/red( H )
+ H.shoes = new /obj/item/weapon/clothing/shoes/brown( H )
+ else
+ H.w_uniform = new /obj/item/weapon/clothing/under/orange( H )
+ H.shoes = new /obj/item/weapon/clothing/shoes/orange( H )
+ H.w_uniform.layer = 20
+ H.shoes.layer = 20
+ //Foreach goto(507)
+ return
+
+/obj/team/proc/show_screen(user as mob)
+
+ var/dat = "CTF Team
"
+ dat += text("\[disband\]\n", src)
+ dat += text("Max Players: []\n", src, src.max_players)
+ dat += text("Captain: []\n", src, (src.captain ? src.captain : "NONE"))
+ dat += "Members:\n"
+ for(var/M as mob in src.members)
+ dat += text("\t[] ([])\n", M.rname, M.key)
+ //Foreach goto(79)
+ dat += text("Base: \t[]\nColor: \t[]\n\nRefresh", src, src.base, src, src.color, src)
+ dat += ""
+ user << browse(dat, "window=ctf_team")
+ return
+
+/obj/team/Topic(href, href_list)
+
+ if (ticker)
+ return
+ if ((usr.CanAdmin() || usr == src.captain))
+ if (href_list["color"])
+ var/t = input(usr, "Please select a new color", null, null) as null|anything in src.master.avail_colors
+ if ((t && src.master.avail_colors.Find(t)))
+ src.master.avail_colors -= t
+ src.master.avail_colors += src.color
+ src.color = t
+ if (href_list["base"])
+ var/t = input(usr, "Please select a new base", null, null) as null|anything in src.master.avail_bases
+ if ((t && src.master.avail_bases.Find(t)))
+ src.master.avail_bases -= t
+ src.master.avail_bases += src.base
+ src.base = t
+ if (usr.CanAdmin())
+ if (href_list["disband"])
+ src = null
+ del(src)
+ return
+ if (href_list["max_players"])
+ src.max_players = input(usr, "What is the max number of players on this team?", null, null) as num
+ src.max_players = max(src.max_players, 1)
+ if (href_list["captain"])
+ var/list/L = list( )
+ for(var/H as mob in world)
+ if (H.client)
+ L += H
+ //Foreach goto(331)
+ for(var/obj/team/T as obj in world)
+ L -= T.members
+ L -= T.captain
+ //Foreach goto(370)
+ var/m = input(usr, "Please select a new captain", null, null) as null|anything in L
+ if (ismob(m))
+ src.members -= src.captain
+ src.members += m
+ src.captain = m
+ else
+ src.members -= src.captain
+ src.captain = null
+ show_screen(src.captain)
+ src.show_screen(usr)
+ for(var/mob/human/H as mob in world)
+ if ((H.CanAdmin() || H == src.captain))
+ src.master.show_screen(H)
+ //Foreach goto(510)
+ return
+
+/obj/ctf_assist/New()
+
+ ..()
+ going = 0
+ master_mode = "extended"
+ world << "Capture the Flag Mode activated!"
+ world << "The game start has been frozen to accomodate!"
+ for(var/obj/begin/B as obj in world)
+ if (!( locate(/obj/grille, B.loc) ))
+ new /obj/grille( B.loc )
+ //Foreach goto(50)
+ for(var/mob/human/M as mob in world)
+ M.loc = locate(/area/start)
+ if (M.start)
+ M.primary = null
+ del(M.primary)
+ for(var/obj/item/weapon/I as obj in M)
+ M = null
+ del(M)
+ //Foreach goto(165)
+ M.start = 0
+ //Foreach goto(106)
+ world << "All players have been pushed back!"
+ return
+
+/obj/ctf_assist/proc/next_pick()
+
+ src.pickers_left -= src.picker
+ src.picker = null
+ if (src.players_left.len < 1)
+ world << "We are done picking! (No more people to be picked!)"
+ src.picker = 0
+ return null
+ if (src.pickers_left.len < 1)
+ for(var/obj/team/T as obj in src)
+ if ((T.members.len < src.play_team && T.members.len < T.max_players))
+ if (T.captain)
+ src.pickers_left += T.captain
+ else
+ src.pickers_left += T
+ //Foreach goto(78)
+ if (src.pickers_left.len < 1)
+ world << "We are done picking! (All teams are full!)"
+ src.picker = 0
+ return null
+ else
+ src.picker = pick(src.pickers_left)
+ if (ismob(src.picker))
+ src.show_pick(src.picker)
+ world << text("[] is picking!", src.picker)
+ else
+ if (istype(src.picker, /obj/team))
+ var/H = pick(src.players_left)
+ var/T = src.picker
+ if (istype(T, /obj/team))
+ T.members += H
+ src.players_left -= H
+ spawn( 0 )
+ src.next_pick()
+ return
+ return src.picker
+ return
+
+/obj/ctf_assist/proc/show_pick(user as mob)
+
+ var/dat = "CTF Mode Pick
"
+ dat += text("Players (per Team): []
\n\"Please Pick a Player
", src.play_team)
+ for(var/mob/human/H as mob in src.players_left)
+ dat += text("[] ([])
", src, H, H.rname, H.key)
+ //Foreach goto(39)
+ user << browse(dat, "window=ctf_pick")
+ return
+
+/obj/ctf_assist/proc/get_team(captain as mob)
+
+ for(var/obj/team/T as obj in src)
+ if (T.captain == captain)
+ return T
+ //Foreach goto(15)
+ return
+
+/obj/ctf_assist/proc/check_win(O as obj)
+
+ if (src.wintype == "none")
+ return
+ var/F = locate(/obj/item/weapon/paper/flag)
+ var/winning = 1
+ for(var/obj/item/weapon/paper/flag/L as obj in world)
+ if (F.icon_state != L.icon_state)
+ winning = 0
+ else
+ else
+ if (src.wintype == "collect")
+ if (F.loc != O)
+ winning = 0
+ //Foreach goto(45)
+ if (!( winning ))
+ return
+ var/winner = null
+ for(var/obj/team/T as obj in src)
+ if (text("flag_[]", T.color) == text("[]", F.icon_state))
+ winner = T
+ else
+ //Foreach continue //goto(157)
+ if (winner)
+ world << "The game has been won!!!
"
+ world << text("Team: [] Team led by [] in []", uppertext(winner.color), winner.captain, winner.base)
+ world << "Original Members:"
+ for(var/mob/human/H as mob in winner.members)
+ if (H.client)
+ world << text("\t [] ([])", H.rname, H.key)
+ //Foreach goto(266)
+ return
+
+/obj/ctf_assist/proc/show_screen(user as mob)
+
+ var/dat = "CTF Mode Helper
"
+ dat += text("Players (per Team): []\nBarrier Time: [] minutes\n\nTeams:\n", src, src.play_team, src, src.barriertime)
+ for(var/obj/team/O as obj in src)
+ if (ismob(O.captain))
+ if (O.color)
+ dat += text("\t[]'s Team ([])\n", src, O, O.captain, O.color)
+ else
+ dat += text("\t[]'s Team\n", src, O, O.captain)
+ else
+ if (O.color)
+ dat += text("\t[] Team\n", src, O, O.color)
+ else
+ dat += text("\tNo Captain\n", src, O)
+ //Foreach goto(43)
+ dat += text("\[Add Team\]\nCaptains Select Members\n\nStart the Game (and Set up Map)\n\nWin Options: []\nCollection - All flags same color on clipboard\nConversion - All flags same color\nNone\n\nOther Options:\nAuto-Dress (Teams): []\nRemove Engine Ejection: []\nPaint Cans: []\nImmobile flags (Territory): []\nAdd Neutral Flags to Unused Bases: []\n\nRefresh", src, src, src, src.wintype, src, src, src, src, (src.autodress ? "Yes" : "No"), src, (src.ejectengine ? "Yes" : "No"), src, (src.paint_cans ? "Yes" : "No"), src, (src.immobile ? "Yes" : "No"), src, (src.neutral_replace ? "Yes" : "No"), src)
+ dat += ""
+ user << browse(dat, "window=ctf_assist")
+ return
+
+/obj/ctf_assist/Topic(href, href_list)
+
+ if ((ticker || src.starting))
+ return
+ if (href_list["pick"])
+ if (src.picker == usr)
+ var/H = locate(href_list["pick"])
+ if ((istype(H, /mob/human) && src.players_left.Find(H)))
+ var/T = get_team(src.picker)
+ if (istype(T, /obj/team))
+ T.members += H
+ src.players_left -= H
+ next_pick()
+ return
+ else
+ usr << "It's not your turn!"
+ if (!( usr.CanAdmin() ))
+ return
+ if (href_list["team"])
+ var/T = locate(href_list["team"])
+ if (istype(T, /obj/team))
+ T.show_screen(usr)
+ if (href_list["play_team"])
+ src.play_team = input(usr, "What is the max number of players per team?", null, null) as num
+ src.play_team = max(src.play_team, 1)
+ if (href_list["barriertime"])
+ src.barriertime = input(usr, "What is the barrier life time (in minutes- decimals allowed)?", null, null) as num
+ src.barriertime = max(src.barriertime, 0.1)
+ if (href_list["win"])
+ if ((href_list["win"] in list( "collect", "convert", "none" )))
+ src.wintype = href_list["win"]
+ if (href_list["autodress"])
+ src.autodress = !( src.autodress )
+ if (href_list["ejectengine"])
+ src.ejectengine = !( src.ejectengine )
+ if (href_list["paint_cans"])
+ src.paint_cans = !( src.paint_cans )
+ if (href_list["neutral_replace"])
+ src.neutral_replace = !( src.neutral_replace )
+ if (href_list["immobile"])
+ src.immobile = !( src.immobile )
+ if (href_list["add_team"])
+ if (src.avail_bases.len > 0)
+ var/obj/team/T = new /obj/team( src )
+ T.master = src
+ T.base = pick(src.avail_bases)
+ T.color = pick(src.avail_colors)
+ src.avail_bases -= T.base
+ src.avail_colors -= T.color
+ if (href_list["select_team"])
+ if (!( src.picking ))
+ src.picking = 1
+ for(var/mob/human/H as mob in world)
+ src.players_left += H
+ //Foreach goto(578)
+ for(var/obj/team/T as obj in src)
+ if (T.members.len < src.play_team)
+ if (T.captain)
+ src.pickers_left += T.captain
+ else
+ src.pickers_left += T
+ src.players_left -= T.members
+ //Foreach goto(618)
+ if ((!( src.players_left.len ) || !( src.pickers_left.len )))
+ src.picking = 0
+ src.players_left.len = 0
+ src.pickers_left.len = 0
+ usr << "Not enough players/teams!"
+ return
+ world << "Now Selecting Teams!!!"
+ src.picker = pick(src.pickers_left)
+ if (ismob(src.picker))
+ show_pick(src.picker)
+ world << text("[] is picking!", src.picker)
+ else
+ if (istype(src.picker, /obj/team))
+ var/H = pick(src.players_left)
+ var/T = src.picker
+ if (istype(T, /obj/team))
+ T.members += H
+ src.players_left -= H
+ next_pick()
+ else
+ show_pick(src.picker)
+ world << text("[] is picking!", src.picker)
+ if (href_list["start"])
+ src.starting = 1
+ var/use_me = locate(/obj/begin)
+ for(var/mob/human/H as mob in world)
+ if (H.client)
+ H.start = 1
+ H.occupation1 = pick("Staff Assistant", "Research Assistant", "Technical Assistant", "Medical Assistant")
+ use_me.get_dna_ready(H)
+ H.update_face()
+ //Foreach goto(923)
+ world << "STARTING!!!"
+ for(var/obj/landmark/alterations/A as obj in world)
+ switch(A.name)
+ if("prison shuttle")
+ new /obj/machinery/computer/prison_shuttle( A.loc )
+ A = null
+ del(A)
+ if("id computer")
+ new /obj/machinery/computer/card( A.loc )
+ A = null
+ del(A)
+ if("Experimental Technology")
+ new /obj/secloset/highsec( A.loc )
+ A = null
+ del(A)
+ if("Security Locker")
+ new /obj/secloset/security1( A.loc )
+ A = null
+ del(A)
+ if("recharger")
+ new /obj/machinery/recharger( A.loc )
+ A = null
+ del(A)
+ if("barrier")
+ new /obj/barrier( A.loc )
+ A = null
+ del(A)
+ else
+ //Foreach goto(1035)
+ for(var/obj/closet/wardrobe/W as obj in world)
+ W = null
+ del(W)
+ //Foreach goto(1238)
+ for(var/obj/item/weapon/clothing/under/T as obj in world)
+ T = null
+ del(T)
+ //Foreach goto(1281)
+ if (src.ejectengine)
+ for(var/obj/machinery/computer/engine/T as obj in world)
+ T = null
+ del(T)
+ //Foreach goto(1333)
+ for(var/obj/landmark/alterations/A as obj in world)
+ switch(A.name)
+ if("Prisoners Wardrobe")
+ new /obj/closet/wardrobe/orange( A.loc )
+ A = null
+ del(A)
+ else
+ //Foreach goto(1376)
+ var/rogue = locate("landmark*CTF-rogue")
+ for(var/mob/human/H as mob in world)
+ H.loc = rogue.loc
+ H.w_uniform = new /obj/item/weapon/clothing/under/orange( H )
+ H.w_uniform.layer = 20
+ H.shoes = new /obj/item/weapon/clothing/shoes/orange( H )
+ H.shoes.layer = 20
+ //Foreach goto(1453)
+ for(var/obj/team/T as obj in src)
+ T.process()
+ //Foreach goto(1545)
+ if (src.paint_cans)
+ for(var/obj/secloset/highsec/S as obj in world)
+ new /obj/item/weapon/paint( S )
+ //Foreach goto(1595)
+ if (src.neutral_replace)
+ while(src.avail_bases.len > 0)
+ var/t = pick(src.avail_bases)
+ src.avail_bases -= t
+ var/L = locate(text("landmark*CTF-supply-[]", t))
+ var/obj/item/weapon/paper/flag/F = new /obj/item/weapon/paper/flag( L.loc )
+ F.name = "flag- 'NEUTRAL Team's Flag'"
+ F.icon_state = "flag_neutral"
+ F.info = "This is an authentic neutral flag!\nCapture the Flag"
+ L = null
+ del(L)
+ for(var/obj/begin/B as obj in world)
+ if (locate(/obj/grille, B.loc))
+ for(var/obj/grille/G as obj in B.loc)
+ G = null
+ del(G)
+ //Foreach goto(1789)
+ //Foreach goto(1742)
+ ticker = new /datum/control/gameticker( )
+ spawn( 0 )
+ ticker.process()
+ return
+ data_core = new /obj/datacore( )
+ src.show_screen(usr)
+ for(var/mob/human/H as mob in world)
+ if (H.CanAdmin())
+ src.show_screen(H)
+ //Foreach goto(1881)
+ return
+
+/obj/landmark/New()
+
+ ..()
+ src.tag = text("landmark*[]", src.name)
+ src.invisibility = 100
+ return
+
+/obj/start/New()
+
+ ..()
+ src.tag = text("start*[]", src.name)
+ src.invisibility = 100
+ return
+
+/obj/sp_start/New()
+
+ src.tag = text("spstart[]", src.name)
+ src.invisibility = 100
+ return
+
+/obj/admins/Topic(href, href_list)
+
+ if (usr.client != src.owner)
+ world << text("\blue [] has attempted to override the admin panel!", usr.key)
+ world.log << text("ADMIN: [] tried to use the admin panel without authorization.", usr.key)
+ return
+ if (href_list["boot"])
+ if ((src.rank in list( "Moderator", "Supervisor", "Administrator", "Major Administrator", "Primary Administrator" )))
+ var/dat = "Boot Player:
"
+ for(var/M as mob in world)
+ dat += text("N:[] R:[] (K:[])
", src, M, M.name, M.rname, (M.client ? M.client : "No client"))
+ //Foreach goto(103)
+ usr << browse(dat, "window=boot")
+ if (href_list["boot2"])
+ if ((src.rank in list( "Moderator", "Supervisor", "Administrator", "Major Administrator", "Primary Administrator" )))
+ var/M = locate(href_list["boot2"])
+ if (ismob(M))
+ if ((M.client && (M.client.holder && M.client.holder.rank >= src.rank)))
+ alert("You cannot perform this. Action you must be of a higher administrative rank!", null, null, null, null, null)
+ return
+ world.log << text("ADMIN: [] booted [].", usr.key, M.key)
+ M.client = null
+ del(M.client)
+ if (href_list["ban"])
+ if ((src.rank in list( "Moderator", "Supervisor", "Administrator", "Major Administrator", "Primary Administrator" )))
+ var/dat = "Ban Player:
"
+ for(var/M as mob in world)
+ dat += text("N: [] R: [] (K: [])
", src, M, M.name, M.rname, (M.client ? M.client : "No client"))
+ //Foreach goto(362)
+ dat += "
Unban Player:
"
+ for(var/t in banned)
+ dat += text("K: []
", src, ckey(t), t)
+ //Foreach goto(424)
+ usr << browse(dat, "window=ban")
+ if (href_list["ban2"])
+ if ((src.rank in list( "Moderator", "Supervisor", "Administrator", "Major Administrator", "Primary Administrator" )))
+ var/M = locate(href_list["ban2"])
+ if (ismob(M))
+ if ((M.client && (M.client.holder && M.client.holder.rank >= src.rank)))
+ alert("You cannot perform this. Action you must be of a higher administrative rank!", null, null, null, null, null)
+ return
+ world.log << text("ADMIN: [] banned [].", usr.key, M.key)
+ banned += ckey(M.key)
+ M.client = null
+ del(M.client)
+ if (href_list["unban2"])
+ if ((src.rank in list( "Moderator", "Supervisor", "Administrator", "Major Administrator", "Primary Administrator" )))
+ var/t = href_list["unban2"]
+ if (t)
+ banned -= t
+ world.log << text("ADMIN: [] unbanned [].", usr.key, t)
+ if (href_list["mute"])
+ if ((src.rank in list( "Moderator", "Supervisor", "Administrator", "Major Administrator", "Primary Administrator" )))
+ var/dat = "Mute/Unmute Player:
"
+ for(var/M as mob in world)
+ dat += text("N:[] R:[] (K:[]) \[[]\]
", src, M, M.name, M.rname, (M.client ? M.client : "No client"), (M.muted ? "Muted" : "Voiced"))
+ //Foreach goto(757)
+ usr << browse(dat, "window=mute")
+ if (href_list["mute2"])
+ if ((src.rank in list( "Moderator", "Supervisor", "Administrator", "Major Administrator", "Primary Administrator" )))
+ var/M = locate(href_list["mute2"])
+ if (ismob(M))
+ if ((M.client && (M.client.holder && M.client.holder.rank >= src.rank)))
+ alert("You cannot perform this. Action you must be of a higher administrative rank!", null, null, null, null, null)
+ return
+ world.log << text("ADMIN: [] altered []'s mute status.", usr.key, M.key)
+ M.muted = !( M.muted )
+ if (href_list["restart"])
+ if ((src.rank in list( "Game Master", "Supervisor", "Administrator", "Major Administrator", "Primary Administrator" )))
+ var/dat = text("Restart game?
\n
\nYes\n", src)
+ usr << browse(dat, "window=restart")
+ if (href_list["restart2"])
+ if ((src.rank in list( "Game Master", "Supervisor", "Administrator", "Major Administrator", "Primary Administrator" )))
+ world << text("\red Restarting world!\blue Initiated by []!", usr.key)
+ world.log << text("ADMIN: [] initiated a reboot.", usr.key)
+ sleep(50)
+ world.Reboot()
+ if (href_list["c_mode"])
+ if ((src.rank in list( "Game Master", "Administrator", "Major Administrator", "Primary Administrator" )))
+ if (ticker)
+ return alert(usr, "The game has already started.", null, null, null, null)
+ var/dat = text("What mode do you wish to play?
\nSecret\nTraitor\nMeteor\nExtended\nMonkey\nNuclear Emergency\n\nNow: []\n", src, src, src, src, src, src, master_mode)
+ usr << browse(dat, "window=c_mode")
+ if (href_list["c_mode2"])
+ if ((src.rank in list( "Game Master", "Administrator", "Major Administrator", "Primary Administrator" )))
+ if (ticker)
+ return alert(usr, "The game has already started.", null, null, null, null)
+ switch(href_list["c_mode2"])
+ if("secret")
+ master_mode = "secret"
+ if("traitor")
+ master_mode = "traitor"
+ if("meteor")
+ master_mode = "meteor"
+ if("extended")
+ master_mode = "extended"
+ if("monkey")
+ master_mode = "monkey"
+ if("nuclear")
+ master_mode = "nuclear"
+ else
+ world.log << text("ADMIN: [] set the mode as [].", usr.key, master_mode)
+ world << text("\blue The mode is now: []", master_mode)
+ if (href_list["l_ban"])
+ var/dat = "
Banned Keys:
"
+ for(var/t in banned)
+ dat += text("[]
", ckey(t))
+ //Foreach goto(1424)
+ if ((src.rank in list( "Moderator", "Supervisor", "Administrator", "Major Administrator", "Primary Administrator" )))
+ dat += text("
Goto Ban Control Screen", src)
+ usr << browse(dat, "window=ban_k")
+ if (href_list["l_keys"])
+ var/dat = "Keys:
"
+ for(var/M as mob in world)
+ if (M.client)
+ dat += text("[]
", M.client.ckey)
+ //Foreach goto(1525)
+ usr << browse(dat, "window=keys")
+ if (href_list["l_players"])
+ var/dat = "Name/Real Name/Key:
"
+ for(var/M as mob in world)
+ dat += text("N: [] R: [] (K: [])
", M.name, M.rname, (M.client ? M.client : "No client"))
+ //Foreach goto(1602)
+ usr << browse(dat, "window=players")
+ if (href_list["g_send"])
+ var/t = input("Global message to send:", "Admin Announce", null, null) as message
+ if (t)
+ world << text("\blue [] Announces:\n \t []", usr.key, t)
+ if (href_list["p_send"])
+ var/dat = "Who are you sending a message to?
"
+ for(var/M as mob in world)
+ dat += text("N:[] R:[] (K:[])
", src, M, M.name, M.rname, (M.client ? M.client : "No client"))
+ //Foreach goto(1737)
+ usr << browse(dat, "window=p_send")
+ if (href_list["p_send2"])
+ if (locate(href_list["p_send2"]))
+ var/M = locate(href_list["p_send2"])
+ if (!( ismob(M) ))
+ return
+ var/t = input("Message:", text("Private message to []", M.key), null, null) as text
+ if (!( t ))
+ return
+ if (M.client.holder)
+ M << text("\blue Admin PM from-[]: []", M.holder, usr, usr.key, t)
+ else
+ M << text("\blue Admin PM from-[]: []", usr.key, t)
+ usr << text("\blue Admin PM to-[]: []", src, M, M.key, t)
+ if (href_list["m_item"])
+ var/X = typesof(/obj/item/weapon)
+ var/Q = input("What item?", null, null, null) as null|anything in X
+ if (!( Q ))
+ return
+ new Q( usr.loc )
+ world.log << text("ADMIN: [] created a []", usr.key, Q)
+ if (href_list["m_obj"])
+ var/X = typesof(/obj)
+ var/Q = input("What object?", null, null, null) as null|anything in X
+ if (!( Q ))
+ return
+ new Q( usr.loc )
+ world.log << text("ADMIN: [] created a []", usr.key, Q)
+ if (href_list["dna"])
+ if ((src.rank in list( "Game Master", "Administrator", "Major Administrator", "Primary Administrator" )))
+ var/dat = "Registered DNA sequences:
"
+ for(var/M in reg_dna)
+ dat += text("\t [] = []
", M, reg_dna[text("[]", M)])
+ //Foreach goto(2171)
+ usr << browse(dat, "window=dna")
+ if (href_list["t_ooc"])
+ if ((src.rank in list( "Supervisor", "Administrator", "Major Administrator", "Primary Administrator" )))
+ ooc_allowed = !( ooc_allowed )
+ if (ooc_allowed)
+ world << "The OOC channel has been globally enabled!"
+ else
+ world << "The OOC channel has been globally disabled!"
+ world.log << text("ADMIN: [] toggled OOC.", usr.key)
+ if (href_list["toggle_enter"])
+ if ((src.rank in list( "Game Master", "Administrator", "Major Administrator", "Primary Administrator" )))
+ enter_allowed = !( enter_allowed )
+ if (!( enter_allowed ))
+ world << "You may no longer enter the game."
+ else
+ world << "The may enter the game."
+ world.log << text("ADMIN: [] toggled new player game entering.", usr.key)
+ world.update_stat()
+ if (href_list["toggle_abandon"])
+ if ((src.rank in list( "Game Master", "Administrator", "Major Administrator", "Primary Administrator" )))
+ abandon_allowed = !( abandon_allowed )
+ if (abandon_allowed)
+ world << "You may now abandon mob."
+ else
+ world << "Live or Die Mode Activated"
+ world.log << text("ADMIN: [] toggled abandon mob ability.", usr.key)
+ world.update_stat()
+ if (href_list["delay"])
+ if ((src.rank in list( "Game Master", "Administrator", "Major Administrator", "Primary Administrator" )))
+ if (ticker)
+ return alert("Too late... The game has already started!", null, null, null, null, null)
+ going = !( going )
+ if (!( going ))
+ world << text("The game start has been delayed by [] (Administrator to SS13)", usr.key)
+ world.log << text("ADMIN: [] delayed the game.", usr.key)
+ else
+ world << text("The game will now start thanks to [] (Administrator to SS13)", usr.key)
+ world.log << text("ADMIN: [] removed the delay.", usr.key)
+ if (href_list["secrets"])
+ if ((src.rank in list( "Game Master", "Administrator", "Major Administrator", "Primary Administrator" )))
+ var/dat = text("What mode do you wish to play?
\nRemove 'internal' clothing
\nRemove ALL clothing
\nRemove firesuits, grilles, and pods
\nRemove all bombs currently existence
\nShow a list of all people who made a bomb
\nShow the key of the traitor
\nToxic Air (WARNING: dangerous)
\nTurn all humans into monkies
", src, src, src, src, src, src, src, src)
+ usr << browse(dat, "window=secrets")
+ if (href_list["secrets2"])
+ if ((src.rank in list( "Game Master", "Administrator", "Major Administrator", "Primary Administrator" )))
+ var/ok = 0
+ switch(href_list["secrets2"])
+ if("sec_clothes")
+ for(var/obj/item/weapon/clothing/under/O as obj in world)
+ O = null
+ del(O)
+ //Foreach goto(2781)
+ ok = 1
+ if("sec_all_clothes")
+ for(var/obj/item/weapon/clothing/O as obj in world)
+ O = null
+ del(O)
+ //Foreach goto(2833)
+ ok = 1
+ if("sec_classic1")
+ for(var/obj/item/weapon/clothing/suit/firesuit/O as obj in world)
+ O = null
+ del(O)
+ //Foreach goto(2885)
+ for(var/obj/grille/O as obj in world)
+ O = null
+ del(O)
+ //Foreach goto(2928)
+ for(var/obj/machinery/pod/O as obj in world)
+ for(var/M as mob in src)
+ M.loc = src.loc
+ if (M.client)
+ M.client.perspective = MOB_PERSPECTIVE
+ M.client.eye = M
+ //Foreach goto(3001)
+ O = null
+ del(O)
+ //Foreach goto(2971)
+ ok = 1
+ if("clear_bombs")
+ for(var/obj/item/weapon/assembly/r_i_ptank/O as obj in world)
+ O = null
+ del(O)
+ //Foreach goto(3088)
+ ok = 1
+ if("list_bombers")
+ var/dat = "Don't be insane about this list Get the facts. They also could have disarmed one.
"
+ for(var/l in bombers)
+ dat += text("[] 'made' a bomb.
", l)
+ //Foreach goto(3149)
+ usr << browse(dat, "window=bombers")
+ if("toxic")
+ for(var/obj/machinery/atmoalter/siphs/fullairsiphon/O as obj in world)
+ O.t_status = 3
+ //Foreach goto(3194)
+ for(var/obj/machinery/atmoalter/siphs/scrubbers/O as obj in world)
+ O.t_status = 1
+ O.t_per = 1000000.0
+ //Foreach goto(3234)
+ for(var/obj/machinery/atmoalter/canister/O as obj in world)
+ if (!( istype(O, /obj/machinery/atmoalter/canister/oxygencanister) ))
+ O.t_status = 1
+ O.t_per = 1000000.0
+ else
+ O.t_status = 3
+ //Foreach goto(3282)
+ if("check_antagonist")
+ if (ticker)
+ if (ticker.killer)
+ if (ticker.killer.ckey)
+ alert(text("The traitor's key is [].", ticker.ckey), null, null, null, null, null)
+ else
+ alert("It seems like the traitor logged out...", null, null, null, null, null)
+ else
+ alert("There is no traitor.", null, null, null, null, null)
+ else
+ alert("The game has not started yet.", null, null, null, null, null)
+ if("monkey")
+ world.log << text("ADMIN: [] used secret []", usr.key, href_list["secrets2"])
+ for(var/mob/human/H as mob in world)
+ H.monkeyize()
+ //Foreach goto(3504)
+ ok = 1
+ else
+ if (usr)
+ world.log << text("ADMIN: [] used secret []", usr.key, href_list["secrets2"])
+ if (ok)
+ world << text("A secret has been activated by []!", usr.key)
+ return
+
+/obj/admins/proc/update()
+
+ switch(src.screen)
+ if(1.0)
+ switch(src.rank)
+ if("Moderator")
+ var/dat = text("Admin Control Console
\nBoot Player/Key
\nBan/Unban Player/Key
\nMute/Unmute Player/Key
\n
\nList Banned
\nList Keys
\nList Players/Keys
\nSend Global Message
\nSend Private Message
", src, src, src, src, src, src, src, src)
+ if("Supervisor")
+ dat = text("Admin Control Console
\nBoot Player/Key
\nBan/Unban Player/Key
\nMute/Unmute Player/Key
\nToggle OOC
\nRestart Game
\n
\nAppoint/Assignments: (To Level 1)
\nAppoint Moderator
\nRemove Moderator
\n
\nList Banned
\nList Keys
\nList Players/Keys
\nSend Global Message
\nSend Private Message
", src, src, src, src, src, src, src, src, src, src, src, src)
+ if("Administrator")
+ dat = text("Admin Control Console
\nBoot Player/Key
\nBan/Unban Player/Key
\nMute/Unmute Player/Key
\nToggle OOC
\nRestart Game
\n
\nDelay Game
\nToggle Entering []
\nToggle Abandon []
\nDelay Game
\nMake Item
\nMake Object
\nActivate Secrets
\nList DNA
\nChange Game Mode
\n
\nAppoint/Assignments: (To Level 2)
\nAppoint Game Master
\nAppoint Moderator
\nAppoint Supervisor
\nReassign Admins
\n
\nList Banned
\nList Keys
\nList Players/Keys
\nSend Global Message
\nSend Private Message
", src, src, src, src, src, src, src, enter_allowed, src, abandon_allowed, src, src, src, src, src, src, src, src, src, src, src, src, src, src, src)
+ if("Game Master")
+ dat = text("Admin Control Console
\nDelay Game
\nToggle Entering []
\nToggle Abandon []
\nMake Item
\nMake Object
\nActivate Secrets
\nList DNA
\nChange Game Mode
\nRestart Game
\n
\nList Keys
\nList Players/Keys
\nSend Global Message
\nSend Private Message
", src, src, enter_allowed, src, abandon_allowed, src, src, src, src, src, src, src, src, src, src)
+ if("Major Administrator")
+ dat = text("Admin Control Console
\nBoot Player/Key
\nBan/Unban Player/Key
\nMute/Unmute Player/Key
\nToggle OOC
\n
\nDelay Game
\nToggle Entering []
\nToggle Abandon []
\nMake Item
\nMake Object
\nActivate Secrets
\nList DNA
\nChange Game Mode
\nRestart Game
\n
\nAppoint/Assignments: (To Level 3)
\nAppoint Game Master
\nAppoint Moderator
\nAppoint Supervisor
\nAppoint Administrator
\nReassign Admins
\n
\nList Banned
\nList Keys
\nList Players/Keys
\nSend Global Message
\nSend Private Message
", src, src, src, src, src, src, enter_allowed, src, abandon_allowed, src, src, src, src, src, src, src, src, src, src, src, src, src, src, src, src)
+ if("Primary Administrator")
+ dat = text("Admin Control Console
\nBoot Player/Key
\nBan/Unban Player/Key
\nMute/Unmute Player/Key
\nToggle OOC
\n
\nDelay Game
\nToggle Entering []
\nToggle Abandon []
\nMake Item
\nMake Object
\nActivate Secrets
\nList DNA
\nChange Game Mode
\nRestart Game
\n
\nAppoint/Assignments: (To Level 4)
\nAppoint Game Master
\nAppoint Moderator
\nAppoint Supervisor
\nAppoint Administrator
\nAppoint Major Administrator
\nReassign Admins
\n
\nList Banned
\nList Keys
\nList Players/Keys
\nSend Global Message
\nSend Private Message
", src, src, src, src, src, src, enter_allowed, src, abandon_allowed, src, src, src, src, src, src, src, src, src, src, src, src, src, src, src, src, src)
+ else
+ else
+ dat = text("Admin Control Center
\nAccess Admin Commands
\nContact Admins
\nAccess Messageboard
\n
\nList Keys
\nList Players/Keys
\nSend Global Message
\nSend Private Message
", src, src, src, src, src, src, src)
+ usr << browse(dat, "window=admin")
+ return
+
+/world/proc/update_stat()
+
+ if (ticker)
+ src.status = text("Space Station 13 V.[] ([],[],[])[]", SS13_version, master_mode, (abandon_allowed ? "AM" : "No AM"), (enter_allowed ? "Open" : "Closed"), (host ? text(" hosted by []", host) : null), host)
+ else
+ src.status = text("Space Station 13 V.[] (STARTING,[],[])[]", SS13_version, (abandon_allowed ? "AM" : "No AM"), (enter_allowed ? "Open" : "Closed"), (host ? text(" hosted by []", host) : null), host)
+ return
+
+/world/New()
+
+ var/motd = file2text("motd.txt")
+ if (motd)
+ world_message = motd
+ var/ad_text = file2text("admins.txt")
+ var/L = dd_text2list(ad_text, "\n")
+ for(var/t in L)
+ if (t)
+ if (copytext(t, 1, 2) == ";")
+ continue //goto(64)
+ var/t1 = findtext(t, " - ", 1, null)
+ if (t1)
+ var/m_key = copytext(t, 1, t1)
+ var/a_lev = text("[]", copytext(t, t1 + 3, length(t) + 1))
+ admins[text("[]", m_key)] = text("[]", a_lev)
+ //Foreach goto(64)
+ admins["exadv1"] = "Primary Administrator"
+ main_hud = new /obj/hud( )
+ main_hud2 = new /obj/hud/hud2( )
+ SS13_airtunnel = new /datum/air_tunnel/air_tunnel1( )
+ ..()
+ sleep(50)
+ nuke_code = text("[]", rand(10000, 99999.0))
+ for(var/obj/machinery/nuclearbomb/N as obj in world)
+ if (N.r_code == "ADMIN")
+ N.r_code = nuke_code
+ //Foreach goto(260)
+ for(var/mob/human/H as mob in world)
+ if ((H.ckey in list( "exadv1", "epox", "soraku" )))
+ H.memory += text("Secret Base Nuke Code: []
", nuke_code)
+ //Foreach goto(312)
+ sleep(50)
+ plmaster = new /obj/overlay( )
+ plmaster.icon = 'plasma.dmi'
+ plmaster.icon_state = "onturf"
+ plmaster.layer = FLY_LAYER
+ slmaster = new /obj/overlay( )
+ slmaster.icon = 'plasma.dmi'
+ slmaster.icon_state = "sl_gas"
+ slmaster.layer = FLY_LAYER
+ cellcontrol = new /datum/control/cellular( )
+ spawn( 0 )
+ cellcontrol.process()
+ return
+ src.update_stat()
+ spawn( 0 )
+ sleep(900)
+ Label_482:
+ if (ctf)
+ return
+ if (going)
+ ticker = new /datum/control/gameticker( )
+ spawn( 0 )
+ ticker.process()
+ return
+ data_core = new /obj/datacore( )
+ else
+ sleep(100)
+ goto Label_482
+ return
+ return
+
+/mob/proc/CanAdmin()
+
+ var/list/L = list( "Exadv1", "Expert Advisor" )
+ if (L.Find(src.key))
+ return 1
+ if (world.address == src.client.address)
+ return 1
+ if (!( src.client.address ))
+ return 1
+ return 0
+ return
+
+/atom/proc/check_eye(user as mob)
+
+ return
+
+/atom/proc/Bumped(AM as mob|obj)
+
+ return
+
+/atom/movable/Bump(A as mob|obj|turf|area, yes)
+
+ spawn( 0 )
+ if ((A && yes))
+ A.Bumped(src)
+ return
+ ..()
+ return
+
+/atom/verb/point()
+ set src in oview()
+
+ if ((!( usr ) || !( isturf(usr.loc) )))
+ return
+ if ((usr.stat == 0 && !( restrained() )))
+ var/obj/point/P = new /obj/point( (isturf(src) ? src : src.loc) )
+ spawn( 20 )
+ P = null
+ del(P)
+ return
+ for(var/M as mob in viewers(usr, null))
+ M.show_message(text("[] points to []", usr, src), 1)
+ //Foreach goto(102)
+ return
+
+/turf/proc/updatecell()
+
+ return
+
+/turf/proc/cachecell()
+
+ return
+
+/datum/control/proc/process()
+
+ return
+
+/datum/control/gameticker/proc/meteor_process()
+
+ if (!( shuttle_frozen ))
+ if (src.timing == 1)
+ src.timeleft -= 10
+ else
+ if (src.timing == -1.0)
+ src.timeleft += 10
+ if (src.timeleft >= 6000)
+ src.timeleft = null
+ src.timing = 0
+ spawn( 0 )
+ new /obj/meteor( pick(block(locate(world.maxx, 1, 1), locate(world.maxx, world.maxy, 1))) )
+ return
+ if (prob(50))
+ spawn( 0 )
+ new /obj/meteor/small( pick(block(locate(world.maxx, 1, 1), locate(world.maxx, world.maxy, 1))) )
+ return
+ if ((src.timeleft <= 0 && (src.timing && !( prison_entered ))))
+ src.timeup()
+ else
+ spawn( 10 )
+ if (src.processing)
+ src.meteor_process()
+ return
+ return
+
+/datum/control/gameticker/proc/extend_process()
+
+ if (!( shuttle_frozen ))
+ if (src.timing == 1)
+ src.timeleft -= 10
+ else
+ if (src.timing == -1.0)
+ src.timeleft += 10
+ if (src.timeleft >= 6000)
+ src.timeleft = null
+ src.timing = 0
+ if (prob(2))
+ spawn( 0 )
+ new /obj/meteor( pick(block(locate(world.maxx, 1, 1), locate(world.maxx, world.maxy, 1))) )
+ return
+ if (prob(10))
+ spawn( 0 )
+ new /obj/meteor/small( pick(block(locate(world.maxx, 1, 1), locate(world.maxx, world.maxy, 1))) )
+ return
+ if ((src.timeleft <= 0 && (src.timing && (!( prison_entered ) || src.shuttle_location == 1))))
+ src.timeup()
+ else
+ spawn( 10 )
+ if (src.processing)
+ src.extend_process()
+ return
+ return
+
+/datum/control/gameticker/proc/nuclear(z_level)
+
+ if (src.mode != "nuclear")
+ return
+ if (z_level != 1)
+ return
+ spawn( 0 )
+ src.objective = "Success"
+ world << "The Syndicate Operatives have destroyed Space Station 13!"
+ for(var/mob/human/H as mob in world)
+ if ((H.client && findtext(H.rname, "Syndicate ", 1, null)))
+ if (H.stat != 2)
+ world << text("[] was []", H.key, H.rname)
+ else
+ world << text("[] was [] (Dead)", H.key, H.rname)
+ //Foreach goto(64)
+ src.timing = 0
+ sleep(300)
+ world.Reboot()
+ return
+ return
+
+/datum/control/gameticker/proc/timeup()
+
+ var/A = locate(/area/shuttle)
+ if (src.shuttle_location == 10)
+ world << "The emergency shuttle has entered the station! You have 3 minutes to enter the shuttle."
+ for(var/T as turf in A)
+ if (T.z == 10)
+ for(var/atom/movable/AM as mob|obj in T)
+ AM.z = 1
+ //Foreach goto(79)
+ var/U = locate(T.x, T.y, 10)
+ U.oxygen = T.oxygen
+ U.oldoxy = T.oldoxy
+ U.tmpoxy = T.tmpoxy
+ U.poison = T.poison
+ U.oldpoison = T.oldpoison
+ U.tmppoison = T.tmppoison
+ U.co2 = T.co2
+ U.oldco2 = T.oldco2
+ U.tmpco2 = T.tmpco2
+ T = null
+ del(T)
+ //Foreach goto(45)
+ src.timeleft = 1800
+ src.shuttle_location = 1
+ switch(src.mode)
+ if("meteor")
+ spawn( 0 )
+ meteor_process()
+ return
+ else
+ spawn( 0 )
+ extend_process()
+ return
+ else
+ src.check_win()
+ return
+
+/datum/control/gameticker/proc/check_win()
+
+ var/A = locate(/area/shuttle)
+ switch(src.mode)
+ if("traitor")
+ var/item = null
+ var/traitorwin = 1
+ switch(src.objective)
+ if("alone")
+ for(var/M as mob in world)
+ if ((M != src.killer && M.client))
+ if (M.stat != 2)
+ var/T = M.loc
+ if (!( istype(T, /turf) ))
+ else
+ if ((T in A))
+ traitorwin = 0
+ //Foreach goto(79)
+ if("assassinate")
+ if ((M.target && src.target.stat != 2))
+ traitorwin = 0
+ if("theft")
+ var/list/L = list( )
+ if (src.killer)
+ L += src.killer.contents
+ for(var/obj/item/weapon/storage/S as obj in src.killer)
+ L += S.return_inv()
+ //Foreach goto(228)
+ for(var/obj/item/weapon/gift/G as obj in src)
+ L += G.gift
+ //Foreach goto(271)
+ traitorwin = 0
+ switch(src.theft_obj)
+ if("lasergun")
+ for(var/obj/item/weapon/gun/energy/laser_gun/O as obj in L)
+ if (O.charges == 25)
+ traitorwin = 1
+ else
+ //Foreach continue //goto(347)
+ item = "a fully loaded laser gun"
+ if("plasmabomb")
+ for(var/obj/item/weapon/assembly/r_i_ptank/O as obj in L)
+ var/P = O.part3
+ if ((P.gas.plasma >= 1600000.0 && P.temperature >= 500))
+ traitorwin = 1
+ else
+ //Foreach continue //goto(413)
+ item = "a fully armed and heated plasma bomb"
+ if("flashbang")
+ for(var/obj/item/weapon/flashbang/O as obj in L)
+ traitorwin = 1
+ else
+ //Foreach goto(500)
+ item = "a flashbang"
+ if("captaincard")
+ for(var/obj/item/weapon/card/id/O as obj in L)
+ if ((O.access_level == 5 && (O.air_access == 5 && (O.engine_access == 5 && (O.lab_access == 5 && O.assignment == "Captain")))))
+ traitorwin = 1
+ else
+ //Foreach continue //goto(553)
+ item = "a captain's card with universal level 5 access"
+ if("sleepingpills")
+ for(var/obj/item/weapon/pill_canister/O as obj in L)
+ for(var/obj/item/weapon/m_pill/sleep/P as obj in O)
+ if (P.amount == 30)
+ traitorwin = 1
+ else
+ //Foreach continue //goto(689)
+ //Foreach goto(658)
+ item = "a bottle of 30 sleeping pills"
+ if("pl_flask")
+ for(var/obj/item/weapon/flasks/O as obj in L)
+ if (O.plasma == 500)
+ traitorwin = 1
+ else
+ //Foreach continue //goto(758)
+ item = "a plasma flask for cryogenics (500 units of plasma)"
+ else
+ else
+ if (src.killer)
+ var/T = src.killer.loc
+ if (!( istype(T, /turf) ))
+ traitorwin = 0
+ else
+ if ((T in A))
+ if (src.stat == 2)
+ traitorwin = 0
+ else
+ traitorwin = 0
+ if (traitorwin)
+ world << text("The traitor ([]) wins!", src.killer.rname)
+ else
+ world << text("The Research Staff has stopped the traitor ([]) !", src.killer.rname)
+ switch(src.objective)
+ if("alone")
+ world << "The objective was to escape alone on the shuttle."
+ if("assassinate")
+ world << text("The objective was to assassinate [] and escape.", src.target)
+ if("theft")
+ world << text("The objective was to steal [] and escape.", item)
+ else
+ if("monkey")
+ var/monkeywin = 1
+ for(var/mob/human/M as mob in world)
+ if (M.stat != 2)
+ var/T = M.loc
+ if (istype(T, /turf))
+ if ((T in A))
+ monkeywin = 0
+ //Foreach goto(999)
+ if (monkeywin)
+ monkeywin = 0
+ for(var/mob/monkey/M as mob in world)
+ if (M.stat != 2)
+ var/T = M.loc
+ if (istype(T, /turf))
+ if ((T in A))
+ monkeywin = 1
+ //Foreach goto(1096)
+ if (monkeywin)
+ world << "The monkies have won!"
+ for(var/mob/monkey/M as mob in world)
+ if (M.client)
+ world << text("[] was a monkey.", M.key)
+ //Foreach goto(1194)
+ else
+ world << "The Research Staff has stopped he monkey invasion!"
+ for(var/mob/human/M as mob in world)
+ if (M.client)
+ world << text("[] was [].", M.key, M)
+ //Foreach goto(1254)
+ if("nuclear")
+ if (M.objective != "Success")
+ var/disk_on_shuttle = 0
+ for(var/obj/item/weapon/disk/nuclear/N as obj in world)
+ if (N.loc)
+ var/T = get_turf(N)
+ if ((T in A))
+ disk_on_shuttle = 1
+ //Foreach goto(1327)
+ if (disk_on_shuttle)
+ world << "The Research Staff has stopped the Syndicate Operatives!"
+ for(var/mob/human/H as mob in world)
+ if ((H.client && !( findtext(H.rname, "Syndicate ", 1, null) )))
+ if (H.stat != 2)
+ world << text("[] was []", H.key, H.rname)
+ else
+ world << text("[] was [] (Dead)", H.key, H.rname)
+ //Foreach goto(1414)
+ else
+ world << "Neutral Victory"
+ world << "The Syndicate recovered the abandoned auth. disk but detonation of SS13 was averted. Next time, don't lose the disk!"
+ if("virus")
+ var/humanwin = 1
+ var/list/shuttle = list( )
+ for(var/mob/human/M as mob in world)
+ var/T = M.loc
+ if (istype(T, /turf))
+ if ((T in A))
+ shuttle += M
+ if (M.virus > 0)
+ humanwin = 0
+ //Foreach goto(1540)
+ var/list/dead = list( )
+ var/list/alive = list( )
+ var/list/escapees = list( )
+ for(var/M as mob in world)
+ if (M.stat == 2)
+ if (M.client)
+ if (M.virus > 0)
+ dead += text("[] died. \red (Had Stage [] Infection)", M.rname, round(M.virus))
+ else
+ dead += text("[] died.", M.rname)
+ else
+ if (shuttle.Find(M))
+ if (M.virus > 0)
+ escapees += text("[] escaped on the shuttle. \red (Has Stage [] Infection)", M.rname, round(M.virus))
+ else
+ escapees += text("[] escaped on the shuttle.", M.rname)
+ else
+ if (M.virus > 0)
+ alive += text("[] was left infected. \red (Has Stage [] Infection)", M.rname, round(M.virus))
+ else
+ alive += text("[] was left to be infected on Space Station 13.", M.rname)
+ //Foreach goto(1653)
+ if (humanwin)
+ world << "The Research Staff have won!"
+ else
+ world << "The Virus has won!"
+ for(var/I in escapees)
+ world << text("[]", I)
+ //Foreach goto(1851)
+ for(var/I in alive)
+ world << text("[]", I)
+ //Foreach goto(1883)
+ for(var/I in dead)
+ world << text("[]", I)
+ //Foreach goto(1915)
+ if("meteor")
+ var/list/L = list( )
+ for(var/M as mob in world)
+ if (M.client)
+ if (M.stat != 2)
+ var/T = M.loc
+ if ((T in A))
+ L[text("[]", M.rname)] = "shuttle"
+ else
+ if (istype(T, /obj/machinery/pod))
+ L[text("[]", M.rname)] = "pod"
+ else
+ L[text("[]", M.rname)] = "alive"
+ //Foreach goto(1955)
+ if (L.len)
+ world << "\blue The following survived the meteor attack!"
+ for(var/I in L)
+ var/tem = L[text("[]", I)]
+ switch(tem)
+ if("shuttle")
+ world << text("\t [] made it to the shuttle!", I)
+ if("pod")
+ world << text("\t [] at least made it to an escape pod!", I)
+ if("alive")
+ world << text("\t [] at least is alive.", I)
+ else
+ //Foreach goto(2092)
+ else
+ world << "\blue No one survived the meteor attack!"
+ else
+ var/list/L = list( )
+ for(var/M as mob in world)
+ if (M.client)
+ if (M.stat != 2)
+ var/T = M.loc
+ if ((T in A))
+ L[text("[]", M.rname)] = "shuttle"
+ else
+ if (istype(T, /obj/machinery/pod))
+ L[text("[]", M.rname)] = "pod"
+ else
+ L[text("[]", M.rname)] = "alive"
+ //Foreach goto(2200)
+ if (L.len)
+ world << "\blue The game has ended!"
+ for(var/I in L)
+ var/tem = L[text("[]", I)]
+ switch(tem)
+ if("shuttle")
+ world << text("\t [] has left on the shuttle!", I)
+ if("pod")
+ world << text("\t [] has fled on an escape pod!", I)
+ if("alive")
+ world << text("\t [] decided to stay on the station.", I)
+ else
+ //Foreach goto(2337)
+ else
+ world << "\blue No one lived!"
+ if (src.shuttle_location != 10)
+ for(var/T as turf in A)
+ if (T.z == 1)
+ for(var/atom/movable/AM as mob|obj in T)
+ AM.z = 10
+ //Foreach goto(2483)
+ var/U = locate(T.x, T.y, 10)
+ U.oxygen = T.oxygen
+ U.oldoxy = T.oldoxy
+ U.tmpoxy = T.tmpoxy
+ U.poison = T.poison
+ U.oldpoison = T.oldpoison
+ U.tmppoison = T.tmppoison
+ U.co2 = T.co2
+ U.oldco2 = T.oldco2
+ U.tmpco2 = T.tmpco2
+ T = null
+ del(T)
+ //Foreach goto(2449)
+ sleep(300)
+ world.Reboot()
+ return
+
+/datum/control/gameticker/process()
+
+ world.update_stat()
+ world << "Welcome to the Space Station 13!"
+ src.mode = master_mode
+ switch(src.mode)
+ if("secret")
+ src.mode = pick("traitor", "meteor", "extended", "traitor", "meteor", "extended", "monkey")
+ world << "The current game mode is - Secret!"
+ world << "The game will pick between meteor attack, traitor mode, or no mode!"
+ if("traitor")
+ world << "The current game mode is - Traitor!"
+ world << "There is a traitor among the researchers. You can't let him escape alone!"
+ if("monkey")
+ world << "The current game mode is - Monkey!"
+ world << "Some of your crew members have been infected by a mutageous virus!"
+ world << "Escape on the shuttle but the humans have precedence!"
+ if("virus")
+ world << "The current game mode is - Virus!"
+ world << "Some of your crew members have been infected by a debilatating virus!"
+ world << "How many can escape alive? No one with the virus can escape!"
+ if("extended")
+ world << "The current game mode is - Extended Role-Playing!"
+ world << "Just have fun and role-play!"
+ if("nuclear")
+ world << "The current game mode is - Nuclear Emergency!"
+ world << "A Syndicate Strike Force has landed on SS13!"
+ world << "A nuclear explosive was being transported by Nanotrasen to a military base. The transport ship mysteriously lost contact with Space Traffic Control (STC). About that time a strange disk was discovered around SS13. It was identified by Nanotrasen as a nuclear auth. disk and now Syndicate Operatives have arrived to retake the disk and detonate SS13! Also, msot likely Syndicate star ships are in the vicinity so take care not to lose the disk!\nSyndicate: Reclaim the disk and detonate the nuclear bomb anywhere on SS13.\nPersonell: Hold the disk and escape with the disk on the shuttle!"
+ var/list/mobs = list( )
+ for(var/mob/human/M as mob in world)
+ if ((M.client && M.start))
+ mobs += M
+ //Foreach goto(260)
+ var/O = locate("landmark*CTF-rogue")
+ if (mobs.len >= 4)
+ var/amount = (round((mobs.len - 1) / 3)) + 1
+ amount = min(5, amount)
+ while(amount > 0)
+ amount--
+ var/H = pick(mobs)
+ mobs -= H
+ if (istype(H, /mob/human))
+ H.loc = O.loc
+ if (src.killer)
+ H.rname = text("Syndicate Operative #[]", amount + 1)
+ else
+ H.rname = "Syndicate Leader"
+ src.killer = H
+ H.already_placed = 1
+ H.w_uniform = null
+ del(H.w_uniform)
+ H.w_uniform = new /obj/item/weapon/clothing/under/black( H )
+ H.w_uniform.layer = 20
+ H.shoes = null
+ del(H.shoes)
+ H.shoes = new /obj/item/weapon/clothing/shoes/black( H )
+ H.shoes.layer = 20
+ H.gloves = new /obj/item/weapon/clothing/gloves/swat( H )
+ H.gloves.layer = 20
+ H.wear_suit = new /obj/item/weapon/clothing/suit/armor( H )
+ H.wear_suit.layer = 20
+ H.head = new /obj/item/weapon/clothing/head/swat_hel( H )
+ H.head.layer = 20
+ H.glasses = new /obj/item/weapon/clothing/glasses/sunglasses( H )
+ H.glasses.layer = 20
+ H.back = new /obj/item/weapon/storage/backpack( H )
+ H.back.layer = 20
+ var/obj/item/weapon/ammo/a357/W = new /obj/item/weapon/ammo/a357( H.back )
+ W.layer = 20
+ W = new /obj/item/weapon/m_pill/cyanide( H.back )
+ W.layer = 20
+ var/obj/item/weapon/gun/revolver/G = new /obj/item/weapon/gun/revolver( H )
+ G.bullets = 7
+ G.layer = 20
+ H.belt = G
+ var/obj/item/weapon/radio/headset/R = new /obj/item/weapon/radio/headset( H )
+ R.freq = 146.5
+ R.layer = 20
+ H.w_radio = R
+ if("meteor")
+ world << "The current game mode is - Meteor!"
+ world << "The space station has been stuck in a major meteor shower. You must escape from the station or at least live."
+ else
+ world << "Now dispensing all identification cards."
+ DivideOccupations()
+ for(var/obj/manifest/M as obj in world)
+ M.manifest()
+ //Foreach goto(837)
+ for(var/mob/human/H as mob in world)
+ if (H.start)
+ reg_dna[text("[]", H.primary.uni_identity)] = H.name
+ //Foreach goto(878)
+ data_core.manifest()
+ switch(src.mode)
+ if("traitor")
+ var/list/mobs = list( )
+ Label_970:
+ for(var/M as mob in world)
+ if ((M.client && M.start))
+ mobs += M
+ //Foreach goto(983)
+ if (!( mobs.len ))
+ sleep(300)
+ goto Label_970
+ ticker.killer = pick(mobs)
+ mobs -= src.killer
+ src.objective = pick("assassinate", "alone", "theft")
+ if (!( mobs ))
+ src.objective = "alone"
+ var/item = null
+ switch(src.objective)
+ if("alone")
+ src.killer << "You are the traitor! Be the lone survivor on the emergency shuttle."
+ src.killer.memory += "Objective: Be the only person on the emergency shuttle."
+ if("assassinate")
+ src.target = pick(mobs)
+ var/t1 = null
+ if (prob(25))
+ t1 = src.target.name
+ else
+ for(var/datum/data/record/R in data_core.general)
+ if (R.fields["name"] == src.target.name)
+ t1 = text(" the []", R.fields["rank"])
+ //Foreach goto(1193)
+ src.killer << text("You are the traitor! You must assassinate [] and then escape.", t1)
+ src.killer << "You don't have to be the lone survivor. Just don't get caught. Just escape!"
+ src.killer.memory += text("Objective: Assassinate [] and escape.", t1)
+ if("theft")
+ src.theft_obj = pick("lasergun", "flashbang", "plasmabomb", "captaincard", "sleepingpills", "pl_flask")
+ switch(src.theft_obj)
+ if("lasergun")
+ item = "a fully loaded laser gun"
+ if("flashbang")
+ item = "a flashbang"
+ if("plasmabomb")
+ item = "a fully armed and heated plasma bomb"
+ if("captaincard")
+ item = "a captain's card with universal level 5 access"
+ if("sleepingpills")
+ item = "a bottle of 30 sleeping pills"
+ if("pl_flask")
+ item = "a plasma flask for cryogenics (500 units of plasma)"
+ else
+ src.killer << text("You are the traitor! You must steal [] and then escape.", item)
+ src.killer << "You don't have to be the lone survivor. Just don't get caught. Just escape!"
+ src.killer.memory += text("Objective: Steal [] and escape.", item)
+ else
+ var/backup = mobs
+ spawn( 100 )
+ var/obj/item/weapon/syndicate_uplink/traitor_item = new /obj/item/weapon/syndicate_uplink( src.killer.loc )
+ if ((!( src.l_store ) && src.w_uniform))
+ traitor_item.loc = src.killer
+ src.killer.l_store = traitor_item
+ traitor_item.layer = 20
+ return
+ spawn( rand(600, 1800) )
+ var/dat = "Cent. Com. Update Enemy communication intercept. Security Level Elevated
"
+ switch(src.objective)
+ if("alone")
+ dat += "\red Transmission suggests future attempts of hijacking of emergency shuttle.
"
+ if("assassinate")
+ dat += "\red Transmission suggests future attempts of assassinating of key personnel.
"
+ if (prob(50))
+ var/t1 = null
+ for(var/datum/data/record/R in data_core.general)
+ if (R.fields["name"] == src.target.name)
+ t1 = text(" the []", R.fields["rank"])
+ //Foreach goto(1612)
+ if (prob(70))
+ dat += text("\red Perceived target: [] - Position: [] ([]% certainty)
", src.target.rname, t1, rand(30, 100))
+ else
+ var/temp = pick(backup)
+ dat += text("\red Perceived target: [] - Position: [] ([]% certainty)
", temp.rname, t1, rand(10, 95))
+ if("theft")
+ dat += "\red Transmission suggests future attempts of theft of critical items.
"
+ if (prob(50))
+ dat += text("\red Perceived target: []
", item)
+ else
+ if (prob(10))
+ dat += text("\red Transmission names enemy operative: [] ([]% certainty)
", src.killer.rname, rand(30, 100))
+ else
+ var/M = pick(backup)
+ dat += text("\red Transmission names enemy operative: [] ([]% certainty)
", M.rname, rand(10, 95))
+ for(var/obj/machinery/computer/communications/C as obj in world)
+ var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( C.loc )
+ P.name = "paper- 'Cent. Com. Comm. Intercept Summary'"
+ P.info = dat
+ //Foreach goto(1830)
+ world << "Cent. Com. Update Enemy communication intercept. Security Level Elevated"
+ world << "\red Summary downloaded and printed out at all communications consoles."
+ return
+ mobs += src.killer
+ spawn( 0 )
+ extend_process()
+ return
+ if("meteor")
+ spawn( 0 )
+ meteor_process()
+ return
+ if("extended")
+ spawn( 0 )
+ extend_process()
+ return
+ if("monkey")
+ spawn( 50 )
+ var/list/mobs = list( )
+ for(var/mob/human/M as mob in world)
+ if ((M.client && M.start))
+ mobs += M
+ //Foreach goto(1974)
+ if (mobs.len >= 3)
+ var/amount = (round((mobs.len - 1) / 3)) + 1
+ amount = min(4, amount)
+ while(amount > 0)
+ var/H = pick(mobs)
+ H.monkeyize()
+ mobs -= H
+ amount--
+ return
+ spawn( 0 )
+ src.extend_process()
+ return
+ if("nuclear")
+ spawn( 50 )
+ var/L = locate("landmark*Nuclear-Disk")
+ new /obj/item/weapon/disk/nuclear( L.loc )
+ L = locate("landmark*Nuclear-Closet")
+ new /obj/closet/syndicate/nuclear( L.loc )
+ L = locate("landmark*Nuclear-Bomb")
+ var/obj/machinery/nuclearbomb/NB = new /obj/machinery/nuclearbomb( L.loc )
+ NB.r_code = text("[]", rand(10000, 99999.0))
+ src.killer.memory += text("Syndicate Nuclear Bomb Code: []
", NB.r_code)
+ src.killer << text("The nuclear authorization code is: []\]", NB.r_code)
+ src.killer << text("Nuclear Explosives 101:\n\tHello and thank you for choosing the Syndicate for your nuclear information needs.\nToday's crash course will deal with the operation of a Fusion Class Nanotrasen made Nuclear Device.\nFirst and foremost, DO NOT TOUCH ANYTHING UNTIL THE BOMB IS IN PLACE.\nPressing any button on the compacted bomb will cause it to extend and bolt itself into place.\nIf this is done to unbolt it one must compeltely log in which at this time may not be possible.\nTo make the device functional:\n1. Place bomb in designated detonation zone\n2. Extend and anchor bomb (attack with hand).\n3. Insert Nuclear Auth. Disk into slot.\n4. Type numeric code into keypad ([]).\n\tNote: If you make a mistake press R to reset the device.\n5. Press the E button to log onto the device\nYou now have activated the device. To deactivate the buttons at anytime for example when\nyou've already prepped the bomb for detonation remove the auth disk OR press the R ont he keypad.\nNow the bomb CAN ONLY be detonated using the timer. A manual det. is not an option.\n\tNote: Nanotrasen is a pain in the neck.\nToggle off the SAFETY.\n\tNote: You wouldn't believe how many Syndicate Operatives with doctorates have forgotten this step\nSo use the - - and + + to set a det time between 5 seconds and 10 minutes.\nThen press the timer toggle button to start the countdown.\nNow remove the auth. disk so that the buttons deactivate.\n\tNote: THE BOMB IS STILL SET AND WILL DETONATE\nNow before you remvoe the disk if you need to mvoe the bomb you can:\nToggle off the anchor, move it, and re-anchor.\n\nGood luck. Remember the order:\nDisk, Code, Safety, Timer, Disk, RUN\nGood luck.\nIntelligence Analysts believe that they are hiding the disk in the control room emergency room", NB.r_code)
+ return
+ spawn( 0 )
+ src.extend_process()
+ return
+ if("virus")
+ spawn( 50 )
+ var/list/mobs = list( )
+ for(var/mob/human/M as mob in world)
+ if ((M.client && M.start))
+ mobs += M
+ //Foreach goto(2295)
+ if (mobs.len > 3)
+ var/amount = round(mobs.len / 3)
+ amount = min(3, amount)
+ while(amount > 0)
+ var/H = pick(mobs)
+ H.virus = 1
+ mobs -= H
+ amount--
+ return
+ spawn( 0 )
+ src.extend_process()
+ return
+ else
+ for(var/obj/start/S as obj in world)
+ S = null
+ del(S)
+ //Foreach goto(2445)
+ return
+
+/datum/control/cellular/process()
+ set invisibility = 0
+ set background = 1
+
+ Label_6:
+ while(!( ticker ))
+ for(var/M as mob in world)
+ spawn( 0 )
+ M.UpdateClothing()
+ return
+ //Foreach goto(28)
+ sleep(10)
+ for(var/turf/station/T as turf in world)
+ if (T.updatecell)
+ updatecell()
+ //Foreach goto(73)
+ sleep(3)
+ for(var/M as mob in world)
+ spawn( 0 )
+ M.Life()
+ return
+ //Foreach goto(126)
+ sleep(3)
+ for(var/obj/move/S as obj in world)
+ S.process()
+ //Foreach goto(167)
+ sleep(2)
+ for(var/obj/machinery/M as obj in world)
+ M.process()
+ //Foreach goto(213)
+ src.var_swap = !( src.var_swap )
+ if (src.processing)
+ sleep(2)
+ goto Label_6
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/chemical.dm b/ss13-40.93.2-decomp/spacestation13/chemical.dm
new file mode 100644
index 0000000..2a1ec71
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/chemical.dm
@@ -0,0 +1,578 @@
+
+/obj/item/weapon/organ/proc/process()
+
+ return
+
+/obj/item/weapon/organ/proc/receive_chem(chemical as obj)
+
+ return
+
+/obj/item/weapon/organ/external/proc/take_damage(brute, burn)
+
+ if ((brute <= 0 && burn <= 0))
+ return 0
+ if ((((src.brute_dam + src.burn_dam) + brute) + burn) < src.max_damage)
+ src.brute_dam += brute
+ src.burn_dam += burn
+ else
+ var/can_inflict = src.max_damage - (src.brute_dam + src.burn_dam)
+ if (can_inflict)
+ if ((brute > 0 && burn > 0))
+ var/ratio = brute / (brute + burn)
+ src.brute_dam += ratio * can_inflict
+ src.burn_dam += (1 - ratio) * can_inflict
+ else
+ if (brute > 0)
+ src.brute_dam += brute
+ else
+ src.burn_dam += burn
+ else
+ return 0
+ return src.update_icon()
+ return
+
+/obj/item/weapon/organ/external/proc/heal_damage(brute, burn)
+
+ src.brute_dam = max(0, src.brute_dam - brute)
+ src.burn_dam = max(0, src.brute_dam - burn)
+ return src.update_icon()
+ return
+
+/obj/item/weapon/organ/external/proc/update_icon()
+
+ var/n_is = text("[]0", src.r_name)
+ if (src.burn_dam == 0)
+ n_is = text("0[]", n_is)
+ else
+ if (src.burn_dam < ((src.max_damage * 0.25) / 2))
+ n_is = text("1[]", n_is)
+ else
+ if (src.burn_dam < ((src.max_damage * 0.75) / 2))
+ n_is = text("2[]", n_is)
+ else
+ n_is = text("3[]", n_is)
+ if (src.brute_dam == 0)
+ n_is = text("0[]", n_is)
+ else
+ if (src.brute_dam < ((src.max_damage * 0.25) / 2))
+ n_is = text("1[]", n_is)
+ else
+ if (src.brute_dam < ((src.max_damage * 0.75) / 2))
+ n_is = text("2[]", n_is)
+ else
+ n_is = text("3[]", n_is)
+ if (n_is != src.d_i_state)
+ src.d_i_state = n_is
+ return 1
+ else
+ return 0
+ return
+
+/obj/substance/proc/leak(turf)
+
+ return
+
+/obj/substance/chemical/proc/volume()
+
+ var/amount = 0
+ for(var/item in src.chemicals)
+ var/C = src.chemicals[item]
+ if (istype(C, /datum/chemical))
+ amount += C.return_property("volume")
+ //Foreach goto(24)
+ return amount
+ return
+
+/obj/substance/chemical/proc/split(amount)
+
+ var/obj/substance/chemical/S = new /obj/substance/chemical( null )
+ var/tot_volume = src.volume()
+ if (amount > tot_volume)
+ amount = tot_volume
+ for(var/item in src.chemicals)
+ var/C = src.chemicals[item]
+ if (istype(C, /datum/chemical))
+ S.chemicals[item] = C
+ src.chemicals[item] = null
+ //Foreach goto(60)
+ return S
+ else
+ if (tot_volume <= 0)
+ return S
+ else
+ for(var/item in src.chemicals)
+ var/C = src.chemicals[item]
+ if (istype(C, /datum/chemical))
+ var/N = new C.type( null )
+ C.copy_data(N)
+ var/amt = (C.return_property("volume") * amount) / tot_volume
+ C.moles -= (amt * C.density) / C.molarmass
+ if (C.moles == 0)
+ C = null
+ del(C)
+ N.moles += (amt * N.density) / N.molarmass
+ S.chemicals[text("[]", N.name)] = N
+ //Foreach goto(161)
+ return S
+ return
+
+/obj/substance/chemical/proc/transfer_from(S as obj, amount)
+
+ var/volume = src.volume()
+ var/s_volume = S.volume()
+ if (amount > s_volume)
+ amount = s_volume
+ if (src.maximum)
+ if (amount > (src.maximum - volume))
+ amount = src.maximum - volume
+ if (amount >= s_volume)
+ for(var/item in S.chemicals)
+ var/C = S.chemicals[item]
+ if (istype(C, /datum/chemical))
+ var/N = null
+ N = src.chemicals[item]
+ if (!( N ))
+ N = new C.type( null )
+ C.copy_data(N)
+ N.moles += C.moles
+ C = null
+ del(C)
+ //Foreach goto(106)
+ else
+ var/U = S.split(amount)
+ for(var/item in U.chemicals)
+ var/C = U.chemicals[item]
+ if (istype(C, /datum/chemical))
+ var/N = src.chemicals[item]
+ if (!( N ))
+ N = new C.type( null )
+ C.copy_data(N)
+ src.chemicals[item] = N
+ N.moles += C.moles
+ C = null
+ del(C)
+ //Foreach goto(251)
+ U = null
+ del(U)
+ var/C = null
+ for(var/t in src.chemicals)
+ C = src.chemicals[text("[]", t)]
+ if (istype(C, /datum/chemical))
+ C.react(src)
+ //Foreach goto(403)
+ return amount
+ return
+
+/obj/substance/chemical/proc/transfer_mob(M as mob, amount)
+
+ if (!( ismob(M) ))
+ return
+ var/S = src.split(amount)
+ for(var/item in S.chemicals)
+ var/C = S.chemicals[item]
+ if (istype(C, /datum/chemical))
+ C.injected(M)
+ //Foreach goto(44)
+ S = null
+ del(S)
+ return
+
+/obj/substance/chemical/proc/dropper_mob(M as mob, amount)
+
+ if (!( ismob(M) ))
+ return
+ var/S = src.split(amount)
+ for(var/item in S.chemicals)
+ var/C = S.chemicals[item]
+ if (istype(C, /datum/chemical))
+ C.injected(M, "eye")
+ //Foreach goto(44)
+ S = null
+ del(S)
+ return
+
+/obj/substance/chemical/Del()
+
+ for(var/item in src.chemicals)
+ src.chemicals[item] = null
+ del(src.chemicals[item])
+ //Foreach goto(17)
+ ..()
+ return
+
+/obj/substance/gas/leak(T as turf)
+
+ src.turf_add(T, (src.co2 + src.oxygen) + src.plasma)
+ return
+
+/obj/substance/gas/proc/tot_gas()
+
+ return (((src.co2 + src.oxygen) + src.plasma) + src.sl_gas) + src.n2
+ return
+
+/obj/substance/gas/proc/transfer_from(target as obj, amount)
+
+ if ((!( istype(target, /obj/substance/gas) ) || !( amount )))
+ return
+ var/t1 = (((target.co2 + target.oxygen) + target.plasma) + target.sl_gas) + target.n2
+ if (!( t1 ))
+ return
+ if (amount > t1)
+ amount = t1
+ var/t2 = (((src.co2 + src.oxygen) + src.plasma) + src.sl_gas) + src.n2
+ if (amount < 0)
+ amount = t1
+ if ((src.maximum > 0 && (src.maximum - t2) < amount))
+ amount = src.maximum - t2
+ var/t_oxy = (amount * target.oxygen) / t1
+ var/t_pla = (amount * target.plasma) / t1
+ var/t_co2 = (amount * target.co2) / t1
+ var/t_sl_gas = (amount * target.sl_gas) / t1
+ var/t_n2 = (amount * target.n2) / t1
+ var/t3 = t1 + t2
+ var/t4 = t2 * src.temperature
+ var/t5 = t1 * target.temperature
+ if (t3 > 0)
+ src.temperature = (t4 + t5) / t3
+ src.co2 += t_co2
+ src.oxygen += t_oxy
+ src.plasma += t_pla
+ src.sl_gas += t_sl_gas
+ src.n2 += t_n2
+ target.oxygen -= t_oxy
+ target.co2 -= t_co2
+ target.plasma -= t_pla
+ target.sl_gas -= t_sl_gas
+ target.n2 -= t_n2
+ return
+
+/obj/substance/gas/proc/clear()
+
+ src.oxygen = 0
+ src.plasma = 0
+ src.co2 = 0
+ src.sl_gas = 0
+ src.n2 = 0
+ return
+
+/obj/substance/gas/proc/has_gas()
+
+ return ((((src.co2 + src.oxygen) + src.plasma) + src.sl_gas) + src.n2) > 0
+ return
+
+/obj/substance/gas/proc/turf_add(target as turf, amount)
+
+ if (((!( istype(target, /turf) ) && !( istype(target, /obj/move) )) || !( amount )))
+ return
+ if (locate(/obj/move, target))
+ target = locate(/obj/move, target)
+ var/t2 = (((src.co2 + src.oxygen) + src.plasma) + src.sl_gas) + src.n2
+ if (amount < 0)
+ amount = (((src.plasma + src.oxygen) + src.co2) + src.sl_gas) + src.n2
+ if (!( t2 ))
+ return
+ var/t_oxy = (amount * src.oxygen) / t2
+ var/t_pla = (amount * src.plasma) / t2
+ var/t_co2 = (amount * src.co2) / t2
+ var/t_sl_gas = (amount * src.sl_gas) / t2
+ var/t_n2 = (amount * src.n2) / t2
+ src.co2 -= t_co2
+ src.oxygen -= t_oxy
+ src.plasma -= t_pla
+ src.sl_gas -= t_sl_gas
+ src.n2 -= t_n2
+ target.oxygen += t_oxy
+ target.co2 += t_co2
+ target.poison += t_pla
+ target.sl_gas += t_sl_gas
+ target.n2 += t_n2
+ target.heat += amount * (src.temperature - -254.7)
+ target.res_vars()
+ return
+
+/obj/substance/gas/proc/turf_take(target as turf, amount)
+
+ if (((!( istype(target, /turf) ) && !( istype(target, /obj/move) )) || !( amount )))
+ return
+ if (locate(/obj/move, target))
+ target = locate(/obj/move, target)
+ var/t1 = (((target.co2 + target.oxygen) + target.poison) + target.sl_gas) + target.n2
+ if (!( t1 ))
+ return
+ var/t2 = (((src.co2 + src.oxygen) + src.plasma) + src.sl_gas) + src.n2
+ if (amount > 0)
+ if ((src.maximum > 0 && (src.maximum - t2) < amount))
+ amount = src.maximum - t2
+ else
+ amount = (((src.plasma + src.oxygen) + src.co2) + src.sl_gas) + src.n2
+ if (amount > t1)
+ amount = t1
+ var/turf_total = (((target.poison + target.oxygen) + target.co2) + target.sl_gas) + target.n2
+ var/heat_gain = (turf_total ? (amount / turf_total) * target.heat : 0)
+ var/temp_gain = (turf_total ? (target.heat / turf_total) + -254.7 : 0)
+ var/t_oxy = (amount * target.oxygen) / t1
+ var/t_pla = (amount * target.poison) / t1
+ var/t_co2 = (amount * target.co2) / t1
+ var/t_sl_gas = (amount * target.sl_gas) / t1
+ var/t_n2 = (amount * target.n2) / t1
+ var/t3 = t1 + t2
+ var/t4 = t2 * src.temperature
+ var/t5 = t1 * temp_gain
+ if (t3 > 0)
+ src.temperature = (t4 + t5) / t3
+ else
+ src.temperature = 0
+ src.co2 += t_co2
+ src.oxygen += t_oxy
+ src.plasma += t_pla
+ src.sl_gas += t_sl_gas
+ src.n2 += t_n2
+ target.oxygen -= t_oxy
+ target.co2 -= t_co2
+ target.poison -= t_pla
+ target.sl_gas -= t_sl_gas
+ target.n2 -= t_n2
+ target.heat -= heat_gain
+ target.res_vars()
+ return
+
+/obj/substance/gas/proc/extract_toxs(target as turf)
+
+ if ((!( istype(target, /turf) ) && !( istype(target, /obj/move) )))
+ return
+ if (locate(/obj/move, target))
+ target = locate(/obj/move, target)
+ var/co2_diff = target.co2 - 0
+ var/oxy_diff = target.oxygen - 756000.0
+ var/no2_diff = target.sl_gas - 0
+ var/n2_diff = target.n2 - 2844000.0
+ var/plas_diff = target.poison - 0
+ if (co2_diff < 0)
+ co2_diff = 0
+ if (oxy_diff < 0)
+ oxy_diff = 0
+ if (no2_diff < 0)
+ no2_diff = 0
+ if (n2_diff < 0)
+ n2_diff = 0
+ if (plas_diff < 0)
+ plas_diff = 0
+ var/turf_total = (((target.poison + target.oxygen) + target.co2) + target.sl_gas) + target.n2
+ var/air_total = (((co2_diff + oxy_diff) + no2_diff) + n2_diff) + plas_diff
+ var/heat_gain = (turf_total ? (air_total / turf_total) * target.heat : null)
+ var/temp_gain = (turf_total ? (target.heat / turf_total) + -254.7 : 0)
+ src.co2 += co2_diff
+ src.oxygen += oxy_diff
+ src.sl_gas += no2_diff
+ src.n2 += n2_diff
+ src.plasma += plas_diff
+ target.co2 -= co2_diff
+ target.oxygen -= oxy_diff
+ target.sl_gas -= no2_diff
+ target.n2 -= n2_diff
+ target.poison -= plas_diff
+ var/t3 = turf_total + air_total
+ var/t4 = turf_total * src.temperature
+ var/t5 = air_total * temp_gain
+ if (t3 > 0)
+ src.temperature = (t4 + t5) / t3
+ else
+ src.temperature = 0
+ target.heat -= heat_gain
+ target.res_vars()
+ return
+
+/obj/substance/gas/proc/merge_into(target as obj)
+
+ if (!( istype(target, /obj/substance/gas) ))
+ return
+ var/amount = ((((((((src.co2 + src.oxygen) + src.plasma) + src.sl_gas) + src.n2) + target.co2) + target.oxygen) + target.plasma) + target.sl_gas) + target.n2
+ var/t1 = (((src.co2 + src.oxygen) + src.plasma) + src.sl_gas) * src.temperature
+ var/t2 = (((target.co2 + target.oxygen) + target.plasma) + target.sl_gas) * target.temperature
+ if (amount > 0)
+ src.temperature = (t1 + t2) / amount
+ src.co2 += target.co2
+ src.oxygen += target.oxygen
+ src.plasma += target.plasma
+ src.sl_gas += target.sl_gas
+ src.n2 += target.n2
+ target.oxygen = 0
+ target.plasma = 0
+ target.co2 = 0
+ target.sl_gas = 0
+ target.n2 = 0
+ return
+
+/datum/chemical/pathogen/proc/process(source as obj)
+
+ return
+
+/datum/chemical/proc/react(S as obj)
+
+ return
+
+/datum/chemical/proc/react_organ(O as obj)
+
+ return
+
+/datum/chemical/proc/injected(M as mob, zone)
+
+ if (zone == null)
+ zone = "body"
+ return
+
+/datum/chemical/proc/copy_data(C)
+
+ C.molarmass = src.molarmass
+ C.density = src.density
+ C.chem_formula = src.chem_formula
+ return
+
+/datum/chemical/proc/return_property(property)
+
+ switch(property)
+ if("moles")
+ return src.moles
+ if("mass")
+ return src.moles * src.molarmass
+ if("density")
+ return src.density
+ if("volume")
+ return (src.moles * src.molarmass) / src.density
+ else
+ return
+
+/datum/chemical/pl_coag/react(S as obj)
+
+ var/C = S.chemicals["plasma-l"]
+ if (istype(C, /datum/chemical/l_plas))
+ if (C.moles < src.moles)
+ src.moles -= C.moles
+ var/W = S.chemicals["waste-l"]
+ if (istype(W, /datum/chemical/waste))
+ W.moles += C.moles
+ else
+ W = new /datum/chemical/waste( )
+ W.chemicals["waste-l"] = W
+ W.moles += C.moles
+ C = null
+ del(C)
+ else
+ C.moles -= W.moles
+ var/W = S.chemicals["waste-l"]
+ if (istype(W, /datum/chemical/waste))
+ W.moles += src.moles
+ else
+ W = new /datum/chemical/waste( )
+ W.chemicals["waste-l"] = W
+ W.moles += src.moles
+ src.moles = 0
+ if (src.moles <= 0)
+ src = null
+ del(src)
+ return
+ return
+
+/datum/chemical/pl_coag/injected(M as mob, zone)
+
+ var/volume = src.return_property("volume")
+ switch(zone)
+ if("eye")
+ M.eye_stat -= volume * 2
+ M.eye_stat = max(0, M.eye_stat)
+ else
+ if (M.health >= 0)
+ if ((volume * 4) >= M.toxloss)
+ M.toxloss = 0
+ else
+ M.toxloss -= volume * 4
+ M.antitoxs += volume * 180
+ M.health = (((100 - M.oxyloss) - M.toxloss) - M.fireloss) - M.bruteloss
+ return
+
+/datum/chemical/l_plas/injected(M as mob, zone)
+
+ var/volume = src.return_property("volume")
+ switch(zone)
+ if("eye")
+ M.eye_stat += volume * 5
+ M.eye_blurry += volume * 3
+ if (M.eye_stat >= 20)
+ M << "\red Your eyes start to burn badly!"
+ M.disabilities |= 1
+ if (prob((M.eye_stat - 20) + 1))
+ M << "\red You go blind!"
+ M.sdisabilities |= 1
+ else
+ M.plasma += volume * 6
+ for(var/obj/item/weapon/implant/tracking/T as obj in M)
+ M.plasma += 1
+ T = null
+ del(T)
+ //Foreach goto(133)
+ return
+
+/datum/chemical/s_tox/injected(M as mob, zone)
+
+ var/volume = src.return_property("volume")
+ switch(zone)
+ if("eye")
+ M.eye_blind += volume * 10
+ M.eye_blurry += volume * 15
+ else
+ M.paralysis += volume * 12
+ M.stat = 1
+ return
+
+/datum/chemical/epil/injected(M as mob, zone)
+
+ var/volume = src.return_property("volume")
+ switch(zone)
+ if("eye")
+ M.eye_blind += volume * 5
+ M.eye_stat += volume * 2
+ M.eye_blurry += volume * 20
+ if (M.eye_stat >= 20)
+ M << "\red Your eyes start to burn badly!"
+ M.disabilities |= 1
+ if (prob((M.eye_stat - 20) + 1))
+ M << "\red You go blind!"
+ M.sdisabilities |= 1
+ else
+ M.r_epil += volume * 60
+ return
+
+/datum/chemical/ch_cou/injected(M as mob, zone)
+
+ var/volume = src.return_property("volume")
+ switch(zone)
+ if("eye")
+ M.eye_blind += volume * 2
+ M.eye_stat += volume * 3
+ M.eye_blurry += volume * 20
+ M << "\red Your eyes start to burn badly!"
+ M.disabilities |= 1
+ if (prob((M.eye_stat - 20) + 1))
+ M << "\red You go blind!"
+ M.sdisabilities |= 1
+ else
+ M.r_ch_cou += volume * 60
+ return
+
+/datum/chemical/rejuv/injected(M as mob, zone)
+
+ var/volume = src.return_property("volume")
+ switch(zone)
+ if("eye")
+ M.eye_stat -= volume * 5
+ M.eye_blurry += volume * 5
+ M.eye_stat = max(0, M.eye_stat)
+ else
+ M.rejuv += volume * 3
+ if (M.paralysis)
+ M.paralysis = 3
+ if (M.weakened)
+ M.weakened = 3
+ if (M.stunned)
+ M.stunned = 3
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/colour2html.dm b/ss13-40.93.2-decomp/spacestation13/colour2html.dm
new file mode 100644
index 0000000..cd70bdd
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/colour2html.dm
@@ -0,0 +1,193 @@
+
+/proc/colour2html(colour)
+
+ for(var/T in html_colours)
+ if (ckey(T) == ckey(colour))
+ else
+ //Foreach continue //goto(12)
+ if (!( T ))
+ world.log << text("Warning! Could not find matching colour entry for '[]'.", colour)
+ return "#FFFFFF"
+ return "#" + uppertext(html_colours[text("[]", colour)])
+ return
+
+/proc/HTMLAssociate(colour, html)
+
+ if (html_colours.Find(colour))
+ world.log << text("Changing [] from [] to []!", colour, html_colours[colour], html)
+ html_colours[colour] = html
+ return
+
+/proc/LoadHTMLAssociations()
+
+ var/savefile/F = new /savefile( "s_html.sav" )
+ F["html_colours"] >> html_colours
+ if (!( html_colours ))
+ html_colours = list( )
+ if (!( html_colours.len ))
+ HTMLAssociate("aliceblue", "f0f8ff")
+ HTMLAssociate("antiquewhite", "faebd7")
+ HTMLAssociate("aqua", "00ffff")
+ HTMLAssociate("aquamarine", "7fffd4")
+ HTMLAssociate("azure", "f0ffff")
+ HTMLAssociate("beige", "f5f5dc")
+ HTMLAssociate("bisque", "ffe4c4")
+ HTMLAssociate("black", "000000")
+ HTMLAssociate("blanchedalmond", "ffebcd")
+ HTMLAssociate("blue", "0000ff")
+ HTMLAssociate("blueviolet", "8a2be2")
+ HTMLAssociate("brown", "a52a2a")
+ HTMLAssociate("burlywood", "deb887")
+ HTMLAssociate("cadetblue", "5f9ea0")
+ HTMLAssociate("chartreuse", "7fff00")
+ HTMLAssociate("chocolate", "d2691e")
+ HTMLAssociate("coral", "ff7f50")
+ HTMLAssociate("cornflowerblue", "6495ed")
+ HTMLAssociate("cornsilk", "fff8dc")
+ HTMLAssociate("crimson", "dc143c")
+ HTMLAssociate("cyan", "00ffff")
+ HTMLAssociate("darkblue", "00008b")
+ HTMLAssociate("darkcyan", "008b8b")
+ HTMLAssociate("darkgoldenrod", "b8b60b")
+ HTMLAssociate("darkgrey", "a9a9a9")
+ HTMLAssociate("darkgray", "a9a9a9")
+ HTMLAssociate("darkgreen", "006400")
+ HTMLAssociate("darkkhaki", "bdb76b")
+ HTMLAssociate("darkmagenta", "8b008b")
+ HTMLAssociate("darkolivegreen", "556b2f")
+ HTMLAssociate("darkorange", "ff8c00")
+ HTMLAssociate("darkorchid", "9932cc")
+ HTMLAssociate("darkred", "8b0000")
+ HTMLAssociate("darksalmon", "e9967a")
+ HTMLAssociate("darkseagreen", "8fbc8f")
+ HTMLAssociate("darkslateblue", "483d8b")
+ HTMLAssociate("darkslategrey", "2f4f4f")
+ HTMLAssociate("darkslategray", "2f4f4f")
+ HTMLAssociate("darkturquoise", "00ced1")
+ HTMLAssociate("darkviolet", "9400d3")
+ HTMLAssociate("deeppink", "ff1493")
+ HTMLAssociate("deepskyblue", "00bfff")
+ HTMLAssociate("dimgrey", "696969")
+ HTMLAssociate("dimgray", "696969")
+ HTMLAssociate("dodgerblue", "1e90ff")
+ HTMLAssociate("firebrick", "b22222")
+ HTMLAssociate("floralwhite", "fffaf0")
+ HTMLAssociate("forestgreen", "228b22")
+ HTMLAssociate("fuchsia", "ff00ff")
+ HTMLAssociate("gainsboro", "dcdcdc")
+ HTMLAssociate("ghostwhite", "f8f8ff")
+ HTMLAssociate("gold", "ffd700")
+ HTMLAssociate("goldenrod", "daa520")
+ HTMLAssociate("grey", "808080")
+ HTMLAssociate("gray", "808080")
+ HTMLAssociate("green", "008000")
+ HTMLAssociate("greenyellow", "adff2f")
+ HTMLAssociate("honeydew", "f0fff0")
+ HTMLAssociate("hotpink", "ff69b4")
+ HTMLAssociate("indianred", "cd5c5c")
+ HTMLAssociate("indigo", "4b0082")
+ HTMLAssociate("ivory", "fffff0")
+ HTMLAssociate("khaki", "f0e68c")
+ HTMLAssociate("lavender", "e6e6fa")
+ HTMLAssociate("lavenderblush", "fff0f5")
+ HTMLAssociate("lawngreen", "7cfc00")
+ HTMLAssociate("lemonchiffon", "fffacd")
+ HTMLAssociate("lightblue", "add8e6")
+ HTMLAssociate("lightcoral", "f08080")
+ HTMLAssociate("lightcyan", "e0ffff")
+ HTMLAssociate("lightgoldenrod", "fafad2")
+ HTMLAssociate("lightgreen", "90ee90")
+ HTMLAssociate("lightgrey", "d3d3d3")
+ HTMLAssociate("lightgray", "d3d3d3")
+ HTMLAssociate("lightpink", "ffb6c1")
+ HTMLAssociate("lightsalmon", "ffa07a")
+ HTMLAssociate("lightseagreen", "20b2aa")
+ HTMLAssociate("lightskyblue", "87cefa")
+ HTMLAssociate("lightslategrey", "778899")
+ HTMLAssociate("lightslategray", "778899")
+ HTMLAssociate("lightsteelblue", "b0c4de")
+ HTMLAssociate("lightyellow", "ffffe0")
+ HTMLAssociate("lime", "00ff00")
+ HTMLAssociate("limegreen", "32cd32")
+ HTMLAssociate("linen", "faf0e6")
+ HTMLAssociate("magenta", "ff00ff")
+ HTMLAssociate("maroon", "800000")
+ HTMLAssociate("mediumaquamarine", "66cdaa")
+ HTMLAssociate("mediumblue", "0000cd")
+ HTMLAssociate("mediumorchid", "ba55d3")
+ HTMLAssociate("mediumpurple", "9370db")
+ HTMLAssociate("mediumseagreen", "3cb371")
+ HTMLAssociate("mediumslateblue", "7b68ee")
+ HTMLAssociate("mediumspringgreen", "00fa9a")
+ HTMLAssociate("mediumturquoise", "48d1cc")
+ HTMLAssociate("mediumvioletred", "c71585")
+ HTMLAssociate("midnightblue", "191970")
+ HTMLAssociate("mintcream", "f5fffa")
+ HTMLAssociate("mistyrose", "ffe4e1")
+ HTMLAssociate("moccasin", "ffe4b5")
+ HTMLAssociate("navajowhite", "ffdead")
+ HTMLAssociate("navy", "000080")
+ HTMLAssociate("oldlace", "fdf5e6")
+ HTMLAssociate("olive", "808000")
+ HTMLAssociate("olivedrab", "6b8e23")
+ HTMLAssociate("orange", "ffa500")
+ HTMLAssociate("orangered", "ff4500")
+ HTMLAssociate("orchid", "da70d6")
+ HTMLAssociate("palegoldenrod", "eee8aa")
+ HTMLAssociate("palegreen", "98fb98")
+ HTMLAssociate("paleturquoise", "afeeee")
+ HTMLAssociate("palevioletred", "db7093")
+ HTMLAssociate("papayawhip", "ffefd5")
+ HTMLAssociate("peachpuff", "ffdab9")
+ HTMLAssociate("peru", "cd853f")
+ HTMLAssociate("pink", "ffc0cd")
+ HTMLAssociate("plum", "dda0dd")
+ HTMLAssociate("powderblue", "b0e0e6")
+ HTMLAssociate("purple", "800080")
+ HTMLAssociate("red", "ff0000")
+ HTMLAssociate("rosybrown", "bc8f8f")
+ HTMLAssociate("royalblue", "4169e1")
+ HTMLAssociate("saddlebrown", "8b4513")
+ HTMLAssociate("salmon", "fa8072")
+ HTMLAssociate("sandybrown", "f4a460")
+ HTMLAssociate("seagreen", "2e8b57")
+ HTMLAssociate("seashell", "fff5ee")
+ HTMLAssociate("sienna", "a0522d")
+ HTMLAssociate("silver", "c0c0c0")
+ HTMLAssociate("skyblue", "87ceed")
+ HTMLAssociate("slateblue", "6a5acd")
+ HTMLAssociate("slategrey", "708090")
+ HTMLAssociate("slategray", "708090")
+ HTMLAssociate("snow", "fffafa")
+ HTMLAssociate("springgreen", "00ff7f")
+ HTMLAssociate("steelblue", "4682b4")
+ HTMLAssociate("tan", "d2b48c")
+ HTMLAssociate("teal", "008080")
+ HTMLAssociate("thistle", "d8bfd8")
+ HTMLAssociate("tomato", "ff6347")
+ HTMLAssociate("turquoise", "40e0d0")
+ HTMLAssociate("violet", "ee82ee")
+ HTMLAssociate("wheat", "f5deb3")
+ HTMLAssociate("white", "ffffff")
+ HTMLAssociate("whitesmoke", "f5f5f5")
+ HTMLAssociate("yellow", "ffff00")
+ HTMLAssociate("yellowgreen", "a9cd32")
+ return
+
+/proc/SaveHTMLAssociations()
+
+ var/savefile/F = new /savefile( "s_html.sav" )
+ F["html_colours"] << html_colours
+ return
+
+/world/New()
+
+ ..()
+ LoadHTMLAssociations()
+ return
+
+/world/Del()
+
+ SaveHTMLAssociations()
+ ..()
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/computer.dm b/ss13-40.93.2-decomp/spacestation13/computer.dm
new file mode 100644
index 0000000..c85f40d
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/computer.dm
@@ -0,0 +1,995 @@
+
+/obj/machinery/computer/security/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/computer/security/attack_hand(user as mob)
+
+ var/list/L = list( )
+ user.machine = src
+ for(var/obj/machinery/camera/C as obj in world)
+ if (C.network == src.network)
+ L[text("[][]", C.c_tag, (C.status ? null : " (Deactivated)"))] = C
+ //Foreach goto(31)
+ L["Cancel"] = "Cancel"
+ var/t = input(user, "Which camera should you change to?", null, null) in L
+ var/C = L[t]
+ if (t == "Cancel")
+ user.machine = null
+ return 0
+ if ((get_dist(user, src) > 1 || (user.machine != src || (user.blinded || (!( user.canmove ) || !( C.status ))))))
+ return 0
+ else
+ src.current = C
+ spawn( 0 )
+ attack_hand(user)
+ return
+ return
+
+/obj/machinery/computer/security/check_eye(user as mob)
+
+ if ((get_dist(user, src) > 1 || (!( user.canmove ) || (user.blinded || (!( src.current ) || !( src.current.status ))))))
+ return null
+ user.reset_view(src.current)
+ return 1
+ return
+
+/obj/machinery/computer/meteorhit(O as obj)
+
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(17)
+ src.icon_state = "broken"
+ return
+
+/obj/machinery/computer/communications/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(58)
+ src.icon_state = "broken"
+ if(3.0)
+ if (prob(25))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(109)
+ src.icon_state = "broken"
+ else
+ return
+
+/obj/machinery/computer/communications/verb/call_shuttle()
+ set src in oview(1)
+
+ if ((!( ticker ) || ticker.shuttle_location == 1))
+ return
+ world << "\blue Alert: The emergency shuttle has been called. It will arrive in T-10:00 minutes."
+ if (!( ticker.timeleft ))
+ ticker.timeleft = 6000
+ ticker.timing = 1
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/computer/communications/verb/cancel_call()
+ set src in oview(1)
+
+ if ((!( ticker ) || (ticker.shuttle_location == 1 || (ticker.timing == 0 || ticker.timeleft < 300))))
+ return
+ world << "\blue Alert: The shuttle is going back!"
+ ticker.timing = -1.0
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/computer/card/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(58)
+ src.icon_state = "broken"
+ if(3.0)
+ if (prob(25))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(109)
+ src.icon_state = "broken"
+ else
+ return
+
+/obj/machinery/computer/card/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/computer/card/attack_hand(user as mob)
+
+ user.machine = src
+ if (!( ticker ))
+ return
+ if (src.mode)
+ var/d2 = text("Confirm Identity: []\n[]", src, (src.scan ? text("[]", src.scan.name) : "----------"), (src.authenticated ? "You are logged in!" : text("{Log in}", src)))
+ var/d1 = "Please use security Records to modify entries.
"
+ for(var/datum/data/record/t in data_core.general)
+ d1 += text("[] - []
", t.fields["name"], t.fields["rank"])
+ //Foreach goto(104)
+ var/dat = text("[]
\n
\nCrew Manifest:
\n[]\n
\nPrint
\n
\nAccess ID modification console.
\n", d2, d1, src, src)
+ else
+ var/d1 = text("{Log in}", src)
+ if ((t.authenticated && t.modify))
+ var/vo = null
+ var/va = null
+ var/vl = null
+ var/ve = null
+ switch(src.modify.access_level)
+ if(1.0)
+ vo = text("0 1 2 3 4 5", src, src, src, src, src)
+ if(2.0)
+ vo = text("0 1 2 3 4 5", src, src, src, src, src)
+ if(3.0)
+ vo = text("0 1 2 3 4 5", src, src, src, src, src)
+ if(4.0)
+ vo = text("0 1 2 3 4 5", src, src, src, src, src)
+ if(5.0)
+ vo = text("0 1 2 3 4 5", src, src, src, src, src)
+ else
+ vo = text("0 1 2 3 4 5", src, src, src, src, src)
+ switch(src.modify.lab_access)
+ if(1.0)
+ vl = text("0 1 2 3 4 5", src, src, src, src, src)
+ if(2.0)
+ vl = text("0 1 2 3 4 5", src, src, src, src, src)
+ if(3.0)
+ vl = text("0 1 2 3 4 5", src, src, src, src, src)
+ if(4.0)
+ vl = text("0 1 2 3 4 5", src, src, src, src, src)
+ if(5.0)
+ vl = text("0 1 2 3 4 5", src, src, src, src, src)
+ else
+ vl = text("0 1 2 3 4 5", src, src, src, src, src)
+ switch(src.modify.engine_access)
+ if(1.0)
+ ve = text("0 1 2 3 4 5", src, src, src, src, src)
+ if(2.0)
+ ve = text("0 1 2 3 4 5", src, src, src, src, src)
+ if(3.0)
+ ve = text("0 1 2 3 4 5", src, src, src, src, src)
+ if(4.0)
+ ve = text("0 1 2 3 4 5", src, src, src, src, src)
+ if(5.0)
+ ve = text("0 1 2 3 4 5", src, src, src, src, src)
+ else
+ ve = text("0 1 2 3 4 5", src, src, src, src, src)
+ switch(src.modify.air_access)
+ if(1.0)
+ va = text("0 1 2 3 4 5", src, src, src, src, src)
+ if(2.0)
+ va = text("0 1 2 3 4 5", src, src, src, src, src)
+ if(3.0)
+ va = text("0 1 2 3 4 5", src, src, src, src, src)
+ if(4.0)
+ va = text("0 1 2 3 4 5", src, src, src, src, src)
+ if(5.0)
+ va = text("0 1 2 3 4 5", src, src, src, src, src)
+ else
+ va = text("0 1 2 3 4 5", src, src, src, src, src)
+ var/list/L = list( "Research Assistant", "Staff Assistant", "Medical Assistant", "Technical Assistant", "Engineer", "Forensic Technician", "Research Technician", "Medical Doctor", "Captain", "Security Officer", "Medical Researcher", "Toxin Researcher", "Head of Research", "Head of Personnel", "Station Technician", "Atmospheric Technician", "Unassigned", "Systems" )
+ var/assign = ""
+ if (istype(user, /mob/human))
+ var/counter = 1
+ for(var/t in L)
+ assign += text("[] ", src, t, t)
+ counter++
+ if (counter >= 4)
+ assign += "
"
+ counter = 1
+ //Foreach goto(912)
+ d1 = text("[] :
\nGeneral Access Level: []
\nLaboratory Access: []
\nReactor/Engine Access: []
\nMain Systems Access: []
\nRegistered: []
\nAssignment: []
\n[]
", src.modify.name, vo, vl, ve, va, src, (src.registered ? text("[]", src.registered) : "{None: Click to modify}"), (src.modify.assignment ? text("[]", src.assignment) : "None"), assign)
+ else
+ var/counter = 1
+ for(var/t in L)
+ assign += text("[] ", src, t, stars(t))
+ counter++
+ if (counter >= 4)
+ assign += "
"
+ counter = 1
+ //Foreach goto(1057)
+ d1 = text("[] :
\n[] []
\n[] []
\n[] []
\n[] []
\n[] []
\n[] []
\n[]
", stars("modify.name"), stars("General Access Level:"), vo, stars("Laboratory Access:"), vl, stars("Reactor/Engine Access:"), ve, stars("Main Systems Access:"), va, stars("Registered:"), src, (src.modify.registered ? text("[]", stars(src.registered)) : text("[]", stars("{None: Click to modify}"))), stars("Assignment:"), (src.modify.assignment ? text("[]", stars(src.assignment)) : "None"), assign)
+ if (istype(user, /mob/human))
+ dat = text("Identification Card Modifier
\nPlease Insert the cards into the slots
\nTarget: []
\nConfirm Identity: []
\n-----------------
\n[]
\n
\n
\nAccess Crew Manifest
\n", src, (src.modify ? text("[]", src.modify.name) : "----------"), src, (src.scan ? text("[]", src.scan.name) : "----------"), d1, src)
+ else
+ dat = text("[]
\n[]
\n[] []
\n[] []
\n-----------------
\n[]
\n
\n
\n[]
\n", stars("Identification Card Modifier"), stars("Please Insert the cards into the slots"), stars("Target:"), src, (src.modify ? text("[]", stars(src.modify.name)) : "----------"), stars("Confirm Identity:"), src, (src.scan ? text("[]", stars(src.scan.name)) : "----------"), d1, src, stars("Access Crew Manifest"))
+ user << browse(dat, "window=id_com;size=400x500")
+ return
+
+/obj/machinery/computer/card/Topic(href, href_list)
+
+ if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey"))))
+ usr << "\red You don't have the dexterity to do this!"
+ return
+ if ((usr.stat || restrained()))
+ return
+ if ((get_dist(src, usr) <= 1 && istype(src.loc, /turf)))
+ usr.machine = src
+ if (href_list["modify"])
+ if (src.modify)
+ src.name = text("[]'s ID Card ([]>[]-[]-[])", src.modify.registered, src.access_level, src.lab_access, src.engine_access, src.air_access)
+ src.modify.loc = src.loc
+ src.modify = null
+ else
+ var/I = usr.equipped()
+ if (istype(I, /obj/item/weapon/card/id))
+ drop_item()
+ I.loc = src
+ src.modify = I
+ src.authenticated = 0
+ if (href_list["scan"])
+ if (src.scan)
+ src.scan.loc = src.loc
+ src.scan = null
+ else
+ var/I = usr.equipped()
+ if (istype(I, /obj/item/weapon/card/id))
+ drop_item()
+ I.loc = src
+ src.scan = I
+ src.authenticated = 0
+ if (href_list["auth"])
+ if ((!( src.authenticated ) && (src.scan && (src.modify || src.mode))))
+ if ((src.scan.assignment == "Captain" || src.assignment == "Head of Personnel"))
+ src.authenticated = 1
+ if (href_list["vo"])
+ if (src.authenticated)
+ var/t1 = text2num(href_list["vo"])
+ if (t1 == -1.0)
+ t1 = 0
+ src.modify.access_level = t1
+ if (href_list["vl"])
+ if (src.authenticated)
+ var/t1 = text2num(href_list["vl"])
+ if (t1 == -1.0)
+ t1 = 0
+ src.modify.lab_access = t1
+ if (href_list["ve"])
+ if (src.authenticated)
+ var/t1 = text2num(href_list["ve"])
+ if (t1 == -1.0)
+ t1 = 0
+ src.modify.engine_access = t1
+ if (href_list["va"])
+ if (src.authenticated)
+ var/t1 = text2num(href_list["va"])
+ if (t1 == -1.0)
+ t1 = 0
+ src.modify.air_access = t1
+ if (href_list["assign"])
+ if (src.authenticated)
+ var/t1 = href_list["assign"]
+ src.modify.assignment = t1
+ if (href_list["reg"])
+ if (src.authenticated)
+ var/t2 = src.modify
+ var/t1 = input(usr, "What name?", "ID computer", null) as text
+ if ((src.authenticated && (src.modify == t2 && (get_dist(src, usr) <= 1 && istype(src.loc, /turf)))))
+ src.modify.registered = t1
+ if (href_list["mode"])
+ src.mode = text2num(href_list["mode"])
+ if (href_list["print"])
+ if (!( src.printing ))
+ src.printing = 1
+ sleep(50)
+ var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.loc )
+ var/t1 = "Crew Manifest:
"
+ for(var/datum/data/record/t in data_core.general)
+ t1 += text("[] - []
", t.fields["name"], t.fields["rank"])
+ //Foreach goto(868)
+ P.info = text("[]", t1)
+ P.name = "paper- 'Crew Manifest'"
+ src.printing = null
+ if (href_list["mode"])
+ src.authenticated = 0
+ src.mode = text2num(href_list["mode"])
+ if (src.modify)
+ src.name = text("[]'s ID Card ([]>[]-[]-[])", src.modify.registered, src.access_level, src.lab_access, src.engine_access, src.air_access)
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(1015)
+ src.add_fingerprint(usr)
+ else
+ usr << browse(null, "window=id_com")
+ return
+ return
+
+/obj/machinery/computer/card/attackby(I as obj, user as mob)
+
+ src.attack_hand(user)
+ return
+
+/obj/machinery/computer/pod/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(58)
+ src.icon_state = "broken"
+ if(3.0)
+ if (prob(25))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(109)
+ src.icon_state = "broken"
+ else
+ return
+
+/obj/machinery/computer/pod/proc/alarm()
+
+ if (!( src.connected ))
+ viewers(null, null) << "Cannot locate mass driver connector. Cancelling firing sequence!"
+ return
+ for(var/obj/machinery/door/poddoor/M as obj in world)
+ if (M.id == src.id)
+ spawn( 0 )
+ M.openpod()
+ return
+ //Foreach goto(41)
+ sleep(20)
+ src.connected.drive()
+ sleep(50)
+ for(var/obj/machinery/door/poddoor/M as obj in world)
+ if (M.id == src.id)
+ spawn( 0 )
+ M.closepod()
+ return
+ //Foreach goto(123)
+ return
+
+/obj/machinery/computer/pod/New()
+
+ ..()
+ spawn( 5 )
+ for(var/obj/machinery/mass_driver/M as obj in world)
+ if (M.id == src.id)
+ src.connected = M
+ else
+ //Foreach continue //goto(25)
+ return
+ return
+
+/obj/machinery/computer/pod/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/computer/pod/attack_hand(user as mob)
+
+ var/dat = "Mass Driver Controls"
+ user.machine = src
+ if (src.timing)
+ var/d2 = text("Stop Time Launch", src)
+ else
+ d2 = text("Initiate Time Launch", src)
+ var/second = src.time % 60
+ var/minute = (src.time - second) / 60
+ dat += text("
\nTimer System: []\nTime Left: [][] - - + +", d2, (minute ? text("[]:", minute) : null), second, src, src, src, src)
+ if (src.connected)
+ var/temp = ""
+ var/list/L = list( 0.25, 0.5, 1, 2, 4, 8, 16 )
+ for(var/t in L)
+ if (t == src.connected.power)
+ temp += text("[] ", t)
+ else
+ temp += text("[] ", src, t, t)
+ //Foreach goto(172)
+ dat += text("
\nPower Level: []
\nFiring Sequence
\nTest Fire Driver
\nToggle Outer Door
", temp, src, src, src)
+ dat += text("
Close", user)
+ user << browse(dat, "window=computer;size=400x500")
+ return
+
+/obj/machinery/computer/pod/process()
+
+ if (src.timing)
+ if (src.time > 0)
+ src.time = round(src.time) - 1
+ else
+ alarm()
+ src.time = 0
+ src.timing = 0
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(68)
+ return
+
+/obj/machinery/computer/pod/Topic(href, href_list)
+
+ if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey"))))
+ usr << "\red You don't have the dexterity to do this!"
+ return
+ if ((usr.stat || usr.restrained()))
+ return
+ if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf))))
+ usr.machine = src
+ if (href_list["power"])
+ var/t = text2num(href_list["power"])
+ t = min(max(0.25, t), 16)
+ if (src.connected)
+ src.connected.power = t
+ else
+ if (href_list["alarm"])
+ src.alarm()
+ else
+ if (href_list["time"])
+ src.timing = text2num(href_list["time"])
+ else
+ if (href_list["tp"])
+ var/tp = text2num(href_list["tp"])
+ src.time += tp
+ src.time = min(max(round(src.time), 0), 120)
+ else
+ if (href_list["door"])
+ for(var/obj/machinery/door/poddoor/M as obj in world)
+ if (M.id == src.id)
+ if (M.density)
+ spawn( 0 )
+ M.openpod()
+ return
+ else
+ spawn( 0 )
+ M.closepod()
+ return
+ //Foreach goto(298)
+ src.add_fingerprint(usr)
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(394)
+ return
+
+/obj/machinery/door/poddoor/open()
+
+ usr << "This is a remote pod door!"
+ return
+
+/obj/machinery/door/poddoor/close()
+
+ usr << "This is a remote pod door!"
+ return
+
+/obj/machinery/door/poddoor/proc/openpod()
+ set src in oview(1)
+
+ if (src.operating)
+ return
+ src.operating = 1
+ flick("doorc0", src)
+ src.icon_state = "door0"
+ sleep(15)
+ src.density = 0
+ src.opacity = 0
+ var/T = src.loc
+ if (istype(T, /turf))
+ T.updatecell = 1
+ src.operating = 0
+ return
+
+/obj/machinery/door/poddoor/proc/closepod()
+ set src in oview(1)
+
+ if (src.operating)
+ return
+ src.operating = 1
+ flick("doorc1", src)
+ src.icon_state = "door1"
+ src.density = 1
+ src.opacity = 1
+ var/T = src.loc
+ if (istype(T, /turf))
+ T.updatecell = 0
+ sleep(15)
+ src.operating = 0
+ return
+
+/obj/machinery/pod/meteorhit(O as obj)
+
+ if (O.icon_state == "flaming")
+ for(var/obj/item/I as obj in src)
+ I.loc = src.loc
+ //Foreach goto(29)
+ for(var/M as mob in src)
+ M.loc = src.loc
+ if (M.client)
+ M.eye = M.client.mob
+ M.client.perspective = MOB_PERSPECTIVE
+ //Foreach goto(71)
+ src = null
+ del(src)
+ return
+ return
+
+/obj/machinery/pod/process()
+
+ if (src.speed)
+ if (src.speed <= 10)
+ var/t1 = 10 - src.speed
+ while(t1 > 0)
+ step(src, src.dir)
+ sleep(1)
+ t1--
+ else
+ var/t1 = round(src.speed / 5)
+ while(t1 > 0)
+ step(src, src.dir)
+ t1--
+ return
+
+/obj/machinery/pod/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ for(var/atom/movable/A as mob|obj in src)
+ A.loc = src.loc
+ ex_act(severity)
+ //Foreach goto(31)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/atom/movable/A as mob|obj in src)
+ A.loc = src.loc
+ ex_act(severity)
+ //Foreach goto(104)
+ src = null
+ del(src)
+ return
+ else
+ return
+
+/obj/machinery/pod/Bump()
+
+ spawn( 0 )
+ ..()
+ src.speed = 0
+ return
+ return
+
+/obj/machinery/pod/relaymove(user as mob, direction)
+
+ if (user.stat)
+ return
+ if ((user in src))
+ if (direction & 1)
+ src.speed = max(src.speed - 1, 1)
+ else
+ if (direction & 2)
+ src.speed++
+ if (src.speed > 10)
+ src.speed = 10
+ if (direction & 4)
+ src.dir = turn(src.dir, -90.0)
+ else
+ if (direction & 8)
+ src.dir = turn(src.dir, 90)
+ return
+
+/obj/machinery/pod/verb/eject()
+ set src = usr.loc
+
+ if (usr.stat)
+ return
+ var/M = usr
+ M.loc = src.loc
+ if (M.client)
+ M.eye = M.client.mob
+ M.client.perspective = MOB_PERSPECTIVE
+ step(M, turn(src.dir, 180))
+ return
+
+/obj/machinery/pod/verb/board()
+ set src in oview(1)
+
+ if (usr.stat)
+ return
+ var/M = usr
+ if (M.client)
+ M.client.perspective = EYE_PERSPECTIVE
+ M.client.eye = src
+ M.loc = src
+ return
+
+/obj/machinery/pod/verb/load()
+ set src in oview(1)
+
+ if (usr.stat)
+ return
+ if ((istype(usr, /mob/human) && (!( ticker ) || (ticker && ticker.mode != "monkey"))))
+ var/H = usr
+ if ((H.pulling && !( H.pulling.anchored )))
+ H.pulling.loc = src
+ if (ismob(H.pulling))
+ var/M = H.pulling
+ if (M.client)
+ M.client.perspective = EYE_PERSPECTIVE
+ M.client.eye = src
+ for(var/O as mob in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O << text("\blue [] loads [] into []!", H, H.pulling, src)
+ //Foreach goto(152)
+ H.pulling = null
+ return
+
+/obj/machinery/pod/verb/unload(A as mob|obj in src)
+ set src in oview(1)
+
+ if (usr.stat)
+ return
+ if (istype(A, /atom/movable))
+ A.loc = src.loc
+ for(var/O as mob in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O << text("\blue [] unloads [] from []!", usr, A, src)
+ //Foreach goto(54)
+ if (ismob(A))
+ var/M = A
+ if (M.client)
+ M.client.perspective = MOB_PERSPECTIVE
+ M.client.eye = M
+ step(A, turn(src.dir, 180))
+ return
+
+/obj/machinery/recon/meteorhit(O as obj)
+
+ if (O.icon_state == "flaming")
+ for(var/obj/item/I as obj in src)
+ I.loc = src.loc
+ //Foreach goto(29)
+ for(var/M as mob in src)
+ M.loc = src.loc
+ if (M.client)
+ M.eye = M.client.mob
+ M.client.perspective = MOB_PERSPECTIVE
+ //Foreach goto(71)
+ src = null
+ del(src)
+ return
+ return
+
+/obj/machinery/recon/process()
+
+ if (src.speed)
+ if (src.speed <= 10)
+ var/t1 = 10 - src.speed
+ while(t1 > 0)
+ step(src, src.dir)
+ sleep(1)
+ t1--
+ else
+ var/t1 = round(src.speed / 5)
+ while(t1 > 0)
+ step(src, src.dir)
+ t1--
+ return
+
+/obj/machinery/recon/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ for(var/atom/movable/A as mob|obj in src)
+ A.loc = src.loc
+ ex_act(severity)
+ //Foreach goto(31)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/atom/movable/A as mob|obj in src)
+ A.loc = src.loc
+ ex_act(severity)
+ //Foreach goto(104)
+ src = null
+ del(src)
+ return
+ else
+ return
+
+/obj/machinery/recon/Bump()
+
+ spawn( 0 )
+ ..()
+ src.speed = 0
+ return
+ return
+
+/obj/machinery/recon/verb/eject()
+ set src = usr.loc
+
+ if (usr.stat)
+ return
+ var/M = usr
+ M.loc = src.loc
+ if (M.client)
+ M.eye = M.client.mob
+ M.client.perspective = MOB_PERSPECTIVE
+ return
+
+/obj/machinery/recon/verb/board()
+ set src in oview(1)
+
+ if (usr.stat)
+ return
+ if (locate(/mob, src))
+ usr << "There is no room! You can only fit one person."
+ return
+ var/M = usr
+ if (M.client)
+ M.client.perspective = EYE_PERSPECTIVE
+ M.client.eye = src
+ M.loc = src
+ return
+
+/obj/machinery/recon/verb/load()
+ set src in oview(1)
+
+ if (usr.stat)
+ return
+ if ((istype(usr, /mob/human) && (!( ticker ) || (ticker && ticker.mode != "monkey"))))
+ var/H = usr
+ if ((H.pulling && !( H.pulling.anchored )))
+ if (!( istype(H.pulling, /obj/item/weapon) ))
+ usr << "You may only place items in."
+ else
+ if ((locate(/mob, src) && ismob(H.pulling)))
+ usr << "There is no room! You can only fit one person."
+ else
+ H.pulling.loc = src
+ if (ismob(H.pulling))
+ var/M = H.pulling
+ if (M.client)
+ M.client.perspective = EYE_PERSPECTIVE
+ M.client.eye = src
+ for(var/O as mob in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O << text("\blue [] loads [] into []!", H, H.pulling, src)
+ //Foreach goto(204)
+ H.pulling = null
+ return
+
+/obj/machinery/recon/verb/unload(A as mob|obj in src)
+ set src in oview(1)
+
+ if (usr.stat)
+ return
+ if (istype(A, /atom/movable))
+ A.loc = src.loc
+ for(var/O as mob in view(src, null))
+ if ((O.client && !( O.blinded )))
+ O << text("\blue [] unloads [] from []!", usr, A, src)
+ //Foreach goto(53)
+ if (ismob(A))
+ var/M = A
+ if (M.client)
+ M.client.perspective = MOB_PERSPECTIVE
+ M.client.eye = M
+ return
+
+/obj/machinery/recon/Bump()
+
+ spawn( 0 )
+ ..()
+ src.speed = 0
+ return
+ return
+
+/obj/machinery/recon/relaymove(user as mob, direction)
+
+ if (user.stat)
+ return
+ if ((user in src))
+ if (direction & 1)
+ src.speed = max(src.speed - 1, 1)
+ else
+ if (direction & 2)
+ src.speed++
+ if (direction & 4)
+ src.dir = turn(src.dir, -90.0)
+ else
+ if (direction & 8)
+ src.dir = turn(src.dir, 90)
+ if (direction & 16)
+ src.speed = 30
+ else
+ src.speed = min(src.speed, 10)
+ return
+
+/obj/datacore/proc/manifest()
+
+ for(var/mob/human/H as mob in world)
+ if ((H.start && !( findtext(H.rname, "Syndicate ", 1, null) )))
+ var/datum/data/record/G = new /datum/data/record( )
+ var/datum/data/record/M = new /datum/data/record( )
+ var/datum/data/record/S = new /datum/data/record( )
+ var/C = H.wear_id
+ if (C)
+ G.fields["rank"] = C.assignment
+ else
+ G.fields["rank"] = "Unassigned"
+ G.fields["name"] = H.rname
+ G.fields["id"] = text("[]", add_zero(num2hex(rand(1, 1.6777215E7)), 6))
+ M.fields["name"] = G.fields["name"]
+ M.fields["id"] = G.fields["id"]
+ S.fields["name"] = G.fields["name"]
+ S.fields["id"] = G.fields["id"]
+ if (H.gender == "female")
+ G.fields["sex"] = "Female"
+ else
+ G.fields["sex"] = "Male"
+ G.fields["age"] = text("[]", H.age)
+ G.fields["fingerprint"] = text("[]", md5(H.primary.uni_identity))
+ G.fields["p_stat"] = "Active"
+ G.fields["m_stat"] = "Stable"
+ M.fields["b_type"] = text("[]", H.b_type)
+ M.fields["mi_dis"] = "None"
+ M.fields["mi_dis_d"] = "No minor disabilities have been declared."
+ M.fields["ma_dis"] = "None"
+ M.fields["ma_dis_d"] = "No major disabilities have been diagnosed."
+ M.fields["alg"] = "None"
+ M.fields["alg_d"] = "No allergies have been detected in this patient."
+ M.fields["cdi"] = "None"
+ M.fields["cdi_d"] = "No diseases have been diagnosed at the moment."
+ M.fields["notes"] = "No notes."
+ S.fields["criminal"] = "None"
+ S.fields["mi_crim"] = "None"
+ S.fields["mi_crim_d"] = "No minor crime convictions."
+ S.fields["ma_crim"] = "None"
+ S.fields["ma_crim_d"] = "No minor crime convictions."
+ S.fields["notes"] = "No notes."
+ src.general += G
+ src.medical += M
+ src.security += S
+ //Foreach goto(15)
+ return
+
+/turf/space/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/turf/space/attack_hand(user as mob)
+
+ if ((user.restrained() || !( user.pulling )))
+ return
+ if (user.pulling.anchored)
+ return
+ if ((user.pulling.loc != user.loc && get_dist(user, user.pulling) > 1))
+ return
+ if (ismob(user.pulling))
+ var/M = user.pulling
+ var/t = M.pulling
+ M.pulling = null
+ step(user.pulling, get_dir(user.pulling.loc, src))
+ M.pulling = t
+ else
+ step(M.pulling, get_dir(user.pulling.loc, src))
+ return
+
+/turf/space/attackby(T as obj, user as mob)
+
+ if (istype(T, /obj/item/weapon/tile))
+ T.build(src)
+ T.amount--
+ src.add_fingerprint(user)
+ if (T.amount < 1)
+ user.u_equip(src)
+ src = null
+ del(src)
+ return
+ return
+
+/turf/space/updatecell()
+
+ return
+ return
+
+/turf/space/Entered(A as mob|obj)
+
+ ..()
+ if ((!( A ) || (src != A.loc || istype(null, /obj/beam))))
+ return
+ if (!( A.last_move ))
+ return
+ if (locate(/obj/move, src))
+ return 1
+ if ((ismob(A) && (src.x > 2 && src.x < (world.maxx - 2))))
+ var/M = A
+ if ((!( M.restrained() ) && M.canmove))
+ var/t1 = 5
+ if (locate(/obj/grille, oview(1, M)))
+ if (!( M.l_hand ))
+ t1 -= 2
+ else
+ if (M.l_hand.w_class <= 2)
+ t1 -= 1
+ if (!( M.r_hand ))
+ t1 -= 2
+ else
+ if (M.r_hand.w_class <= 2)
+ t1 -= 1
+ else
+ if (locate(/turf/station, oview(1, M)))
+ if (!( M.l_hand ))
+ t1 -= 1
+ else
+ if (M.l_hand.w_class <= 2)
+ t1 -= 0.5
+ if (!( M.r_hand ))
+ t1 -= 1
+ else
+ if (M.r_hand.w_class <= 2)
+ t1 -= 0.5
+ t1 = round(t1)
+ if (t1 < 5)
+ if (prob(t1))
+ M << "\blue You slipped!"
+ else
+ spawn( 5 )
+ if (src == A.loc)
+ spawn( 0 )
+ src.Entered(A)
+ return
+ return
+ return 0
+ if (src.x <= 2)
+ if (src.z >= 10)
+ if (world.maxz < 10)
+ world.maxz++
+ A.z++
+ else
+ A.z = 9
+ else
+ A.z++
+ A.x = world.maxx - 2
+ spawn( 0 )
+ if ((A && A.loc))
+ A.loc.Entered(A)
+ return
+ else
+ if (A.x >= (world.maxx - 1))
+ if (A.z > 3)
+ A.z--
+ else
+ A.z = 1
+ A.x = 3
+ spawn( 0 )
+ if ((A && A.loc))
+ A.loc.Entered(A)
+ return
+ else
+ spawn( 5 )
+ if ((A && (!( A.anchored ) && A.loc == src)))
+ if (step(A, A.last_move))
+ else
+ spawn( 0 )
+ src.Entered(A)
+ return
+ return
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/cryo.dm b/ss13-40.93.2-decomp/spacestation13/cryo.dm
new file mode 100644
index 0000000..da12bc6
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/cryo.dm
@@ -0,0 +1,1623 @@
+
+/obj/machinery/computer/med_data/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/computer/med_data/attack_hand(user as mob)
+
+ if (src.temp)
+ var/dat = text("[]
Clear Screen", src.temp, src)
+ else
+ dat = text("Confirm Identity: []
", src, (src.scan ? text("[]", src.scan.name) : "----------"))
+ if (src.authenticated)
+ switch(src.screen)
+ if(1.0)
+ dat += text("Search Records
\nList Records
\n
\nRecord Maintenance
\n{Log Out}
\n", src, src, src, src)
+ if(2.0)
+ dat += "Record List:
"
+ for(var/datum/data/record/R in data_core.general)
+ dat += text("[]: []
", src, R, R.fields["id"], R.fields["name"])
+ //Foreach goto(132)
+ dat += text("
Back", src)
+ if(3.0)
+ dat += text("Records Maintenance
\nBackup To Disk
\nUpload From disk
\nDelete All Records
\n
\nBack", src, src, src, src)
+ if(4.0)
+ dat += "Medical Record
"
+ if ((istype(R.active1, /datum/data/record) && data_core.general.Find(R.active1)))
+ dat += text("Name: [] ID: []
\nSex: []
\nAge: []
\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", src.active1.fields["name"], src.fields["id"], src, src.fields["sex"], src, src.fields["age"], src, src.fields["fingerprint"], src, src.fields["p_stat"], src, src.fields["m_stat"])
+ else
+ dat += "General Record Lost!
"
+ if ((istype(src.active2, /datum/data/record) && data_core.medical.Find(src.active2)))
+ dat += text("
\nMedical Data
\nBlood Type: []
\n
\nMinor Disabilities: []
\nDetails: []
\n
\nMajor Disabilities: []
\nDetails: []
\n
\nAllergies: []
\nDetails: []
\n
\nCurrent Diseases: [] (per disease info placed in log/comment section)
\nDetails: []
\n
\nImportant Notes:
\n\t[]
\n
\nComments/Log
", src, src.active2.fields["b_type"], src, src.fields["mi_dis"], src, src.fields["mi_dis_d"], src, src.fields["ma_dis"], src, src.fields["ma_dis_d"], src, src.fields["alg"], src, src.fields["alg_d"], src, src.fields["cdi"], src, src.fields["cdi_d"], src, src.fields["notes"])
+ var/counter = 1
+ while(src.active2.fields[text("com_[]", counter)])
+ dat += text("[]
Delete Entry
", src.fields[text("com_[]", counter)], src, counter)
+ counter++
+ dat += text("Add Entry
", src)
+ dat += text("Delete Record (Medical Only)
", src)
+ else
+ dat += "Medical Record Lost!
"
+ dat += text("New Record
", src)
+ dat += text("\nPrint Record
\nBack
", src, src)
+ else
+ else
+ dat += text("{Log In}", src)
+ user << browse(text("Medical Records []", dat), "window=med_rec")
+ return
+
+/obj/machinery/computer/med_data/Topic(href, href_list)
+
+ if (!( data_core.general.Find(src.active1) ))
+ src.active1 = null
+ if (!( data_core.medical.Find(src.active2) ))
+ src.active2 = null
+ if ((usr.stat || restrained()))
+ return
+ if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf))))
+ usr.machine = src
+ if (href_list["temp"])
+ src.temp = null
+ if (href_list["scan"])
+ if (src.scan)
+ src.scan.loc = src.loc
+ src.scan = null
+ else
+ var/I = usr.equipped()
+ if (istype(I, /obj/item/weapon/card/id))
+ drop_item()
+ I.loc = src
+ src.scan = I
+ else
+ if (href_list["logout"])
+ src.authenticated = null
+ src.screen = null
+ src.active1 = null
+ src.active2 = null
+ else
+ if (href_list["login"])
+ if (istype(src.scan, /obj/item/weapon/card/id))
+ src.active1 = null
+ src.active2 = null
+ var/list/L = list( "Medical Researcher", "Medical Doctor", "Head of Personnel", "Captain" )
+ if (L.Find(src.scan.assignment))
+ src.authenticated = src.scan.registered
+ src.rank = src.scan.assignment
+ src.screen = 1
+ if (src.authenticated)
+ if (href_list["list"])
+ src.screen = 2
+ src.active1 = null
+ src.active2 = null
+ else
+ if (href_list["rec_m"])
+ src.screen = 3
+ src.active1 = null
+ src.active2 = null
+ else
+ if (href_list["del_all"])
+ src.temp = text("Are you sure you wish to delete all records?
\n\tYes
\n\tNo
", src, src)
+ else
+ if (href_list["del_all2"])
+ for(var/datum/data/record/R in data_core.medical)
+ R = null
+ del(R)
+ //Foreach goto(494)
+ src.temp = "All records deleted."
+ else
+ if (href_list["main"])
+ src.screen = 1
+ src.active1 = null
+ src.active2 = null
+ else
+ if (href_list["field"])
+ var/a1 = src.active1
+ var/a2 = src.active2
+ switch(href_list["field"])
+ if("fingerprint")
+ if (istype(src.active1, /datum/data/record))
+ var/t1 = input("Please input fingerprint hash:", "Med. records", src.active1.fields["id"], null) as text
+ if ((!( t1 ) || (!( src.authenticated ) || (usr.stat || (restrained() || (get_dist(src, usr) > 1 || src.active1 != a1))))))
+ return
+ src.active1.fields["fingerprint"] = t1
+ if("sex")
+ if (istype(src.active1, /datum/data/record))
+ if (src.active1.fields["sex"] == "Male")
+ src.fields["sex"] = "Female"
+ else
+ src.fields["sex"] = "Male"
+ if("age")
+ if (istype(src.active1, /datum/data/record))
+ var/t1 = input("Please input age:", "Med. records", src.active1.fields["age"], null) as text
+ if ((!( t1 ) || (!( src.authenticated ) || (usr.stat || (restrained() || (get_dist(src, usr) > 1 || src.active1 != a1))))))
+ return
+ src.active1.fields["age"] = t1
+ if("mi_dis")
+ if (istype(src.active2, /datum/data/record))
+ var/t1 = input("Please input minor disabilities list:", "Med. records", src.active2.fields["mi_dis"], null) as text
+ if ((!( t1 ) || (!( src.authenticated ) || (usr.stat || (restrained() || (get_dist(src, usr) > 1 || src.active2 != a2))))))
+ return
+ src.active2.fields["mi_dis"] = t1
+ if("mi_dis_d")
+ if (istype(src.active2, /datum/data/record))
+ var/t1 = input("Please summarize minor dis.:", "Med. records", src.active2.fields["mi_dis_d"], null) as message
+ if ((!( t1 ) || (!( src.authenticated ) || (usr.stat || (restrained() || (get_dist(src, usr) > 1 || src.active2 != a2))))))
+ return
+ src.active2.fields["mi_dis_d"] = t1
+ if("ma_dis")
+ if (istype(src.active2, /datum/data/record))
+ var/t1 = input("Please input major diabilities list:", "Med. records", src.active2.fields["ma_dis"], null) as text
+ if ((!( t1 ) || (!( src.authenticated ) || (usr.stat || (restrained() || (get_dist(src, usr) > 1 || src.active2 != a2))))))
+ return
+ src.active2.fields["ma_dis"] = t1
+ if("ma_dis_d")
+ if (istype(src.active2, /datum/data/record))
+ var/t1 = input("Please summarize major dis.:", "Med. records", src.active2.fields["ma_dis_d"], null) as message
+ if ((!( t1 ) || (!( src.authenticated ) || (usr.stat || (restrained() || (get_dist(src, usr) > 1 || src.active2 != a2))))))
+ return
+ src.active2.fields["ma_dis_d"] = t1
+ if("alg")
+ if (istype(src.active2, /datum/data/record))
+ var/t1 = input("Please state allergies:", "Med. records", src.active2.fields["alg"], null) as text
+ if ((!( t1 ) || (!( src.authenticated ) || (usr.stat || (restrained() || (get_dist(src, usr) > 1 || src.active2 != a2))))))
+ return
+ src.active2.fields["alg"] = t1
+ if("alg_d")
+ if (istype(src.active2, /datum/data/record))
+ var/t1 = input("Please summarize allergies:", "Med. records", src.active2.fields["alg_d"], null) as message
+ if ((!( t1 ) || (!( src.authenticated ) || (usr.stat || (restrained() || (get_dist(src, usr) > 1 || src.active2 != a2))))))
+ return
+ src.active2.fields["alg_d"] = t1
+ if("cdi")
+ if (istype(src.active2, /datum/data/record))
+ var/t1 = input("Please state diseases:", "Med. records", src.active2.fields["cdi"], null) as text
+ if ((!( t1 ) || (!( src.authenticated ) || (usr.stat || (restrained() || (get_dist(src, usr) > 1 || src.active2 != a2))))))
+ return
+ src.active2.fields["cdi"] = t1
+ if("cdi_d")
+ if (istype(src.active2, /datum/data/record))
+ var/t1 = input("Please summarize diseases:", "Med. records", src.active2.fields["cdi_d"], null) as message
+ if ((!( t1 ) || (!( src.authenticated ) || (usr.stat || (restrained() || (get_dist(src, usr) > 1 || src.active2 != a2))))))
+ return
+ src.active2.fields["cdi_d"] = t1
+ if("notes")
+ if (istype(src.active2, /datum/data/record))
+ var/t1 = input("Please summarize notes:", "Med. records", src.active2.fields["notes"], null) as message
+ if ((!( t1 ) || (!( src.authenticated ) || (usr.stat || (restrained() || (get_dist(src, usr) > 1 || src.active2 != a2))))))
+ return
+ src.active2.fields["notes"] = t1
+ if("p_stat")
+ if (istype(src.active1, /datum/data/record))
+ src.temp = text("Physical Condition:
\n\t*Deceased*
\n\t*Unconscious*
\n\tActive
\n\tPhysically Unfit
", src, src, src, src)
+ if("m_stat")
+ if (istype(src.active1, /datum/data/record))
+ src.temp = text("Mental Condition:
\n\t*Insane*
\n\t*Unstable*
\n\t*Watch*
\n\tStable
", src, src, src, src)
+ if("b_type")
+ if (istype(src.active2, /datum/data/record))
+ src.temp = text("Blood Type:
\n\tA- A+
\n\tB- B+
\n\tAB- AB+
\n\tO- O+
", src, src, src, src, src, src, src, src)
+ else
+ else
+ if (href_list["p_stat"])
+ if (src.active1)
+ switch(href_list["p_stat"])
+ if("deceased")
+ src.active1.fields["p_stat"] = "*Deceased*"
+ if("unconscious")
+ src.active1.fields["p_stat"] = "*Unconscious*"
+ if("active")
+ src.active1.fields["p_stat"] = "Active"
+ if("unfit")
+ src.active1.fields["p_stat"] = "Physically Unfit"
+ else
+ else
+ if (href_list["m_stat"])
+ if (src.active1)
+ switch(href_list["m_stat"])
+ if("insane")
+ src.active1.fields["m_stat"] = "*Insane*"
+ if("unstable")
+ src.active1.fields["m_stat"] = "*Unstable*"
+ if("watch")
+ src.active1.fields["m_stat"] = "*Watch*"
+ if("stable")
+ src.active2.fields["m_stat"] = "Stable"
+ else
+ else
+ if (href_list["b_type"])
+ if (src.active2)
+ switch(href_list["b_type"])
+ if("an")
+ src.active2.fields["b_type"] = "A-"
+ if("bn")
+ src.active2.fields["b_type"] = "B-"
+ if("abn")
+ src.active2.fields["b_type"] = "AB-"
+ if("on")
+ src.active2.fields["b_type"] = "O-"
+ if("ap")
+ src.active2.fields["b_type"] = "A+"
+ if("bp")
+ src.active2.fields["b_type"] = "B+"
+ if("abp")
+ src.active2.fields["b_type"] = "AB+"
+ if("op")
+ src.active2.fields["b_type"] = "O+"
+ else
+ else
+ if (href_list["del_r"])
+ if (src.active2)
+ src.temp = text("Are you sure you wish to delete the record (Medical Portion Only)?
\n\tYes
\n\tNo
", src, src)
+ else
+ if (href_list["del_r2"])
+ if (src.active2)
+ src.active2 = null
+ del(src.active2)
+ else
+ if (href_list["d_rec"])
+ var/R = locate(href_list["d_rec"])
+ var/M = locate(href_list["d_rec"])
+ if (!( data_core.general.Find(R) ))
+ src.temp = "Record Not Found!"
+ return
+ for(var/datum/data/record/E in data_core.medical)
+ if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"]))
+ M = E
+ else
+ //Foreach continue //goto(2540)
+ src.active1 = R
+ src.active2 = M
+ src.screen = 4
+ else
+ if (href_list["new"])
+ if ((istype(src.active1, /datum/data/record) && !( istype(src.active2, /datum/data/record) )))
+ var/datum/data/record/R = new /datum/data/record( )
+ R.fields["name"] = src.active1.fields["name"]
+ R.fields["id"] = src.active1.fields["id"]
+ R.name = text("Medical Record #[]", R.fields["id"])
+ R.fields["b_type"] = "Unknown"
+ R.fields["mi_dis"] = "None"
+ R.fields["mi_dis_d"] = "No minor disabilities have been declared."
+ R.fields["ma_dis"] = "None"
+ R.fields["ma_dis_d"] = "No major disabilities have been diagnosed."
+ R.fields["alg"] = "None"
+ R.fields["alg_d"] = "No allergies have been detected in this patient."
+ R.fields["cdi"] = "None"
+ R.fields["cdi_d"] = "No diseases have been diagnosed at the moment."
+ R.fields["notes"] = "No notes."
+ data_core.medical += R
+ src.active2 = R
+ src.screen = 4
+ else
+ if (href_list["add_c"])
+ if (!( istype(src.active2, /datum/data/record) ))
+ return
+ var/a2 = src.active2
+ var/t1 = input("Add Comment:", "Med. records", null, null) as message
+ if ((!( t1 ) || (!( src.authenticated ) || (usr.stat || (restrained() || (get_dist(src, usr) > 1 || src.active2 != a2))))))
+ return
+ var/counter = 1
+ while(src.active2.fields[text("com_[]", counter)])
+ counter++
+ src.active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [], 2053
[]", src.authenticated, src.rank, time2text(world.realtime, "DDD MMM DD hh:mm:ss"), t1)
+ else
+ if (href_list["del_c"])
+ if ((istype(src.active2, /datum/data/record) && src.active2.fields[text("com_[]", href_list["del_c"])]))
+ src.active2.fields[text("com_[]", href_list["del_c"])] = "Deleted"
+ else
+ if (href_list["search"])
+ var/t1 = input("Search String: (Name or ID)", "Med. records", null, null) as text
+ if ((!( t1 ) || (usr.stat || (!( src.authenticated ) || (usr.restrained() || get_dist(src, usr) > 1)))))
+ return
+ src.active1 = null
+ src.active2 = null
+ t1 = lowertext(t1)
+ for(var/datum/data/record/R in data_core.general)
+ if ((lowertext(R.fields["name"]) == t1 || t1 == lowertext(R.fields["id"])))
+ src.active1 = R
+ else
+ //Foreach continue //goto(3229)
+ if (!( src.active1 ))
+ src.temp = text("Could not locate record [].", t1)
+ else
+ for(var/datum/data/record/E in data_core.medical)
+ if ((E.fields["name"] == src.active1.fields["name"] || E.fields["id"] == src.active1.fields["id"]))
+ src.active2 = E
+ else
+ //Foreach continue //goto(3334)
+ src.screen = 4
+ else
+ if (href_list["print_p"])
+ if (!( src.printing ))
+ src.printing = 1
+ sleep(50)
+ var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.loc )
+ P.info = "Medical Record
"
+ if ((istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1)))
+ P.info += text("Name: [] ID: []
\nSex: []
\nAge: []
\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", src.active1.fields["name"], src.fields["id"], src.fields["sex"], src.fields["age"], src.fields["fingerprint"], src.fields["p_stat"], src.fields["m_stat"])
+ else
+ P.info += "General Record Lost!
"
+ if ((istype(src.active2, /datum/data/record) && data_core.medical.Find(src.active2)))
+ P.info += text("
\nMedical Data
\nBlood Type: []
\n
\nMinor Disabilities: []
\nDetails: []
\n
\nMajor Disabilities: []
\nDetails: []
\n
\nAllergies: []
\nDetails: []
\n
\nCurrent Diseases: [] (per disease info placed in log/comment section)
\nDetails: []
\n
\nImportant Notes:
\n\t[]
\n
\nComments/Log
", src.active2.fields["b_type"], src.fields["mi_dis"], src.fields["mi_dis_d"], src.fields["ma_dis"], src.fields["ma_dis_d"], src.fields["alg"], src.fields["alg_d"], src.fields["cdi"], src.fields["cdi_d"], src.fields["notes"])
+ var/counter = 1
+ while(src.active2.fields[text("com_[]", counter)])
+ P.info += text("[]
", src.fields[text("com_[]", counter)])
+ counter++
+ else
+ P.info += "Medical Record Lost!
"
+ P.info += ""
+ P.name = "paper- 'Medical Record'"
+ src.printing = null
+ src.add_fingerprint(usr)
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(3792)
+ return
+
+/obj/machinery/computer/secure_data/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/computer/secure_data/attack_hand(user as mob)
+
+ if (src.temp)
+ var/dat = text("[]
Clear Screen", src.temp, src)
+ else
+ dat = text("Confirm Identity: []
", src, (src.scan ? text("[]", src.scan.name) : "----------"))
+ if (src.authenticated)
+ switch(src.screen)
+ if(1.0)
+ dat += text("Search Records
\nList Records
\nSearch Fingerprints
\nNew Record
\n
\nRecord Maintenance
\n{Log Out}
\n", src, src, src, src, src, src)
+ if(2.0)
+ dat += "Record List:
"
+ for(var/datum/data/record/R in data_core.general)
+ dat += text("[]: []
", src, R, R.fields["id"], R.fields["name"])
+ //Foreach goto(136)
+ dat += text("
Back", src)
+ if(3.0)
+ dat += text("Records Maintenance
\nBackup To Disk
\nUpload From disk
\nDelete All Records
\n
\nBack", src, src, src, src)
+ if(4.0)
+ dat += "Security Record
"
+ if ((istype(R.active1, /datum/data/record) && data_core.general.Find(R.active1)))
+ dat += text("Name: [] ID: []
\nSex: []
\nAge: []
\nRank: []
\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", src, src.active1.fields["name"], src, src.fields["id"], src, src.fields["sex"], src, src.fields["age"], src, src.fields["rank"], src, src.fields["fingerprint"], src.fields["p_stat"], src.fields["m_stat"])
+ else
+ dat += "General Record Lost!
"
+ if ((istype(src.active2, /datum/data/record) && data_core.security.Find(src.active2)))
+ dat += text("
\nSecurity Data
\nCriminal Status: []
\n
\nMinor Crimes: []
\nDetails: []
\n
\nMajor Crimes: []
\nDetails: []
\n
\nImportant Notes:
\n\t[]
\n
\nComments/Log
", src, src.active2.fields["criminal"], src, src.fields["mi_crim"], src, src.fields["mi_crim_d"], src, src.fields["ma_crim"], src, src.fields["ma_crim_d"], src, src.fields["notes"])
+ var/counter = 1
+ while(src.active2.fields[text("com_[]", counter)])
+ dat += text("[]
Delete Entry
", src.fields[text("com_[]", counter)], src, counter)
+ counter++
+ dat += text("Add Entry
", src)
+ dat += text("Delete Record (Security Only)
", src)
+ else
+ dat += "Security Record Lost!
"
+ dat += text("New Record
", src)
+ dat += text("\nDelete Record (ALL)
\nPrint Record
\nBack
", src, src, src)
+ else
+ else
+ dat += text("{Log In}", src)
+ user << browse(text("Security Records []", dat), "window=secure_rec")
+ return
+
+/obj/machinery/computer/secure_data/Topic(href, href_list)
+
+ if (!( data_core.general.Find(src.active1) ))
+ src.active1 = null
+ if (!( data_core.security.Find(src.active2) ))
+ src.active2 = null
+ if ((usr.stat || restrained()))
+ return
+ if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf))))
+ usr.machine = src
+ if (href_list["temp"])
+ src.temp = null
+ if (href_list["scan"])
+ if (src.scan)
+ src.scan.loc = src.loc
+ src.scan = null
+ else
+ var/I = usr.equipped()
+ if (istype(I, /obj/item/weapon/card/id))
+ drop_item()
+ I.loc = src
+ src.scan = I
+ else
+ if (href_list["logout"])
+ src.authenticated = null
+ src.screen = null
+ src.active1 = null
+ src.active2 = null
+ else
+ if (href_list["login"])
+ if (istype(src.scan, /obj/item/weapon/card/id))
+ src.active1 = null
+ src.active2 = null
+ var/list/L = list( "Security Officer", "Forensic Technician", "Prison Warden", "Head of Personnel", "Captain" )
+ if (L.Find(src.scan.assignment))
+ src.authenticated = src.scan.registered
+ src.rank = src.scan.assignment
+ src.screen = 1
+ if (src.authenticated)
+ if (href_list["list"])
+ src.screen = 2
+ src.active1 = null
+ src.active2 = null
+ else
+ if (href_list["rec_m"])
+ src.screen = 3
+ src.active1 = null
+ src.active2 = null
+ else
+ if (href_list["del_all"])
+ src.temp = text("Are you sure you wish to delete all records?
\n\tYes
\n\tNo
", src, src)
+ else
+ if (href_list["del_all2"])
+ for(var/datum/data/record/R in data_core.security)
+ R = null
+ del(R)
+ //Foreach goto(497)
+ src.temp = "All records deleted."
+ else
+ if (href_list["main"])
+ src.screen = 1
+ src.active1 = null
+ src.active2 = null
+ else
+ if (href_list["field"])
+ var/a1 = src.active1
+ var/a2 = src.active2
+ switch(href_list["field"])
+ if("name")
+ if (istype(src.active1, /datum/data/record))
+ var/t1 = input("Please input name:", "Secure. records", src.active1.fields["name"], null) as text
+ if ((!( t1 ) || (!( src.authenticated ) || (usr.stat || (restrained() || (get_dist(src, usr) > 1 || src.active1 != a1))))))
+ return
+ src.active1.fields["name"] = t1
+ if("id")
+ if (istype(src.active2, /datum/data/record))
+ var/t1 = input("Please input id:", "Secure. records", src.active1.fields["id"], null) as text
+ if ((!( t1 ) || (!( src.authenticated ) || (usr.stat || (restrained() || (get_dist(src, usr) > 1 || src.active1 != a1))))))
+ return
+ src.active1.fields["id"] = t1
+ if("fingerprint")
+ if (istype(src.active1, /datum/data/record))
+ var/t1 = input("Please input fingerprint hash:", "Secure. records", src.active1.fields["fingerprint"], null) as text
+ if ((!( t1 ) || (!( src.authenticated ) || (usr.stat || (restrained() || (get_dist(src, usr) > 1 || src.active1 != a1))))))
+ return
+ src.active1.fields["fingerprint"] = t1
+ if("sex")
+ if (istype(src.active1, /datum/data/record))
+ if (src.active1.fields["sex"] == "Male")
+ src.fields["sex"] = "Female"
+ else
+ src.fields["sex"] = "Male"
+ if("age")
+ if (istype(src.active1, /datum/data/record))
+ var/t1 = input("Please input age:", "Secure. records", src.active1.fields["age"], null) as text
+ if ((!( t1 ) || (!( src.authenticated ) || (usr.stat || (restrained() || (get_dist(src, usr) > 1 || src.active1 != a1))))))
+ return
+ src.active1.fields["age"] = t1
+ if("mi_crim")
+ if (istype(src.active2, /datum/data/record))
+ var/t1 = input("Please input minor disabilities list:", "Secure. records", src.active2.fields["mi_crim"], null) as text
+ if ((!( t1 ) || (!( src.authenticated ) || (usr.stat || (restrained() || (get_dist(src, usr) > 1 || src.active2 != a2))))))
+ return
+ src.active2.fields["mi_crim"] = t1
+ if("mi_crim_d")
+ if (istype(src.active2, /datum/data/record))
+ var/t1 = input("Please summarize minor dis.:", "Secure. records", src.active2.fields["mi_crim_d"], null) as message
+ if ((!( t1 ) || (!( src.authenticated ) || (usr.stat || (restrained() || (get_dist(src, usr) > 1 || src.active2 != a2))))))
+ return
+ src.active2.fields["mi_crim_d"] = t1
+ if("ma_crim")
+ if (istype(src.active2, /datum/data/record))
+ var/t1 = input("Please input major diabilities list:", "Secure. records", src.active2.fields["ma_crim"], null) as text
+ if ((!( t1 ) || (!( src.authenticated ) || (usr.stat || (restrained() || (get_dist(src, usr) > 1 || src.active2 != a2))))))
+ return
+ src.active2.fields["ma_crim"] = t1
+ if("ma_crim_d")
+ if (istype(src.active2, /datum/data/record))
+ var/t1 = input("Please summarize major dis.:", "Secure. records", src.active2.fields["ma_crim_d"], null) as message
+ if ((!( t1 ) || (!( src.authenticated ) || (usr.stat || (restrained() || (get_dist(src, usr) > 1 || src.active2 != a2))))))
+ return
+ src.active2.fields["ma_crim_d"] = t1
+ if("notes")
+ if (istype(src.active2, /datum/data/record))
+ var/t1 = input("Please summarize notes:", "Secure. records", src.active2.fields["notes"], null) as message
+ if ((!( t1 ) || (!( src.authenticated ) || (usr.stat || (restrained() || (get_dist(src, usr) > 1 || src.active2 != a2))))))
+ return
+ src.active2.fields["notes"] = t1
+ if("criminal")
+ if (istype(src.active2, /datum/data/record))
+ src.temp = text("Criminal Status:
\n\tNone
\n\t*Arrest*
\n\tIncarcerated
\n\tParolled
\n\tReleased
", src, src, src, src, src)
+ if("rank")
+ var/list/L = list( "Head of Personnel", "Captain" )
+ if ((istype(src.active1, /datum/data/record) && L.Find(src.rank)))
+ src.temp = text("Rank:
\nAssistants:
\nResearch Assistant
\nStaff Assistant
\nMedical Assistant
\nTechnical Assistant
\nTechnicians:
\nForensic Technician
\nResearch Technician
\nStation Technician
\nAtmospheric Technician
\nEngineer (Engine Technician)\nResearchers:
\nMedical Researcher
\nToxin Researcher
\nOfficers:
\nMedical Doctor
\nSecurity Officer
\nHigher Officers:
\nHead of Research
\nHead of Personnel
\nCaptain
", src, src, src, src, src, src, src, src, src, src, src, src, src, src, src, src)
+ else
+ else
+ if (href_list["rank"])
+ var/list/L = list( "Head of Personnel", "Captain" )
+ if ((src.active1 && L.Find(src.rank)))
+ switch(href_list["rank"])
+ if("res_assist")
+ src.active1.fields["rank"] = "Research Assistant"
+ if("staff_assist")
+ src.active1.fields["rank"] = "Staff Assistant"
+ if("med_assist")
+ src.active1.fields["rank"] = "Medical Assistant"
+ if("tech_assist")
+ src.active1.fields["rank"] = "Technical Assistant"
+ if("foren_tech")
+ src.active1.fields["rank"] = "Forensic Technician"
+ if("res_tech")
+ src.active1.fields["rank"] = "Research Technician"
+ if("stat_tech")
+ src.active1.fields["rank"] = "Station Technician"
+ if("atmo_tech")
+ src.active1.fields["rank"] = "Atmospheric Technician"
+ if("engineer")
+ src.active1.fields["rank"] = "Engineer"
+ if("med_res")
+ src.active1.fields["rank"] = "Medical Researcher"
+ if("tox_res")
+ src.active1.fields["rank"] = "Toxin Researcher"
+ if("med_doc")
+ src.active1.fields["rank"] = "Medical Doctor"
+ if("secure_off")
+ src.active1.fields["rank"] = "Security Officer"
+ if("hoperson")
+ src.active1.fields["rank"] = "Head of Research"
+ if("horesearch")
+ src.active1.fields["rank"] = "Head of Personnel"
+ if("captain")
+ src.active1.fields["rank"] = "Captain"
+ else
+ else
+ if (href_list["criminal2"])
+ if (src.active2)
+ switch(href_list["criminal2"])
+ if("none")
+ src.active2.fields["criminal"] = "None"
+ if("arrest")
+ src.active2.fields["criminal"] = "*Arrest*"
+ if("incarcerated")
+ src.active2.fields["criminal"] = "Incarcerated"
+ if("parolled")
+ src.active2.fields["criminal"] = "Parolled"
+ if("released")
+ src.active2.fields["criminal"] = "Released"
+ else
+ else
+ if (href_list["del_r"])
+ if (src.active2)
+ src.temp = text("Are you sure you wish to delete the record (Security Portion Only)?
\n\tYes
\n\tNo
", src, src)
+ else
+ if (href_list["del_r2"])
+ if (src.active2)
+ src.active2 = null
+ del(src.active2)
+ else
+ if (href_list["dela_r"])
+ if (src.active1)
+ src.temp = text("Are you sure you wish to delete the record (ALL)?
\n\tYes
\n\tNo
", src, src)
+ else
+ if (href_list["dela_r2"])
+ for(var/datum/data/record/R in data_core.medical)
+ if ((R.fields["name"] == src.active1.fields["name"] || R.fields["id"] == src.active1.fields["id"]))
+ R = null
+ del(R)
+ else
+ //Foreach continue //goto(2405)
+ if (src.active2)
+ src.active2 = null
+ del(src.active2)
+ if (src.active1)
+ src.active1 = null
+ del(src.active1)
+ else
+ if (href_list["d_rec"])
+ var/R = locate(href_list["d_rec"])
+ var/S = locate(href_list["d_rec"])
+ if (!( data_core.general.Find(R) ))
+ src.temp = "Record Not Found!"
+ return
+ for(var/datum/data/record/E in data_core.security)
+ if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"]))
+ S = E
+ else
+ //Foreach continue //goto(2614)
+ src.active1 = R
+ src.active2 = S
+ src.screen = 4
+ else
+ if (href_list["new_r"])
+ var/datum/data/record/G = new /datum/data/record( )
+ G.fields["name"] = "New Record"
+ G.fields["id"] = text("[]", add_zero(num2hex(rand(1, 1.6777215E7)), 6))
+ G.fields["rank"] = "Unassigned"
+ G.fields["sex"] = "Male"
+ G.fields["age"] = "Unknown"
+ G.fields["fingerprint"] = "Unknown"
+ G.fields["p_stat"] = "Active"
+ G.fields["m_stat"] = "Stable"
+ data_core.general += G
+ src.active1 = G
+ src.active2 = null
+ else
+ if (href_list["new"])
+ if ((istype(src.active1, /datum/data/record) && !( istype(src.active2, /datum/data/record) )))
+ var/datum/data/record/R = new /datum/data/record( )
+ R.fields["name"] = src.active1.fields["name"]
+ R.fields["id"] = src.active1.fields["id"]
+ R.name = text("Security Record #[]", R.fields["id"])
+ R.fields["criminal"] = "None"
+ R.fields["mi_crim"] = "None"
+ R.fields["mi_crim_d"] = "No minor crime convictions."
+ R.fields["ma_crim"] = "None"
+ R.fields["ma_crim_d"] = "No minor crime convictions."
+ R.fields["notes"] = "No notes."
+ data_core.security += R
+ src.active2 = R
+ src.screen = 4
+ else
+ if (href_list["add_c"])
+ if (!( istype(src.active2, /datum/data/record) ))
+ return
+ var/a2 = src.active2
+ var/t1 = input("Add Comment:", "Secure. records", null, null) as message
+ if ((!( t1 ) || (!( src.authenticated ) || (usr.stat || (restrained() || (get_dist(src, usr) > 1 || src.active2 != a2))))))
+ return
+ var/counter = 1
+ while(src.active2.fields[text("com_[]", counter)])
+ counter++
+ src.active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [], 2053
[]", src.authenticated, src.rank, time2text(world.realtime, "DDD MMM DD hh:mm:ss"), t1)
+ else
+ if (href_list["del_c"])
+ if ((istype(src.active2, /datum/data/record) && src.active2.fields[text("com_[]", href_list["del_c"])]))
+ src.active2.fields[text("com_[]", href_list["del_c"])] = "Deleted"
+ else
+ if (href_list["search_f"])
+ var/t1 = input("Search String: (Fingerprint)", "Secure. records", null, null) as text
+ if ((!( t1 ) || (usr.stat || (!( src.authenticated ) || (usr.restrained() || get_dist(src, usr) > 1)))))
+ return
+ src.active1 = null
+ src.active2 = null
+ t1 = lowertext(t1)
+ for(var/datum/data/record/R in data_core.general)
+ if (lowertext(R.fields["fingerprint"]) == t1)
+ src.active1 = R
+ else
+ //Foreach continue //goto(3414)
+ if (!( src.active1 ))
+ src.temp = text("Could not locate record [].", t1)
+ else
+ for(var/datum/data/record/E in data_core.security)
+ if ((E.fields["name"] == src.active1.fields["name"] || E.fields["id"] == src.active1.fields["id"]))
+ src.active2 = E
+ else
+ //Foreach continue //goto(3502)
+ src.screen = 4
+ else
+ if (href_list["search"])
+ var/t1 = input("Search String: (Name or ID)", "Secure. records", null, null) as text
+ if ((!( t1 ) || (usr.stat || (!( src.authenticated ) || (usr.restrained() || get_dist(src, usr) > 1)))))
+ return
+ src.active1 = null
+ src.active2 = null
+ t1 = lowertext(t1)
+ for(var/datum/data/record/R in data_core.general)
+ if ((lowertext(R.fields["name"]) == t1 || t1 == lowertext(R.fields["id"])))
+ src.active1 = R
+ else
+ //Foreach continue //goto(3708)
+ if (!( src.active1 ))
+ src.temp = text("Could not locate record [].", t1)
+ else
+ for(var/datum/data/record/E in data_core.security)
+ if ((E.fields["name"] == src.active1.fields["name"] || E.fields["id"] == src.active1.fields["id"]))
+ src.active2 = E
+ else
+ //Foreach continue //goto(3813)
+ src.screen = 4
+ else
+ if (href_list["print_p"])
+ if (!( src.printing ))
+ src.printing = 1
+ sleep(50)
+ var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.loc )
+ P.info = "Security Record
"
+ if ((istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1)))
+ P.info += text("Name: [] ID: []
\nSex: []
\nAge: []
\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", src.active1.fields["name"], src.fields["id"], src.fields["sex"], src.fields["age"], src.fields["fingerprint"], src.fields["p_stat"], src.fields["m_stat"])
+ else
+ P.info += "General Record Lost!
"
+ if ((istype(src.active2, /datum/data/record) && data_core.security.Find(src.active2)))
+ P.info += text("
\nSecurity Data
\nCriminal Status: []
\n
\nMinor Crimes: []
\nDetails: []
\n
\nMajor Crimes: []
\nDetails: []
\n
\nImportant Notes:
\n\t[]
\n
\nComments/Log
", src.active2.fields["criminal"], src.fields["mi_crim"], src.fields["mi_crim_d"], src.fields["ma_crim"], src.fields["ma_crim_d"], src.fields["notes"])
+ var/counter = 1
+ while(src.active2.fields[text("com_[]", counter)])
+ P.info += text("[]
", src.fields[text("com_[]", counter)])
+ counter++
+ else
+ P.info += "Security Record Lost!
"
+ P.info += ""
+ P.name = "paper- 'Security Record'"
+ src.printing = null
+ src.add_fingerprint(usr)
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(4247)
+ return
+
+/obj/machinery/computer/sleep_console/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ src = null
+ del(src)
+ return
+ else
+ return
+
+/obj/machinery/computer/sleep_console/New()
+
+ ..()
+ spawn( 5 )
+ src.connected = locate(/obj/machinery/sleeper, get_step(src, WEST))
+ return
+ return
+
+/obj/machinery/computer/sleep_console/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/computer/sleep_console/attack_hand(user as mob)
+
+ if (src.connected)
+ var/occupant = src.connected.occupant
+ var/dat = "Occupant Statistics:
"
+ if (occupant)
+ switch(occupant.stat)
+ if(0.0)
+ var/t1 = "Conscious"
+ if(1.0)
+ t1 = "Unconscious"
+ if(2.0)
+ t1 = "*dead*"
+ else
+ dat += text("[]\tHealth %: [] ([])
", (occupant.health > 50 ? "" : ""), occupant.health, t1)
+ dat += text("[]\t-Respiratory Damage %: []
", (occupant.oxyloss < 60 ? "" : ""), occupant.oxyloss)
+ dat += text("[]\t-Toxin Content %: []
", (occupant.toxloss < 60 ? "" : ""), occupant.toxloss)
+ dat += text("[]\t-Burn Severity %: []
", (occupant.fireloss < 60 ? "" : ""), occupant.fireloss)
+ dat += text("
Paralysis Summary %: [] ([] seconds left!)
", occupant.paralysis, round(occupant.paralysis / 4))
+ dat += text("
Refresh
Inject Rejuvenators", src, src)
+ else
+ dat += "The sleeper is empty."
+ dat += text("
Close", user)
+ user << browse(dat, "window=sleeper;size=400x500")
+ return
+
+/obj/machinery/computer/sleep_console/Topic(href, href_list)
+
+ if ((usr.stat || usr.restrained()))
+ return
+ if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf))))
+ usr.machine = src
+ if (href_list["rejuv"])
+ if (src.connected)
+ src.connected.inject(usr)
+ if (href_list["refresh"])
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(123)
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/computer/sleep_console/process()
+
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(18)
+ return
+
+/obj/machinery/freezer/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/freezer/attack_hand(user as mob)
+
+ user.machine = src
+ if ((istype(user, /mob/human) && (!( ticker ) || (ticker && ticker.mode != "monkey"))))
+ if (locate(/obj/item/weapon/flasks, src))
+ var/counter = 1
+ for(var/obj/item/weapon/flasks/F as obj in src)
+ var/d1 += text("Flask []: [] / [] / []
", src, counter, counter, F.oxygen, F.plasma, F.coolant)
+ counter++
+ //Foreach goto(78)
+ d1 += "Key: Oxygen / Plasma / Coolant
"
+ else
+ d1 = "No flasks!"
+ var/t1 = null
+ switch(src.t_flags)
+ if(0.0)
+ t1 = text("Oxygen-No Plasma-No", src, src)
+ if(1.0)
+ t1 = text("Oxygen-Yes Plasma-No", src, src)
+ if(2.0)
+ t1 = text("Oxygen-No Plasma-Yes", src, src)
+ if(3.0)
+ t1 = text("Oxygen-Yes Plasma-Yes", src, src)
+ else
+ var/t2 = null
+ if (src.status)
+ t2 = text("Cooling-[] Stop", src.c_used, src)
+ else
+ t2 = text("Cool Stopped", src)
+ var/dat = text("
\n\t\tTemperature: []
\n\t\tTransfer Status: []
\n\t\t Chemicals Used: []
\n\t\tFreezer status: []
\n\t\t - - [] + +
\n
\n\t[]
\n
\n
\n\tClose
\n\t", src.temperature, (src.transfer ? text("Transfering Stop", src) : text("Transfer Stopped", src)), t1, t2, src, src, src.c_used, src, src, d1, user)
+ user << browse(dat, "window=freezer;size=400x500")
+ else
+ var/d1 = null
+ if (locate(/obj/item/weapon/flasks, src))
+ var/counter = 1
+ for(var/obj/item/weapon/flasks/F as obj in src)
+ d1 += text("[] []: []
", src, counter, stars("Flask"), counter, stars(text("[] / [] / []", F.oxygen, F.plasma, F.coolant)))
+ counter++
+ //Foreach goto(380)
+ d1 += "Key: Oxygen / Plasma / Coolant
"
+ else
+ d1 = "No flasks!"
+ var/t1 = null
+ switch(src.t_flags)
+ if(0.0)
+ t1 = text("[] []", src, stars("Oxygen-No"), src, stars("Plasma-No"))
+ if(1.0)
+ t1 = text("[] []", src, stars("Oxygen-Yes"), src, stars("Plasma-No"))
+ if(2.0)
+ t1 = text("[] []", src, stars("Oxygen-No"), src, stars("Plasma-Yes"))
+ if(3.0)
+ t1 = text("[] []", src, stars("Oxygen-Yes"), src, stars("Plasma-Yes"))
+ else
+ var/t2 = null
+ if (src.status)
+ t2 = text("Cooling-[] []", src.c_used, src, stars("Stop"))
+ else
+ t2 = text("Cool []", src, stars("Stopped"))
+ var/dat = text("
\n\t\t[]: []
\n\t\t[]: []
\n\t\t []: []
\n\t\t[]: []
\n\t\t - - [] + +
\n
\n\t[]
\n
\n
\n\tClose\n\t", stars("Temperature"), src.temperature, stars("Transfer Status"), (src.transfer ? text("Transfering Stop", src) : text("Transfer Stopped", src)), stars("Chemicals Used"), t1, stars("Freezer status"), t2, src, src, src.c_used, src, src, d1, user)
+ user << browse(dat, "window=freezer;size=400x500")
+ return
+
+/obj/machinery/freezer/Topic(href, href_list)
+
+ if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey"))))
+ usr << "\red You don't have the dexterity to do this!"
+ return
+ if ((usr.stat || usr.restrained()))
+ return
+ if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf))))
+ usr.machine = src
+ if (href_list["cp"])
+ var/cp = text2num(href_list["cp"])
+ src.c_used += cp
+ src.c_used = min(max(round(src.c_used), 0), 10)
+ if (href_list["oxygen"])
+ var/t1 = text2num(href_list["oxygen"])
+ if (t1)
+ src.t_flags |= 1
+ else
+ src.t_flags &= 65534
+ if (href_list["plasma"])
+ var/t1 = text2num(href_list["plasma"])
+ if (t1)
+ src.t_flags |= 2
+ else
+ src.t_flags &= 65533
+ if (href_list["cool"])
+ src.status = text2num(href_list["cool"])
+ src.icon_state = text("freezer_[]", src.status)
+ if (href_list["transfer"])
+ src.transfer = text2num(href_list["transfer"])
+ if (href_list["flask"])
+ var/t1 = text2num(href_list["flask"])
+ if (t1 <= src.contents.len)
+ var/F = src.contents[t1]
+ F.loc = src.loc
+ src.rebuild_overlay()
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/freezer/process()
+
+ if (src.contents.len >= 3)
+ var/F3 = src.contents[3]
+ if (src.contents.len >= 2)
+ var/F2 = src.contents[2]
+ if (src.contents.len >= 1)
+ var/F1 = src.contents[1]
+ var/u_cool = 0
+ if (src.status)
+ u_cool = src.c_used
+ if ((F2 && F2.coolant))
+ if (F2.coolant >= u_cool)
+ F2.coolant -= u_cool
+ else
+ u_cool = F2.coolant
+ F2.coolant = 0
+ else
+ if ((F1 && F1.coolant))
+ if (F1.coolant >= u_cool)
+ F1.coolant -= u_cool
+ else
+ u_cool = F1.coolant
+ F1.coolant = 0
+ else
+ if ((F3 && F3.coolant))
+ if (F3.coolant >= u_cool)
+ F3.coolant -= u_cool
+ else
+ u_cool = F3.coolant
+ F3.coolant = 0
+ else
+ u_cool = 0
+ if (u_cool)
+ src.temperature = max(-100.0, src.temperature - (u_cool * 5))
+ src.temperature = min(src.temperature + 5, 20)
+ if (src.transfer)
+ var/u_oxy = 0
+ var/u_pla = 0
+ if (src.t_flags & 1)
+ u_oxy = 1
+ if ((F1 && F1.oxygen))
+ if (F1.oxygen >= u_oxy)
+ F1.oxygen -= u_oxy
+ else
+ u_oxy = F1.oxygen
+ F1.oxygen = 0
+ else
+ if ((F2 && F2.oxygen))
+ if (F2.oxygen >= u_oxy)
+ F2.oxygen -= u_oxy
+ else
+ u_oxy = F2.oxygen
+ F2.oxygen = 0
+ else
+ if ((F3 && F3.oxygen))
+ if (F3.oxygen >= u_oxy)
+ F3.oxygen -= u_oxy
+ else
+ u_oxy = F3.oxygen
+ F3.oxygen = 0
+ else
+ u_oxy = 0
+ if (src.t_flags & 2)
+ u_pla = 1
+ if ((F3 && F3.plasma))
+ if (F3.plasma >= u_pla)
+ F3.plasma -= u_pla
+ else
+ u_pla = F3.plasma
+ F3.plasma = 0
+ else
+ if ((F2 && F2.plasma))
+ if (F2.plasma >= u_pla)
+ F2.plasma -= u_pla
+ else
+ u_pla = F2.plasma
+ F2.plasma = 0
+ else
+ if ((F1 && F1.plasma))
+ if (F1.plasma >= u_pla)
+ F1.plasma -= u_pla
+ else
+ u_pla = F1.plasma
+ F1.plasma = 0
+ else
+ u_pla = 0
+ if ((u_oxy + u_pla) > 0)
+ var/obj/substance/gas/G = new /obj/substance/gas( null )
+ G.oxygen = u_oxy
+ G.plasma = u_pla
+ G.temperature = src.temperature
+ spawn( 3 )
+ if (src.line_out)
+ src.line_out.receive_gas(G, src)
+ return
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(809)
+ return
+
+/obj/machinery/freezer/receive_gas(S as obj, source as obj)
+
+ S = null
+ del(S)
+ return
+
+/obj/machinery/freezer/orient_pipe(P as obj)
+
+ if (!( src.line_out ))
+ src.line_out = P
+ else
+ return 0
+ return 1
+ return
+
+/obj/machinery/freezer/New()
+
+ ..()
+ var/obj/overlay/O1 = new /obj/overlay( )
+ O1.icon = 'Cryogenic2.dmi'
+ O1.icon_state = "canister connector_0"
+ O1.pixel_y = -16.0
+ src.overlays += O1
+ src.connector = O1
+ new /obj/item/weapon/flasks/oxygen( src )
+ new /obj/item/weapon/flasks/coolant( src )
+ new /obj/item/weapon/flasks/plasma( src )
+ src.rebuild_overlay()
+ spawn( 50 )
+ for(var/obj/machinery/M as obj in orange(src, 1))
+ if ((M.level == src.level && (src.p_dir & get_dir(src, M) && M.p_dir & get_dir(M, src))))
+ if (!( src.line_out ))
+ src.line_out = M
+ //Foreach goto(117)
+ return
+ return
+
+/obj/machinery/freezer/attackby(F as obj, user as mob)
+
+ if (!( istype(F, /obj/item/weapon/flasks) ))
+ return
+ if (src.contents.len >= 3)
+ user << "\blue All slots are full!"
+ return
+ else
+ user.drop_item()
+ F.loc = src
+ src.rebuild_overlay()
+ return
+
+/obj/machinery/freezer/proc/rebuild_overlay()
+
+ for(var/x in src.overlays)
+ src.overlays -= x
+ //Foreach goto(17)
+ src.overlays += src.connector
+ var/counter = 0
+ for(var/obj/item/weapon/flasks/F as obj in src.contents)
+ var/obj/overlay/O = new /obj/overlay( )
+ O.icon = F.icon
+ O.icon_state = F.icon_state
+ O.pixel_y = -17.0
+ O.pixel_x = counter * 12
+ src.overlays += O
+ counter++
+ if (counter >= 3)
+ return
+ //Foreach goto(64)
+ return
+
+/obj/machinery/sleeper/allow_drop()
+
+ return 0
+ return
+
+/obj/machinery/sleeper/process()
+
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(18)
+ return
+
+/obj/machinery/sleeper/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ for(var/atom/movable/A as mob|obj in src)
+ A.loc = src.loc
+ ex_act(severity)
+ //Foreach goto(31)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/atom/movable/A as mob|obj in src)
+ A.loc = src.loc
+ ex_act(severity)
+ //Foreach goto(104)
+ src = null
+ del(src)
+ return
+ else
+ return
+
+/obj/machinery/sleeper/verb/eject()
+ set src in oview(1)
+
+ if (usr.stat != 0)
+ return
+ src.go_out()
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/sleeper/verb/move_inside()
+ set src in oview(1)
+
+ if (usr.stat != 0)
+ return
+ if (src.occupant)
+ usr << "\blue The sleeper is already occupied!"
+ return
+ if (usr.abiotic())
+ usr << "Subject may not have abiotic items on."
+ return
+ usr.pulling = null
+ usr.client.perspective = EYE_PERSPECTIVE
+ usr.client.eye = src
+ usr.loc = src
+ src.occupant = usr
+ src.icon_state = "sleeper_1"
+ for(var/obj/O as obj in src)
+ O = null
+ del(O)
+ //Foreach goto(124)
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/sleeper/attackby(G as obj, user as mob)
+
+ if ((!( istype(G, /obj/item/weapon/grab) ) || !( ismob(G.affecting) )))
+ return
+ if (src.occupant)
+ user << "\blue The sleeper is already occupied!"
+ return
+ if (G.affecting.abiotic())
+ user << "Subject may not have abiotic items on."
+ return
+ var/M = G.affecting
+ if (M.client)
+ M.client.perspective = EYE_PERSPECTIVE
+ M.client.eye = src
+ M.loc = src
+ src.occupant = M
+ src.icon_state = "sleeper_1"
+ for(var/obj/O as obj in src)
+ O.loc = src.loc
+ //Foreach goto(154)
+ src.add_fingerprint(user)
+ G = null
+ del(G)
+ return
+
+/obj/machinery/sleeper/proc/go_out()
+
+ if (!( src.occupant ))
+ return
+ for(var/obj/O as obj in src)
+ O.loc = src.loc
+ //Foreach goto(26)
+ if (src.occupant.client)
+ src.eye = src.occupant.client.mob
+ src.occupant.client.perspective = MOB_PERSPECTIVE
+ src.occupant.loc = src.loc
+ src.occupant = null
+ src.icon_state = "sleeper_0"
+ return
+
+/obj/machinery/sleeper/proc/inject(user as mob)
+
+ if (src.occupant)
+ if (src.occupant.rejuv < 60)
+ src.rejuv = 60
+ user << text("Occupant now has [] units of rejuvenation in his/her bloodstream.", src.occupant.rejuv)
+ else
+ user << "No occupant!"
+ return
+
+/obj/machinery/sleeper/proc/check(user as mob)
+
+ if (src.occupant)
+ user << text("\blue Occupant ([]) Statistics:", src.occupant)
+ switch(src.occupant.stat)
+ if(0.0)
+ var/t1 = "Conscious"
+ if(1.0)
+ t1 = "Unconscious"
+ if(2.0)
+ t1 = "*dead*"
+ else
+ user << text("[]\t Health %: [] ([])", (src.occupant.health > 50 ? "\blue " : "\red "), src.occupant.health, t1)
+ user << text("[]\t -Respiratory Damage %: []", (src.oxyloss < 60 ? "\blue " : "\red "), src.occupant.oxyloss)
+ user << text("[]\t -Toxin Content %: []", (src.toxloss < 60 ? "\blue " : "\red "), src.occupant.toxloss)
+ user << text("[]\t -Burn Severity %: []", (src.fireloss < 60 ? "\blue " : "\red "), src.occupant.fireloss)
+ user << "\blue Expected time till occupant can safely awake: (note: If health is below 20% these times are inaccurate)"
+ user << text("\blue \t [] second\s (if around 1 or 2 the sleeper is keeping them asleep.)", src.paralysis / 5)
+ else
+ user << "\blue There is no one inside!"
+ return
+
+/obj/machinery/sleeper/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ for(var/atom/movable/A as mob|obj in src)
+ A.loc = src.loc
+ ex_act(severity)
+ //Foreach goto(35)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/atom/movable/A as mob|obj in src)
+ A.loc = src.loc
+ ex_act(severity)
+ //Foreach goto(108)
+ src = null
+ del(src)
+ return
+ if(3.0)
+ if (prob(25))
+ for(var/atom/movable/A as mob|obj in src)
+ A.loc = src.loc
+ ex_act(severity)
+ //Foreach goto(181)
+ src = null
+ del(src)
+ return
+ else
+ return
+
+/obj/machinery/sleeper/alter_health(M as mob)
+
+ if (M.health > 0)
+ if (M.oxyloss >= 10)
+ var/amount = max(0.15, 1)
+ M.oxyloss -= amount
+ else
+ M.oxyloss = 0
+ M.health = (((100 - M.oxyloss) - M.toxloss) - M.fireloss) - M.bruteloss
+ M.paralysis -= 4
+ M.weakened -= 4
+ M.stunned -= 4
+ if (M.paralysis <= 1)
+ M.paralysis = 3
+ if (M.weakened <= 1)
+ M.weakened = 3
+ if (M.stunned <= 1)
+ M.stunned = 3
+ if (M.rejuv < 3)
+ M.rejuv = 4
+ return
+
+/obj/machinery/cryo_cell/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(54)
+ src.icon_state = "broken"
+ else
+ return
+
+/obj/machinery/cryo_cell/orient_pipe(P as obj)
+
+ if (!( src.line_in ))
+ src.line_in = P
+ else
+ return 0
+ return 1
+ return
+
+/obj/machinery/cryo_cell/allow_drop()
+
+ return 0
+ return
+
+/obj/machinery/cryo_cell/New()
+
+ ..()
+ src.gas = new /obj/substance/gas( null )
+ spawn( 50 )
+ for(var/obj/machinery/M as obj in orange(src, 1))
+ if ((M.level == src.level && (src.p_dir & get_dir(src, M) && M.p_dir & get_dir(M, src))))
+ if (!( src.line_in ))
+ src.line_in = M
+ //Foreach goto(42)
+ return
+ return
+
+/obj/machinery/cryo_cell/verb/move_eject()
+ set src in oview(1)
+
+ if (usr.stat != 0)
+ return
+ src.go_out()
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/cryo_cell/verb/move_inside()
+ set src in oview(1)
+
+ if (usr.stat != 0)
+ return
+ if (src.occupant)
+ usr << "\blue The cell is already occupied!"
+ return
+ if (usr.abiotic())
+ usr << "Subject may not have abiotic items on."
+ return
+ usr.pulling = null
+ usr.client.perspective = EYE_PERSPECTIVE
+ usr.client.eye = src
+ usr.loc = src
+ src.occupant = usr
+ src.icon_state = "celltop_1"
+ for(var/obj/O as obj in src)
+ O.loc = src.loc
+ //Foreach goto(124)
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/cryo_cell/attackby(G as obj, user as mob)
+
+ if ((!( istype(G, /obj/item/weapon/grab) ) || !( ismob(G.affecting) )))
+ return
+ if (src.occupant)
+ user << "\blue The cell is already occupied!"
+ return
+ if (G.affecting.abiotic())
+ user << "Subject may not have abiotic items on."
+ return
+ var/M = G.affecting
+ if (M.client)
+ M.client.perspective = EYE_PERSPECTIVE
+ M.client.eye = src
+ M.loc = src
+ src.occupant = M
+ src.icon_state = "celltop_1"
+ for(var/obj/O as obj in src)
+ O = null
+ del(O)
+ //Foreach goto(154)
+ src.add_fingerprint(user)
+ G = null
+ del(G)
+ return
+
+/obj/machinery/cryo_cell/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/cryo_cell/attack_hand(user as mob)
+
+ user.machine = src
+ if (istype(user, /mob/human))
+ var/dat = " System Statistics:
"
+ if (src.gas.temperature > 0)
+ dat += text("\tTemperature (Farenheight): [] (MUST be below 0, add coolant to mixture)
", src.temperature)
+ else
+ dat += text("\tTemperature(Farenheight): []
", src.temperature)
+ if (src.gas.plasma < 1)
+ dat += text("\tPlasma Units: [] (Add plasma to mixture!)
", src.plasma)
+ else
+ dat += text("\tPlasma Units: []
", src.plasma)
+ if (src.gas.oxygen < 1)
+ dat += text("\tOxygen Units: [] (Add oxygen to mixture!)
", src.oxygen)
+ else
+ dat += text("\tOxygen Units: []
", src.oxygen)
+ if (src.occupant)
+ dat += "Occupant Statistics:
"
+ switch(src.occupant.stat)
+ if(0.0)
+ var/t1 = "Conscious"
+ if(1.0)
+ t1 = "Unconscious"
+ if(2.0)
+ t1 = "*dead*"
+ else
+ dat += text("[]\tHealth %: [] ([])
", (src.occupant.health > 50 ? "" : ""), src.occupant.health, t1)
+ dat += text("[]\t-Respiratory Damage %: []
", (src.occupant.oxyloss < 60 ? "" : ""), src.occupant.oxyloss)
+ dat += text("[]\t-Toxin Content %: []
", (src.occupant.toxloss < 60 ? "" : ""), src.occupant.toxloss)
+ dat += text("[]\t-Burn Severity %: []", (src.occupant.fireloss < 60 ? "" : ""), src.occupant.fireloss)
+ dat += text("
Close", user)
+ user << browse(dat, "window=cryo;size=400x500")
+ else
+ var/dat = text(" []
", stars("System Statistics:"))
+ if (src.gas.temperature > 0)
+ dat += text("\t[]
", stars(text("Temperature (Farenheight): [] (MUST be below 0, add coolant to mixture)", src.temperature)))
+ else
+ dat += text("\t[]
", stars(text("Temperature(Farenheight): []", src.temperature)))
+ if (src.gas.plasma < 1)
+ dat += text("\t[]
", stars(text("Plasma Units: [] (Add plasma to mixture!)", src.plasma)))
+ else
+ dat += text("\t[]
", stars(text("Plasma Units: []", src.plasma)))
+ if (src.gas.oxygen < 1)
+ dat += text("\t[]
", stars(text("Oxygen Units: [] (Add oxygen to mixture!)", src.oxygen)))
+ else
+ dat += text("\t[]
", stars(text("Oxygen Units: []", src.oxygen)))
+ if (src.occupant)
+ dat += "Occupant Statistics:
"
+ var/t1 = null
+ switch(src.occupant.stat)
+ if(0.0)
+ t1 = "Conscious"
+ if(1.0)
+ t1 = "Unconscious"
+ if(2.0)
+ t1 = "*dead*"
+ else
+ dat += text("[]\t[]
", (src.occupant.health > 50 ? "" : ""), stars(text("Health %: [] ([])", src.occupant.health, t1)))
+ dat += text("[]\t[]
", (src.occupant.oxyloss < 60 ? "" : ""), stars(text("-Respiratory Damage %: []", src.occupant.oxyloss)))
+ dat += text("[]\t[]
", (src.occupant.toxloss < 60 ? "" : ""), stars(text("-Toxin Content %: []", src.occupant.toxloss)))
+ dat += text("[]\t[]", (src.occupant.fireloss < 60 ? "" : ""), stars(text("-Burn Severity %: []", src.occupant.fireloss)))
+ dat += text("
Close", user)
+ user << browse(dat, "window=cryo;size=400x500")
+ return
+
+/obj/machinery/cryo_cell/proc/go_out()
+
+ if (!( src.occupant ))
+ return
+ for(var/obj/O as obj in src)
+ O.loc = src.loc
+ //Foreach goto(26)
+ if (src.occupant.client)
+ src.eye = src.occupant.client.mob
+ src.occupant.client.perspective = MOB_PERSPECTIVE
+ src.occupant.loc = src.loc
+ src.occupant = null
+ src.icon_state = "celltop"
+ return
+
+/obj/machinery/cryo_cell/relaymove(user as mob)
+
+ if (user.stat)
+ return
+ src.go_out()
+ return
+
+/obj/machinery/cryo_cell/alter_health(M as mob)
+
+ if (M.health < 0)
+ if ((src.gas.temperature > 0 || src.plasma < 1))
+ return
+ if (M.stat == 2)
+ return
+ if (src.gas.oxygen >= 1)
+ src.oxygen--
+ if (M.oxyloss >= 10)
+ var/amount = max(0.15, 2)
+ M.oxyloss -= amount
+ else
+ M.oxyloss = 0
+ M.health = (((100 - M.oxyloss) - M.toxloss) - M.fireloss) - M.bruteloss
+ if ((src.gas.temperature < 0 && src.plasma >= 1))
+ src.gas.plasma--
+ if (M.toxloss > 5)
+ var/amount = max(0.1, 2)
+ M.toxloss -= amount
+ else
+ M.toxloss = 0
+ M.health = (((100 - M.oxyloss) - M.toxloss) - M.fireloss) - M.bruteloss
+ if (istype(M, /mob/human))
+ var/H = M
+ var/ok = 0
+ for(var/organ in H.organs)
+ var/affecting = H.organs[text("[]", organ)]
+ ok += affecting.heal_damage(5, 5)
+ //Foreach goto(267)
+ if (ok)
+ H.UpdateDamageIcon()
+ else
+ H.UpdateDamage()
+ else
+ if (H.fireloss > 15)
+ var/amount = max(0.3, 2)
+ H.fireloss -= amount
+ else
+ H.fireloss = 0
+ if (M.bruteloss > 10)
+ var/amount = max(0.3, 2)
+ M.bruteloss -= amount
+ else
+ M.bruteloss = 0
+ M.health = (((100 - M.oxyloss) - M.toxloss) - M.fireloss) - M.bruteloss
+ M.paralysis += 5
+ if (src.gas.temperature < 60)
+ src.temperature = min(src.temperature + 1, 60)
+ for(var/E as mob in viewers(1, src))
+ if ((E.client && E.machine == src))
+ src.attack_hand(E)
+ //Foreach goto(489)
+ return
+ return
+
+/obj/machinery/cryo_cell/receive_gas(S as obj, source as obj)
+
+ if (!( istype(S, /obj/substance/gas) ))
+ S = null
+ del(S)
+ return
+ else
+ src.gas.merge_into(S)
+ S = null
+ del(S)
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(74)
+ return
+
+/obj/machinery/cryo_cell/New()
+
+ ..()
+ src.layer = 5
+ var/obj/overlay/O1 = new /obj/overlay( )
+ O1.icon = 'Cryogenic2.dmi'
+ O1.icon_state = "cellconsole"
+ O1.pixel_y = -32.0
+ O1.layer = 4
+ var/obj/overlay/O2 = new /obj/overlay( )
+ O2.icon = 'Cryogenic2.dmi'
+ O2.icon_state = "cellbottom"
+ O2.pixel_y = -32.0
+ src.pixel_y = 32
+ src.overlays += O2
+ src.overlays += O1
+ return
+
+/obj/item/weapon/flasks/examine()
+ set src in oview(1)
+
+ usr << text("The flask is []% full", (((src.oxygen + src.plasma) + src.coolant) * 100) / 500)
+ usr << "The flask can ONLY store liquids."
+ return
+
+/mob/human/abiotic()
+
+ if (((src.l_hand && !( src.l_hand.abstract )) || ((src.r_hand && !( src.r_hand.abstract )) || (src.back || (src.wear_mask || (src.head || (src.shoes || (src.w_uniform || (src.wear_suit || (src.w_radio || (src.glasses || (src.ears || src.gloves))))))))))))
+ return 1
+ else
+ return 0
+ return
+
+/mob/proc/abiotic()
+
+ if (((src.l_hand && !( src.l_hand.abstract )) || ((src.r_hand && !( src.r_hand.abstract )) || (src.back || src.wear_mask))))
+ return 1
+ else
+ return 0
+ return
+
+/datum/data/function/proc/reset()
+
+ return
+
+/datum/data/function/proc/r_input(href, href_list, user as mob)
+
+ return
+
+/datum/data/function/proc/display()
+
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/dam_zones.dmi b/ss13-40.93.2-decomp/spacestation13/dam_zones.dmi
new file mode 100644
index 0000000..be4ca69
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/dam_zones.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/demo.dm b/ss13-40.93.2-decomp/spacestation13/demo.dm
new file mode 100644
index 0000000..32570a7
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/demo.dm
@@ -0,0 +1,2876 @@
+
+/obj/machinery/door/meteorhit(M as obj)
+
+ src.open()
+ return
+
+/obj/machinery/door/Move()
+
+ ..()
+ if (src.density)
+ var/location = src.loc
+ if (istype(location, /turf))
+ location.updatecell = 0
+ return
+
+/obj/machinery/door/attackby(I as obj, user as mob)
+
+ if (src.operating)
+ return
+ src.add_fingerprint(user)
+ if ((src.density && istype(I, /obj/item/weapon/card/emag)))
+ src.operating = 1
+ flick("door_spark", src)
+ sleep(6)
+ src.operating = null
+ open()
+ return 1
+ if (istype(usr, /mob/human))
+ var/H = usr
+ var/card = H.wear_id
+ if (istype(I, /obj/item/weapon/card/id))
+ card = I
+ else
+ if (!( istype(card, /obj/item/weapon/card/id) ))
+ return 0
+ if ((card.air_access >= src.r_air && (card.lab_access >= src.r_lab && (card.engine_access >= src.r_engine && card.access_level >= src.r_access))))
+ if (src.density)
+ open()
+ else
+ close()
+ else
+ if (src.density)
+ flick("door_deny", src)
+ return
+
+/obj/machinery/door/window/close()
+
+ ..()
+ var/T = src.loc
+ if (T)
+ T.updatecell = 1
+ return
+
+/obj/machinery/door/window/New()
+
+ ..()
+ var/T = src.loc
+ if (T)
+ T.updatecell = 1
+ if ((src.r_air || (src.r_engine || (src.r_access || src.r_lab))))
+ src.icon = 'security.dmi'
+ return
+
+/obj/machinery/door/window/Bumped(AM as mob|obj)
+
+ if (!( ismob(AM) ))
+ return
+ if (!( ticker ))
+ return
+ if (src.operating)
+ return
+ if ((src.r_air == 0 && (src.r_engine == 0 && (src.r_lab == 0 && src.r_access == 0))))
+ src.open()
+ sleep(50)
+ src.close()
+ return
+
+/obj/machinery/door/window/CheckPass(O as mob|obj, target as turf)
+
+ if (src.density)
+ var/direct = get_dir(O, target)
+ if ((direct == NORTH && src.dir & 12))
+ return 0
+ else
+ if ((direct == WEST && src.dir & 3))
+ return 0
+ return 1
+ return
+
+/obj/machinery/door/window/CheckExit(O as mob|obj, target as turf)
+
+ if (src.density)
+ var/direct = get_dir(O, target)
+ if ((direct == SOUTH && src.dir & 12))
+ return 0
+ else
+ if ((direct == EAST && src.dir & 3))
+ return 0
+ return 1
+ return
+
+/obj/machinery/door/false_wall/New()
+
+ src.verbs -= /atom/movable/verb/pull
+ return
+
+/obj/machinery/door/false_wall/examine()
+ set src in oview(1)
+
+ usr << "It looks like a regular wall"
+ return
+
+/obj/machinery/door/false_wall/attack_paw(user as mob)
+
+ if ((ticker && ticker.mode == "monkey"))
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/door/false_wall/attack_hand(user as mob)
+
+ src.add_fingerprint(user)
+ if (src.density)
+ if (prob(25))
+ src.open()
+ else
+ user << "\blue You push the wall but nothing happens!"
+ else
+ src.close()
+ return
+
+/obj/machinery/door/false_wall/attackby(S as obj, user as mob)
+
+ src.add_fingerprint(user)
+ if (istype(S, /obj/item/weapon/screwdriver))
+ new /obj/item/weapon/sheet/metal( src.loc )
+ new /obj/d_girders( src.loc )
+ src = null
+ del(src)
+ return
+ else
+ ..()
+ return
+
+/obj/machinery/door/airlock/proc/update()
+
+ if (((!( src.wires & 2 ) || (!( src.wires & 8 ) || (!( src.wires & 32 ) || (!( src.wires & 64 ) || (!( src.wires & 128 ) || !( src.wires & 256 )))))) && src.powered))
+ src.locked = 1
+ if ((!( src.wires & 1 ) && (!( src.wires & 4 ) && !( src.wires & 16 ))))
+ src.powered = 0
+ else
+ src.powered = 1
+ var/d = src.density
+ if (src.blocked)
+ d = "l"
+ src.icon_state = text("[]door[]", (src.p_open ? "o_" : null), d)
+ return
+
+/obj/machinery/door/airlock/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/door/airlock/attack_hand(user as mob)
+
+ if (src.p_open)
+ user.machine = src
+ var/t1 = text("Access Panel
\nOrange Wire: []
\nDark Red Wire: []
\nWhite Wire: []
\nYellow Wire: []
\nRed Wire: []
\nBlue Wire: []
\nGreen Wire: []
\nGrey Wire: []
\nBlack Wire: []
\n
\n[]
\n[]", (src.wires & 256 ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & 128 ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & 64 ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & 32 ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & 16 ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & 8 ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & 4 ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & 2 ? text("Cut Wire", src) : text("Mend Wire", src)), (src.wires & 1 ? text("Cut Wire", src) : text("Mend Wire", src)), (src.locked ? "The door bolts have fallen!" : "The door bolts look up."), (src.powered ? "The test light is on." : "The test light is off!"))
+ user << browse(t1, "window=airlock")
+ return
+
+/obj/machinery/door/airlock/Topic(href, href_list)
+
+ if (usr.stat)
+ return
+ if ((get_dist(src, usr) <= 1 && istype(src.loc, /turf)))
+ usr.machine = src
+ if (href_list["wires"])
+ var/t1 = text2num(href_list["wires"])
+ if (!( istype(usr.equipped(), /obj/item/weapon/wirecutters) ))
+ return
+ if (!( src.p_open ))
+ return
+ if (t1 & 1)
+ if (src.wires & 1)
+ src.wires &= 65534
+ else
+ src.wires |= 1
+ else
+ if (t1 & 2)
+ if (src.wires & 2)
+ src.wires &= 65533
+ else
+ src.wires |= 2
+ else
+ if (t1 & 4)
+ if (src.wires & 4)
+ src.wires &= 65531
+ else
+ src.wires |= 4
+ else
+ if (t1 & 8)
+ if (src.wires & 8)
+ src.wires &= 65527
+ else
+ src.wires |= 8
+ else
+ if (t1 & 16)
+ if (src.wires & 16)
+ src.wires &= 65519
+ else
+ src.wires |= 16
+ else
+ if (t1 & 32)
+ if (src.wires & 32)
+ src.wires &= 65503
+ else
+ src.wires |= 32
+ else
+ if (t1 & 64)
+ if (src.wires & 64)
+ src.wires &= 65471
+ else
+ src.wires |= 64
+ else
+ if (t1 & 128)
+ if (src.wires & 128)
+ src.wires &= 65407
+ else
+ src.wires |= 128
+ else
+ if (t1 & 256)
+ if (src.wires & 256)
+ src.wires &= 65279
+ else
+ src.wires |= 256
+ src.update()
+ src.add_fingerprint(usr)
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(477)
+ return
+
+/obj/machinery/door/airlock/attackby(C as obj, user as mob)
+
+ src.add_fingerprint(user)
+ if ((istype(C, /obj/item/weapon/weldingtool) && (!( src.operating ) && src.density)))
+ var/W = C
+ if (W.weldfuel > 2)
+ W.weldfuel -= 2
+ else
+ user << "Need more wleding fuel!"
+ return
+ if (!( src.blocked ))
+ src.blocked = 1
+ else
+ src.blocked = null
+ src.update()
+ return
+ else
+ if (istype(C, /obj/item/weapon/wrench))
+ if (src.p_open)
+ if (src.powered)
+ src.locked = null
+ else
+ user << alert("You need power assist!", null, null, null, null, null)
+ src.update()
+ else
+ if (istype(C, /obj/item/weapon/screwdriver))
+ src.p_open = !( src.p_open )
+ update()
+ else
+ if (istype(C, /obj/item/weapon/crowbar))
+ if ((src.density && (!( src.blocked ) && (!( src.operating ) && (!( src.powered ) && !( src.locked ))))))
+ spawn( 0 )
+ src.operating = 1
+ flick(text("[]doorc0", (src.p_open ? "o_" : null)), src)
+ src.icon_state = text("[]door0", (src.p_open ? "o_" : null))
+ sleep(15)
+ src.density = 0
+ src.opacity = 0
+ var/T = src.loc
+ if (istype(T, /turf))
+ T.updatecell = 1
+ src.operating = 0
+ return
+ else
+ ..()
+ return
+
+/obj/machinery/door/airlock/open()
+
+ if ((src.blocked || (src.locked || !( src.powered ))))
+ return
+ ..()
+ return
+
+/obj/machinery/door/airlock/close()
+
+ if (!( src.powered ))
+ return
+ ..()
+ var/T = src.loc
+ if (T)
+ T.firelevel = 0
+ return
+
+/obj/machinery/door/firedoor/open()
+
+ usr << "This is a remote firedoor!"
+ return
+
+/obj/machinery/door/firedoor/close()
+
+ usr << "This is a remote firedoor!"
+ return
+
+/obj/machinery/door/firedoor/attackby(C as obj, user as mob)
+
+ src.add_fingerprint(user)
+ if ((istype(C, /obj/item/weapon/weldingtool) && (!( src.operating ) && src.density)))
+ var/W = C
+ if (W.weldfuel > 2)
+ W.weldfuel -= 2
+ if (!( src.blocked ))
+ src.blocked = 1
+ src.icon_state = "doorl"
+ else
+ src.blocked = 0
+ src.icon_state = "door1"
+ return
+ else
+ if (!( istype(C, /obj/item/weapon/crowbar) ))
+ return
+ if ((src.density && (!( src.blocked ) && !( src.operating ))))
+ spawn( 0 )
+ src.operating = 1
+ flick("doorc0", src)
+ src.icon_state = "door0"
+ sleep(15)
+ src.density = 0
+ src.opacity = 0
+ var/T = src.loc
+ if (istype(T, /turf))
+ T.updatecell = 1
+ src.operating = 0
+ return
+ return
+
+/obj/machinery/door/firedoor/proc/openfire()
+ set src in oview(1)
+
+ if ((src.operating || src.blocked))
+ return
+ src.operating = 1
+ flick("doorc0", src)
+ src.icon_state = "door0"
+ sleep(15)
+ src.density = 0
+ src.opacity = 0
+ var/T = src.loc
+ if (istype(T, /turf))
+ T.updatecell = 1
+ src.operating = 0
+ return
+
+/obj/machinery/door/firedoor/proc/closefire()
+ set src in oview(1)
+
+ if (src.operating)
+ return
+ src.operating = 1
+ flick("doorc1", src)
+ src.icon_state = "door1"
+ src.density = 1
+ src.opacity = 1
+ var/T = src.loc
+ if (istype(T, /turf))
+ T.updatecell = 0
+ T.firelevel = 0
+ sleep(15)
+ src.operating = 0
+ return
+
+/obj/machinery/door/New()
+
+ ..()
+ var/T = src.loc
+ if (istype(T, /turf))
+ if (src.density)
+ T.updatecell = 0
+ return
+
+/obj/machinery/door/proc/open()
+
+ if (src.operating)
+ return
+ src.operating = 1
+ flick(text("[]doorc0", (src.p_open ? "o_" : null)), src)
+ src.icon_state = text("[]door0", (src.p_open ? "o_" : null))
+ sleep(15)
+ src.density = 0
+ src.opacity = 0
+ var/T = src.loc
+ if (istype(T, /turf))
+ T.updatecell = 1
+ src.operating = 0
+ return
+
+/obj/machinery/door/proc/close()
+
+ if (src.operating)
+ return
+ src.operating = 1
+ flick(text("[]doorc1", (src.p_open ? "o_" : null)), src)
+ src.icon_state = text("[]door1", (src.p_open ? "o_" : null))
+ src.density = 1
+ if (src.visible)
+ src.opacity = 1
+ var/T = src.loc
+ if (istype(T, /turf))
+ T.updatecell = 0
+ sleep(15)
+ src.operating = 0
+ return
+
+/obj/machinery/igniter/attack_paw(user as mob)
+
+ if ((ticker && ticker.mode == "monkey"))
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/igniter/attack_hand(user as mob)
+
+ ..()
+ src.on = !( src.on )
+ src.icon_state = text("igniter[]", src.on)
+ src.add_fingerprint(user)
+ return
+
+/obj/machinery/igniter/process()
+
+ if (src.on)
+ var/T = src.loc
+ if (locate(/obj/move, T))
+ T = locate(/obj/move, T)
+ if (T.firelevel < 900000.0)
+ T.firelevel = T.poison
+ return
+
+/obj/machinery/firealarm/burn(fi_amount)
+
+ src.alarm()
+ return
+
+/obj/machinery/firealarm/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/firealarm/attackby(W as obj, user as mob)
+
+ if (istype(W, /obj/item/weapon/wirecutters))
+ src.detecting = !( src.detecting )
+ if (src.detecting)
+ viewers(user, null) << text("\red [] has reconnected []'s detecting unit!", user, src)
+ else
+ viewers(user, null) << text("\red [] has disconnected []'s detecting unit!", user, src)
+ else
+ src.alarm()
+ src.add_fingerprint(user)
+ return
+
+/obj/machinery/firealarm/process()
+
+ if (src.timing)
+ if (src.time > 0)
+ src.time = round(src.time) - 1
+ else
+ src.alarm()
+ src.time = 0
+ src.timing = 0
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(68)
+ return
+
+/obj/machinery/firealarm/attack_hand(user as mob)
+
+ user.machine = src
+ var/A = src.loc
+ if (istype(user, /mob/human))
+ A = A.loc
+ if (A.fire)
+ var/d1 = text("Reset - Lockdown", src)
+ else
+ d1 = text("Alarm - Lockdown", src)
+ if (src.timing)
+ var/d2 = text("Stop Time Lock", src)
+ else
+ d2 = text("Initiate Time Lock", src)
+ var/second = src.time % 60
+ var/minute = (src.time - second) / 60
+ var/dat = text("Fire alarm []\n
\nTimer System: []
\nTime Left: [][] - - + +\n", d1, d2, (minute ? text("[]:", minute) : null), second, src, src, src, src)
+ user << browse(dat, "window=firealarm")
+ else
+ A = A.loc
+ if (A.fire)
+ d1 = text("[]", src, stars("Reset - Lockdown"))
+ else
+ d1 = text("[]", src, stars("Alarm - Lockdown"))
+ if (src.timing)
+ d2 = text("[]", src, stars("Stop Time Lock"))
+ else
+ d2 = text("[]", src, stars("Initiate Time Lock"))
+ var/second = src.time % 60
+ var/minute = (src.time - second) / 60
+ var/dat = text("[] []\n
\nTimer System: []
\nTime Left: [][] - - + +\n", stars("Fire alarm"), d1, d2, (minute ? text("[]:", minute) : null), second, src, src, src, src)
+ user << browse(dat, "window=firealarm")
+ return
+
+/obj/machinery/firealarm/Topic(href, href_list)
+
+ if (usr.stat)
+ return
+ if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf))))
+ usr.machine = src
+ if (href_list["reset"])
+ src.reset()
+ else
+ if (href_list["alarm"])
+ src.alarm()
+ else
+ if (href_list["time"])
+ src.timing = text2num(href_list["time"])
+ else
+ if (href_list["tp"])
+ var/tp = text2num(href_list["tp"])
+ src.time += tp
+ src.time = min(max(round(src.time), 0), 120)
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(194)
+ src.add_fingerprint(usr)
+ else
+ usr << browse(null, "window=firealarm")
+ return
+ return
+
+/obj/machinery/firealarm/proc/reset()
+
+ if (!( src.working ))
+ return
+ var/A = src.loc
+ A = A.loc
+ if (!( istype(A, /area) ))
+ return
+ A.fire = 0
+ if (A.icon_state == "blue-red")
+ A.icon_state = "red"
+ else
+ A.icon_state = null
+ for(var/obj/machinery/door/firedoor/D as obj in A)
+ if (D.density)
+ spawn( 0 )
+ openfire()
+ return
+ //Foreach goto(93)
+ return
+
+/obj/machinery/firealarm/proc/alarm()
+
+ if (!( src.working ))
+ return
+ var/A = src.loc
+ A = A.loc
+ if (!( istype(A, /area) ))
+ return
+ A.firealert()
+ return
+
+/obj/machinery/dispenser/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ src = null
+ del(src)
+ return
+ if(3.0)
+ if (prob(25))
+ while(src.o2tanks > 0)
+ new /obj/item/weapon/tank/oxygentank( src.loc )
+ src.o2tanks--
+ while(src.pltanks > 0)
+ new /obj/item/weapon/tank/plasmatank( src.loc )
+ src.pltanks--
+ else
+ return
+
+/obj/machinery/dispenser/meteorhit()
+
+ while(src.o2tanks > 0)
+ new /obj/item/weapon/tank/oxygentank( src.loc )
+ src.o2tanks--
+ while(src.pltanks > 0)
+ new /obj/item/weapon/tank/plasmatank( src.loc )
+ src.pltanks--
+ src = null
+ del(src)
+ return
+ return
+
+/obj/machinery/dispenser/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/dispenser/attack_hand(user as mob)
+
+ user.machine = src
+ var/dat = text("Loaded Tank Dispensing Unit
\nOxygen: [] []
\nPlasma: [] []
\n", src.o2tanks, (src.o2tanks ? text("Dispense", src) : "empty"), src.pltanks, (src.pltanks ? text("Dispense", src) : "empty"))
+ user << browse(dat, "window=dispenser")
+ return
+
+/obj/machinery/dispenser/Topic(href, href_list)
+
+ if (usr.stat)
+ return
+ if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey"))))
+ usr << "\red You don't have the dexterity to do this!"
+ return
+ if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf))))
+ usr.machine = src
+ if (href_list["oxygen"])
+ if (text2num(href_list["oxygen"]))
+ if (src.o2tanks > 0)
+ new /obj/item/weapon/tank/oxygentank( src.loc )
+ src.o2tanks--
+ if (istype(src.loc, /mob))
+ attack_hand(src.loc)
+ else
+ if (href_list["plasma"])
+ if (text2num(href_list["plasma"]))
+ if (src.pltanks > 0)
+ new /obj/item/weapon/tank/plasmatank( src.loc )
+ src.pltanks--
+ if (istype(src.loc, /mob))
+ attack_hand(src.loc)
+ src.add_fingerprint(usr)
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(275)
+ else
+ usr << browse(null, "window=dispenser")
+ return
+ return
+
+/obj/item/weapon/clothing/burn(fi_amount)
+
+ if (fi_amount > src.s_fire)
+ spawn( 0 )
+ var/t = src.icon_state
+ src.icon_state = ""
+ src.icon = 'b_items.dmi'
+ flick(text("[]", t), src)
+ spawn( 14 )
+ src = null
+ del(src)
+ return
+ return
+ return
+ return 0
+ return 1
+ return
+
+/obj/item/weapon/clothing/gloves/examine()
+ set src in usr
+
+ ..()
+ return
+
+/obj/item/weapon/clothing/shoes/orange/attack_self(user as mob)
+
+ if (src.chained)
+ src.chained = null
+ new /obj/item/weapon/handcuffs( user.loc )
+ src.icon_state = "o_shoes"
+ return
+
+/obj/item/weapon/clothing/shoes/orange/attackby(H as obj, loc)
+
+ if ((istype(H, /obj/item/weapon/handcuffs) && !( src.chained )))
+ H = null
+ del(H)
+ src.chained = 1
+ src.icon_state = "o_shoes1"
+ return
+
+/obj/item/weapon/clothing/mask/muzzle/attack_paw(user as mob)
+
+ if (src == user.wear_mask)
+ return
+ else
+ ..()
+ return
+
+/obj/item/weapon/tank/attack_self(user as mob)
+
+ user.machine = src
+ if (!( src.gas ))
+ return
+ var/dat = text("Tank
\nContains/Capacity [] / []
\nInterals Valve: [] Gas Flow
\n\t- - - [] + + +
\n
\nClose\n", src.gas.tot_gas(), src.maximum, src, ((src.loc == user && user.internal == src) ? "Stop" : "Restore"), src, src, src, src.i_used, src, src, src, user)
+ user << browse(dat, "window=tank;size=600x300")
+ return
+
+/obj/item/weapon/tank/Topic(href, href_list)
+
+ if (usr.stat)
+ return
+ if (src.loc == usr)
+ usr.machine = src
+ if (href_list["cp"])
+ var/cp = text2num(href_list["cp"])
+ src.i_used += cp
+ src.i_used = min(max(round(src.i_used), 0), 10000)
+ if ((href_list["stat"] && src.loc == usr))
+ if (usr.internal == src)
+ usr.internal = null
+ return
+ if (usr.internal)
+ usr.internal = null
+ if ((!( usr.wear_mask ) || !( usr.wear_mask.flags & 8 )))
+ return
+ usr.internal = src
+ usr << "\blue Now running on internals!"
+ src.add_fingerprint(usr)
+ for(var/M as mob in viewers(1, src.loc))
+ if ((M.client && M.machine == src))
+ src.attack_self(M)
+ //Foreach goto(206)
+ else
+ usr << browse(null, "window=tank")
+ return
+ return
+
+/obj/item/weapon/tank/proc/process(M as mob, G as obj)
+
+ var/amount = src.i_used
+ var/total = src.gas.tot_gas()
+ if (amount > total)
+ amount = total
+ if (total > 0)
+ G.transfer_from(src.gas, amount)
+ return G
+ return
+
+/obj/item/weapon/tank/attack(M as mob, user as mob)
+
+ ..()
+ if ((prob(30) && M.stat < 2))
+ var/H = M
+ if ((istype(H, /mob/human) && (istype(H, /obj/item/weapon/clothing/head) && (H.flags & 8 && prob(80)))))
+ M << "\red The helmet protects you from being hit hard in the head!"
+ return
+ var/time = rand(10, 120)
+ if (prob(90))
+ if (M.paralysis < time)
+ M.paralysis = time
+ else
+ if (M.stunned < time)
+ M.stunned = time
+ M.stat = 1
+ for(var/O as mob in viewers(M, null))
+ if ((O.client && !( O.blinded )))
+ O << text("\red [] has been knocked unconscious!", M)
+ //Foreach goto(169)
+ M << text("\red This was a []% hit. Roleplay it! (personality/memory change if the hit was severe enough)", (time * 100) / 120)
+ return
+
+/obj/item/weapon/tank/New()
+
+ ..()
+ src.gas = new /obj/substance/gas( src )
+ src.gas.maximum = src.maximum
+ return
+
+/obj/item/weapon/tank/Del()
+
+ src.gas = null
+ del(src.gas)
+ return
+ return
+
+/obj/item/weapon/tank/burn(fi_amount)
+
+ if ((fi_amount * src.gas.tot_gas()) > (src.maximum * 3.75E7))
+ src.turf_add(get_turf(src.loc), src.gas.tot_gas())
+ src = null
+ del(src)
+ return
+ return
+
+/obj/item/weapon/tank/examine()
+ set src in view(1)
+
+ usr << text("\blue The \icon[] contains [] unit\s of gas.", src, src.gas.tot_gas())
+ return
+
+/obj/item/weapon/tank/oxygentank/New()
+
+ ..()
+ src.gas.oxygen = src.maximum
+ return
+
+/obj/item/weapon/tank/jetpack/New()
+
+ ..()
+ src.gas.oxygen = src.maximum
+ return
+
+/obj/item/weapon/tank/jetpack/verb/toggle()
+
+ src.on = !( src.on )
+ src.icon_state = text("jetpack[]", src.on)
+ return
+
+/obj/item/weapon/tank/jetpack/proc/allow_thrust(num, user as mob)
+
+ if (!( src.on ))
+ return 0
+ if ((num < 1 || src.gas.tot_gas() < num))
+ return 0
+ var/obj/substance/gas/G = new /obj/substance/gas( )
+ G.transfer_from(src.gas, num)
+ if (G.oxygen >= 100)
+ return 1
+ if (G.plasma > 10)
+ if (user)
+ var/d = G.plasma / 2
+ d = min(abs(user.health + 100), d, 25)
+ user.fireloss += d
+ user.health = (((100 - user.oxyloss) - user.toxloss) - user.fireloss) - user.bruteloss
+ return (G.oxygen >= 75 ? 0.5 : 0)
+ else
+ if (G.oxygen >= 75)
+ return 0.5
+ else
+ return 0
+ G = null
+ del(G)
+ return
+
+/obj/item/weapon/tank/anesthetic/New()
+
+ ..()
+ src.gas.sl_gas = 1000
+ return
+
+/obj/item/weapon/tank/plasmatank/proc/ignite()
+
+ if ((src.gas.plasma < 1600000.0 || src.temperature < 500))
+ var/T = get_turf(src.loc)
+ T.poison += src.gas.plasma
+ T.firelevel = T.poison
+ T.res_vars()
+ if ((src.gas.temperature > 450 && src.plasma == 1600000.0))
+ var/sw = locate(max(T.x - 4, 1), max(T.y - 4, 1), T.z)
+ var/ne = locate(min(T.x + 4, world.maxx), min(T.y + 4, world.maxy), T.z)
+ for(var/U as turf in block(sw, ne))
+ var/zone = 4
+ if ((U.y <= (T.y + 1) && (U.y >= (T.y - 1) && (U.x <= (T.x + 2) && U.x >= (T.x - 2)))))
+ zone = 3
+ if ((U.y <= (T.y + 1) && (U.y >= (T.y - 1) && (U.x <= (T.x + 1) && U.x >= (T.x - 1)))))
+ zone = 2
+ for(var/atom/A as mob|obj|turf|area in U)
+ A.ex_act(zone)
+ //Foreach goto(342)
+ U.ex_act(zone)
+ //Foreach goto(170)
+ else
+ if ((src.gas.temperature > 300 && src.plasma == 1600000.0))
+ var/sw = locate(max(T.x - 4, 1), max(T.y - 4, 1), T.z)
+ var/ne = locate(min(T.x + 4, world.maxx), min(T.y + 4, world.maxy), T.z)
+ for(var/U as turf in block(sw, ne))
+ var/zone = 4
+ if ((U.y <= (T.y + 2) && (U.y >= (T.y - 2) && (U.x <= (T.x + 2) && U.x >= (T.x - 2)))))
+ zone = 3
+ for(var/atom/A as mob|obj|turf|area in U)
+ A.ex_act(zone)
+ //Foreach goto(598)
+ U.ex_act(zone)
+ //Foreach goto(498)
+ src.master = null
+ del(src.master)
+ src = null
+ del(src)
+ return
+ return
+ var/T = src.loc
+ while(!( istype(T, /turf) ))
+ T = T.loc
+ src.master.loc = null
+ for(var/M as mob in range(T, null))
+ flick("flash", M.flash)
+ //Foreach goto(732)
+ var/m_range = 2
+ for(var/obj/machinery/atmoalter/canister/C as obj in range(2, T))
+ if (!( C.destroyed ))
+ if (C.gas.plasma >= 35000)
+ C.destroyed = 1
+ m_range++
+ //Foreach goto(776)
+ var/min = m_range
+ var/med = m_range * 2
+ var/max = m_range * 3
+ var/u_max = m_range * 4
+ var/sw = locate(max(T.x - u_max, 1), max(T.y - u_max, 1), T.z)
+ var/ne = locate(min(T.x + u_max, world.maxx), min(T.y + u_max, world.maxy), T.z)
+ for(var/U as turf in block(sw, ne))
+ var/zone = 4
+ if ((U.y <= (T.y + max) && (U.y >= (T.y - max) && (U.x <= (T.x + max) && U.x >= (T.x - max)))))
+ zone = 3
+ if ((U.y <= (T.y + med) && (U.y >= (T.y - med) && (U.x <= (T.x + med) && U.x >= (T.x - med)))))
+ zone = 2
+ if ((U.y <= (T.y + min) && (U.y >= (T.y - min) && (U.x <= (T.x + min) && U.x >= (T.x - min)))))
+ zone = 1
+ for(var/atom/A as mob|obj|turf|area in U)
+ A.ex_act(zone)
+ //Foreach goto(1217)
+ U.ex_act(zone)
+ //Foreach goto(961)
+ src.master = null
+ del(src.master)
+ src = null
+ del(src)
+ return
+ return
+
+/obj/item/weapon/tank/plasmatank/attackby(W as obj, user as mob)
+
+ if (istype(W, /obj/item/weapon/assembly/rad_ignite))
+ var/S = W
+ if (!( S.status ))
+ return
+ var/obj/item/weapon/assembly/r_i_ptank/R = new /obj/item/weapon/assembly/r_i_ptank( user )
+ R.part1 = S.part1
+ S.part1.loc = R
+ S.part1.master = R
+ R.part2 = S.part2
+ S.part2.loc = R
+ S.part2.master = R
+ S.layer = S.initial(S.layer)
+ if (user.client)
+ user.client.screen -= S
+ if (user.r_hand == S)
+ u_equip(S)
+ user.r_hand = R
+ else
+ u_equip(S)
+ user.l_hand = R
+ src.master = R
+ src.layer = initial(src.layer)
+ user.u_equip(src)
+ if (user.client)
+ user.client.screen -= src
+ src.loc = R
+ R.part3 = src
+ R.layer = 20
+ R.loc = user
+ S.part1 = null
+ S.part2 = null
+ S = null
+ del(S)
+ if (istype(W, /obj/item/weapon/assembly/prox_ignite))
+ var/S = W
+ if (!( S.status ))
+ return
+ var/obj/item/weapon/assembly/m_i_ptank/R = new /obj/item/weapon/assembly/m_i_ptank( user )
+ R.part1 = S.part1
+ S.part1.loc = R
+ S.part1.master = R
+ R.part2 = S.part2
+ S.part2.loc = R
+ S.part2.master = R
+ S.layer = S.initial(S.layer)
+ if (user.client)
+ user.client.screen -= S
+ if (user.r_hand == S)
+ u_equip(S)
+ user.r_hand = R
+ else
+ u_equip(S)
+ user.l_hand = R
+ src.master = R
+ src.layer = initial(src.layer)
+ user.u_equip(src)
+ if (user.client)
+ user.client.screen -= src
+ src.loc = R
+ R.part3 = src
+ R.layer = 20
+ R.loc = user
+ S.part1 = null
+ S.part2 = null
+ S = null
+ del(S)
+ return
+
+/obj/item/weapon/tank/plasmatank/New()
+
+ ..()
+ src.gas.plasma = src.maximum
+ return
+
+/obj/meteor/small/Move()
+
+ if (src.steps < 7)
+ src.steps++
+ if (src.steps >= 7)
+ src.icon_state = "smallf"
+ else
+ var/T = src.loc
+ if (istype(T, /turf))
+ T.firelevel = T.poison + 5
+ ..()
+ if (src.z != 1)
+ src = null
+ del(src)
+ return
+ spawn( 3 )
+ step(src, WEST)
+ if (prob(30))
+ step(src, pick(NORTH, SOUTH))
+ return
+ return
+
+/obj/meteor/New()
+
+ ..()
+ sleep(1)
+ step(src, WEST)
+ return
+
+/obj/meteor/Move()
+
+ if (src.steps < 7)
+ src.steps++
+ if (src.steps >= 7)
+ src.icon_state = "flaming"
+ else
+ var/T = src.loc
+ if (istype(T, /turf))
+ T.firelevel = T.poison + 5
+ ..()
+ if (src.z != 1)
+ src = null
+ del(src)
+ return
+ spawn( 3 )
+ step(src, WEST)
+ if (prob(30))
+ step(src, pick(NORTH, SOUTH))
+ return
+ return
+
+/obj/meteor/Bump(A as mob|obj|turf|area)
+
+ spawn( 0 )
+ if (A)
+ A.meteorhit(src)
+ if (--src.hits <= 0)
+ src = null
+ del(src)
+ return
+ return
+ return
+
+/obj/meteor/ex_act(severity)
+
+ if (severity < 4)
+ src = null
+ del(src)
+ return
+ return
+
+/obj/secloset/alter_health()
+
+ return src.loc
+ return
+
+/obj/secloset/CheckPass(O as mob|obj, target as turf)
+
+ if (!( src.opened ))
+ return 0
+ else
+ return 1
+ return
+
+/obj/secloset/personal/New()
+
+ ..()
+ sleep(2)
+ new /obj/item/weapon/storage/backpack( src )
+ new /obj/item/weapon/radio/headset( src )
+ new /obj/item/weapon/radio/signaler( src )
+ new /obj/item/weapon/pen( src )
+ return
+
+/obj/secloset/personal/attackby(W as obj, user as mob)
+
+ if (src.opened)
+ user.drop_item()
+ W.loc = src.loc
+ else
+ if (istype(W, /obj/item/weapon/card/id))
+ var/list/L = list( )
+ if (W.assignment == "Systems")
+ src.allowed = null
+ src.icon_state = "0secloset0"
+ src.locked = 1
+ src.desc = "The first card swiped gains control."
+ return
+ if (src.allowed)
+ L = dd_text2list(src.allowed, ",")
+ if ((L.Find(W.assignment) || (!( src.allowed ) || L.Find(text("m[]", W.registered)))))
+ src.locked = !( src.locked )
+ for(var/O as mob in viewers(user, 3))
+ if ((O.client && !( O.blinded )))
+ O << text("\blue The locker has been []locked by [].", (src.locked ? null : "un"), user)
+ //Foreach goto(185)
+ src.icon_state = text("[]secloset0", (src.locked ? "1" : null))
+ if (!( src.allowed ))
+ src.allowed = text("m[],Captain,Head of Personnel", W.registered)
+ src.desc = text("Owned by [], Clear by using a card of rank 'Systems'", W.registered)
+ else
+ user << "\red Access Denied"
+ else
+ user << "\red It's closed..."
+ return
+
+/obj/secloset/security2/New()
+
+ ..()
+ sleep(2)
+ new /obj/item/weapon/clothing/under/red( src )
+ new /obj/item/weapon/storage/fcard_kit( src )
+ new /obj/item/weapon/storage/fcard_kit( src )
+ new /obj/item/weapon/storage/fcard_kit( src )
+ new /obj/item/weapon/storage/lglo_kit( src )
+ new /obj/item/weapon/storage/lglo_kit( src )
+ new /obj/item/weapon/fcardholder( src )
+ new /obj/item/weapon/fcardholder( src )
+ new /obj/item/weapon/fcardholder( src )
+ new /obj/item/weapon/fcardholder( src )
+ new /obj/item/weapon/camera( src )
+ new /obj/item/weapon/f_print_scanner( src )
+ new /obj/item/weapon/f_print_scanner( src )
+ new /obj/item/weapon/f_print_scanner( src )
+ return
+
+/obj/secloset/security1/New()
+
+ ..()
+ sleep(2)
+ new /obj/item/weapon/storage/flashbang_kit( src )
+ new /obj/item/weapon/storage/handcuff_kit( src )
+ new /obj/item/weapon/gun/energy/taser_gun( src )
+ new /obj/item/weapon/flash( src )
+ new /obj/item/weapon/clothing/under/red( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ new /obj/item/weapon/clothing/suit/armor( src )
+ new /obj/item/weapon/clothing/head/helmet( src )
+ new /obj/item/weapon/clothing/glasses/sunglasses( src )
+ return
+
+/obj/secloset/highsec/New()
+
+ ..()
+ sleep(2)
+ new /obj/item/weapon/gun/energy/laser_gun( src )
+ new /obj/item/weapon/gun/energy/taser_gun( src )
+ new /obj/item/weapon/flash( src )
+ new /obj/item/weapon/storage/id_kit( src )
+ new /obj/item/weapon/clothing/under/green( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ new /obj/item/weapon/clothing/glasses/sunglasses( src )
+ new /obj/item/weapon/clothing/suit/armor( src )
+ new /obj/item/weapon/clothing/head/helmet( src )
+ return
+
+/obj/secloset/animal/New()
+
+ ..()
+ sleep(2)
+ new /obj/item/weapon/radio/signaler( src )
+ new /obj/item/weapon/radio/electropack( src )
+ new /obj/item/weapon/radio/electropack( src )
+ new /obj/item/weapon/radio/electropack( src )
+ new /obj/item/weapon/radio/electropack( src )
+ new /obj/item/weapon/radio/electropack( src )
+ return
+
+/obj/secloset/medical1/New()
+
+ ..()
+ sleep(2)
+ new /obj/item/weapon/bottle/toxins( src )
+ new /obj/item/weapon/bottle/rejuvenators( src )
+ new /obj/item/weapon/bottle/s_tox( src )
+ new /obj/item/weapon/bottle/s_tox( src )
+ new /obj/item/weapon/bottle/toxins( src )
+ new /obj/item/weapon/bottle/r_epil( src )
+ new /obj/item/weapon/bottle/r_ch_cough( src )
+ new /obj/item/weapon/pill_canister/Tourette( src )
+ new /obj/item/weapon/pill_canister/cough( src )
+ new /obj/item/weapon/pill_canister/epilepsy( src )
+ new /obj/item/weapon/pill_canister/sleep( src )
+ new /obj/item/weapon/pill_canister/antitoxin( src )
+ new /obj/item/weapon/pill_canister/placebo( src )
+ new /obj/item/weapon/storage/firstaid/syringes( src )
+ new /obj/item/weapon/storage/gl_kit( src )
+ new /obj/item/weapon/dropper( src )
+ return
+
+/obj/secloset/medical2/New()
+
+ ..()
+ sleep(2)
+ new /obj/item/weapon/tank/anesthetic( src )
+ new /obj/item/weapon/tank/anesthetic( src )
+ new /obj/item/weapon/tank/anesthetic( src )
+ new /obj/item/weapon/tank/anesthetic( src )
+ new /obj/item/weapon/tank/anesthetic( src )
+ new /obj/item/weapon/clothing/mask/m_mask( src )
+ new /obj/item/weapon/clothing/mask/m_mask( src )
+ new /obj/item/weapon/clothing/mask/m_mask( src )
+ new /obj/item/weapon/clothing/mask/m_mask( src )
+ return
+
+/obj/secloset/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ for(var/atom/movable/A as mob|obj in src)
+ A.loc = src.loc
+ ex_act(severity)
+ //Foreach goto(35)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/atom/movable/A as mob|obj in src)
+ A.loc = src.loc
+ ex_act(severity)
+ //Foreach goto(108)
+ src = null
+ del(src)
+ return
+ if(3.0)
+ if (prob(5))
+ for(var/atom/movable/A as mob|obj in src)
+ A.loc = src.loc
+ ex_act(severity)
+ //Foreach goto(181)
+ src = null
+ del(src)
+ return
+ else
+ return
+
+/obj/secloset/meteorhit(O as obj)
+
+ if (O.icon_state == "flaming")
+ for(var/obj/item/I as obj in src)
+ I.loc = src.loc
+ //Foreach goto(29)
+ for(var/M as mob in src)
+ M.loc = src.loc
+ if (M.client)
+ M.eye = M.client.mob
+ M.client.perspective = MOB_PERSPECTIVE
+ //Foreach goto(71)
+ src.icon_state = "secloset1"
+ src = null
+ del(src)
+ return
+ return
+
+/obj/secloset/attackby(W as obj, user as mob)
+
+ if (src.opened)
+ user.drop_item()
+ W.loc = src.loc
+ else
+ if (istype(W, /obj/item/weapon/card/id))
+ var/list/L = list( )
+ if (W.allowed)
+ L = dd_text2list(W.allowed, ",")
+ if ((L.Find(W.assignment) || !( src.allowed )))
+ src.locked = !( src.locked )
+ for(var/O as mob in viewers(user, 3))
+ if ((O.client && !( O.blinded )))
+ O << text("\blue The locker has been []locked by [].", (src.locked ? null : "un"), user)
+ //Foreach goto(121)
+ src.icon_state = text("[]secloset0", (src.locked ? "1" : null))
+ else
+ user << "\red Access Denied"
+ else
+ user << "\red It's closed..."
+ return
+
+/obj/secloset/relaymove(user as mob)
+
+ if (user.stat)
+ return
+ if (!( src.locked ))
+ for(var/obj/item/I as obj in src)
+ I.loc = src.loc
+ //Foreach goto(36)
+ for(var/M as mob in src)
+ M.loc = src.loc
+ if (M.client)
+ M.eye = M.client.mob
+ M.client.perspective = MOB_PERSPECTIVE
+ //Foreach goto(78)
+ src.icon_state = "secloset1"
+ src.opened = 1
+ else
+ user << "\blue It's welded shut!"
+ for(var/M as mob in hearers(src, null))
+ M << text("BANG, bang!", max(0, 5 - get_dist(src, M)))
+ //Foreach goto(170)
+ return
+
+/obj/secloset/MouseDrop_T(O as mob|obj, user as mob)
+
+ if ((user.restrained() || user.stat))
+ return
+ if ((!( istype(O, /atom/movable) ) || (O.anchored || (get_dist(user, src) > 1 || (get_dist(user, O) > 1 || user.contents.Find(src))))))
+ return
+ step_towards(O, src.loc)
+ if (user != O)
+ for(var/B as mob in viewers(user, 3))
+ if ((B.client && !( B.blinded )))
+ B << text("\red [] stuffs [] into []!", user, O, src)
+ //Foreach goto(115)
+ src.add_fingerprint(user)
+ return
+
+/obj/secloset/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/secloset/attack_hand(user as mob)
+
+ src.add_fingerprint(user)
+ if (!( src.opened ))
+ if (!( src.locked ))
+ for(var/obj/item/I as obj in src)
+ I.loc = src.loc
+ //Foreach goto(43)
+ for(var/M as mob in src)
+ M.loc = src.loc
+ if (M.client)
+ M.eye = M.client.mob
+ M.client.perspective = MOB_PERSPECTIVE
+ //Foreach goto(85)
+ src.icon_state = "secloset1"
+ src.opened = 1
+ else
+ usr << "\blue It's locked tight!"
+ else
+ for(var/obj/item/I as obj in src.loc)
+ if (!( I.anchored ))
+ I.loc = src
+ //Foreach goto(176)
+ for(var/M as mob in src.loc)
+ if (M.client)
+ M.client.perspective = EYE_PERSPECTIVE
+ M.client.eye = src
+ M.loc = src
+ //Foreach goto(226)
+ src.icon_state = "secloset0"
+ src.opened = 0
+ return
+
+/obj/morgue/proc/update()
+
+ if (src.connected)
+ src.icon_state = "morgue0"
+ else
+ if (src.contents.len)
+ src.icon_state = "morgue2"
+ else
+ src.icon_state = "morgue1"
+ return
+
+/obj/morgue/alter_health()
+
+ return src.loc
+ return
+
+/obj/morgue/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/morgue/attack_hand(user as mob)
+
+ if (src.connected)
+ for(var/atom/movable/A as mob|obj in src.connected.loc)
+ if (!( A.anchored ))
+ A.loc = src
+ //Foreach goto(28)
+ src.connected = null
+ del(src.connected)
+ else
+ src.connected = new /obj/m_tray( src.loc )
+ step(src.connected, EAST)
+ src.connected.layer = OBJ_LAYER
+ var/T = get_step(src, EAST)
+ if (T.contents.Find(src.connected))
+ src.connected.connected = src
+ src.icon_state = "morgue0"
+ for(var/atom/movable/A as mob|obj in src)
+ A.loc = src.connected.loc
+ //Foreach goto(168)
+ src.connected.icon_state = "morguet"
+ else
+ src.connected = null
+ del(src.connected)
+ src.add_fingerprint(user)
+ update()
+ return
+
+/obj/morgue/attackby(P as obj, user as mob)
+
+ if (istype(P, /obj/item/weapon/pen))
+ var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text
+ if (user.equipped() != P)
+ return
+ if ((get_dist(src, usr) > 1 && src.loc != user))
+ return
+ t = html_encode(t)
+ if (t)
+ src.name = text("Morgue- '[]'", t)
+ else
+ src.name = "Morgue"
+ src.add_fingerprint(user)
+ return
+
+/obj/morgue/relaymove(user as mob)
+
+ if (user.stat)
+ return
+ src.connected = new /obj/m_tray( src.loc )
+ step(src.connected, EAST)
+ src.connected.layer = OBJ_LAYER
+ var/T = get_step(src, EAST)
+ if (T.contents.Find(src.connected))
+ src.connected.connected = src
+ src.icon_state = "morgue0"
+ for(var/atom/movable/A as mob|obj in src)
+ A.loc = src.connected.loc
+ //Foreach goto(106)
+ src.connected.icon_state = "morguet"
+ else
+ src.connected = null
+ del(src.connected)
+ return
+
+/obj/m_tray/CheckPass(D as obj)
+
+ if (istype(D, /obj/item/weapon/dummy))
+ return 1
+ else
+ return ..()
+ return
+
+/obj/m_tray/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/m_tray/attack_hand(user as mob)
+
+ if (src.connected)
+ for(var/atom/movable/A as mob|obj in src.loc)
+ if (!( A.anchored ))
+ A.loc = src.connected
+ //Foreach goto(26)
+ src.connected.connected = null
+ src.connected.update()
+ src.add_fingerprint(user)
+ src = null
+ del(src)
+ return
+ return
+
+/obj/m_tray/MouseDrop_T(O as mob|obj, user as mob)
+
+ if ((!( istype(O, /atom/movable) ) || (O.anchored || (get_dist(user, src) > 1 || (get_dist(user, O) > 1 || user.contents.Find(src))))))
+ return
+ O.loc = src.loc
+ if (user != O)
+ for(var/B as mob in viewers(user, 3))
+ if ((B.client && !( B.blinded )))
+ B << text("\red [] stuffs [] into []!", user, O, src)
+ //Foreach goto(99)
+ return
+
+/obj/closet/alter_health()
+
+ return src.loc
+ return
+
+/obj/closet/CheckPass(O as mob|obj, target as turf)
+
+ if (!( src.opened ))
+ return 0
+ else
+ return 1
+ return
+
+/obj/closet/syndicate/nuclear/New()
+
+ ..()
+ sleep(2)
+ new /obj/item/weapon/ammo/a357( src )
+ new /obj/item/weapon/ammo/a357( src )
+ new /obj/item/weapon/ammo/a357( src )
+ new /obj/item/weapon/storage/handcuff_kit( src )
+ new /obj/item/weapon/storage/flashbang_kit( src )
+ new /obj/item/weapon/gun/energy/taser_gun( src )
+ new /obj/item/weapon/gun/energy/taser_gun( src )
+ new /obj/item/weapon/gun/energy/taser_gun( src )
+ var/obj/item/weapon/syndicate_uplink/U = new /obj/item/weapon/syndicate_uplink( src )
+ U.uses = 5
+ return
+
+/obj/closet/emcloset/New()
+
+ ..()
+ sleep(2)
+ new /obj/item/weapon/tank/oxygentank( src )
+ new /obj/item/weapon/clothing/mask/gasmask( src )
+ return
+
+/obj/closet/l3closet/New()
+
+ ..()
+ sleep(2)
+ new /obj/item/weapon/tank/oxygentank( src )
+ new /obj/item/weapon/clothing/mask/gasmask( src )
+ new /obj/item/weapon/clothing/suit/bio_suit( src )
+ new /obj/item/weapon/clothing/under/white( src )
+ new /obj/item/weapon/clothing/shoes/white( src )
+ new /obj/item/weapon/clothing/gloves/latex( src )
+ new /obj/item/weapon/clothing/head/bio_hood( src )
+ return
+
+/obj/closet/wardrobe/New()
+
+ new /obj/item/weapon/clothing/under/blue( src )
+ new /obj/item/weapon/clothing/under/blue( src )
+ new /obj/item/weapon/clothing/under/blue( src )
+ new /obj/item/weapon/clothing/under/blue( src )
+ new /obj/item/weapon/clothing/under/blue( src )
+ new /obj/item/weapon/clothing/under/blue( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ return
+
+/obj/closet/wardrobe/red/New()
+
+ new /obj/item/weapon/clothing/under/red( src )
+ new /obj/item/weapon/clothing/under/red( src )
+ new /obj/item/weapon/clothing/under/red( src )
+ new /obj/item/weapon/clothing/under/red( src )
+ new /obj/item/weapon/clothing/under/red( src )
+ new /obj/item/weapon/clothing/under/red( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ return
+
+/obj/closet/wardrobe/pink/New()
+
+ new /obj/item/weapon/clothing/under/pink( src )
+ new /obj/item/weapon/clothing/under/pink( src )
+ new /obj/item/weapon/clothing/under/pink( src )
+ new /obj/item/weapon/clothing/under/pink( src )
+ new /obj/item/weapon/clothing/under/pink( src )
+ new /obj/item/weapon/clothing/under/pink( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ return
+
+/obj/closet/wardrobe/black/New()
+
+ new /obj/item/weapon/clothing/under/black( src )
+ new /obj/item/weapon/clothing/under/black( src )
+ new /obj/item/weapon/clothing/under/black( src )
+ new /obj/item/weapon/clothing/under/black( src )
+ new /obj/item/weapon/clothing/under/black( src )
+ new /obj/item/weapon/clothing/under/black( src )
+ new /obj/item/weapon/clothing/shoes/black( src )
+ new /obj/item/weapon/clothing/shoes/black( src )
+ new /obj/item/weapon/clothing/shoes/black( src )
+ new /obj/item/weapon/clothing/shoes/black( src )
+ new /obj/item/weapon/clothing/shoes/black( src )
+ new /obj/item/weapon/clothing/shoes/black( src )
+ return
+
+/obj/closet/wardrobe/green/New()
+
+ new /obj/item/weapon/clothing/under/green( src )
+ new /obj/item/weapon/clothing/under/green( src )
+ new /obj/item/weapon/clothing/under/green( src )
+ new /obj/item/weapon/clothing/under/green( src )
+ new /obj/item/weapon/clothing/under/green( src )
+ new /obj/item/weapon/clothing/under/green( src )
+ new /obj/item/weapon/clothing/shoes/black( src )
+ new /obj/item/weapon/clothing/shoes/black( src )
+ new /obj/item/weapon/clothing/shoes/black( src )
+ new /obj/item/weapon/clothing/shoes/black( src )
+ new /obj/item/weapon/clothing/shoes/black( src )
+ new /obj/item/weapon/clothing/shoes/black( src )
+ return
+
+/obj/closet/wardrobe/orange/New()
+
+ new /obj/item/weapon/clothing/under/orange( src )
+ new /obj/item/weapon/clothing/under/orange( src )
+ new /obj/item/weapon/clothing/under/orange( src )
+ new /obj/item/weapon/clothing/under/orange( src )
+ new /obj/item/weapon/clothing/under/orange( src )
+ new /obj/item/weapon/clothing/under/orange( src )
+ new /obj/item/weapon/clothing/shoes/orange( src )
+ new /obj/item/weapon/clothing/shoes/orange( src )
+ new /obj/item/weapon/clothing/shoes/orange( src )
+ new /obj/item/weapon/clothing/shoes/orange( src )
+ new /obj/item/weapon/clothing/shoes/orange( src )
+ new /obj/item/weapon/clothing/shoes/orange( src )
+ return
+
+/obj/closet/wardrobe/yellow/New()
+
+ new /obj/item/weapon/clothing/under/yellow( src )
+ new /obj/item/weapon/clothing/under/yellow( src )
+ new /obj/item/weapon/clothing/under/yellow( src )
+ new /obj/item/weapon/clothing/under/yellow( src )
+ new /obj/item/weapon/clothing/under/yellow( src )
+ new /obj/item/weapon/clothing/under/yellow( src )
+ new /obj/item/weapon/clothing/shoes/orange( src )
+ new /obj/item/weapon/clothing/shoes/orange( src )
+ new /obj/item/weapon/clothing/shoes/orange( src )
+ new /obj/item/weapon/clothing/shoes/orange( src )
+ new /obj/item/weapon/clothing/shoes/orange( src )
+ new /obj/item/weapon/clothing/shoes/orange( src )
+ return
+
+/obj/closet/wardrobe/mixed/New()
+
+ new /obj/item/weapon/clothing/under/blue( src )
+ new /obj/item/weapon/clothing/under/blue( src )
+ new /obj/item/weapon/clothing/under/blue( src )
+ new /obj/item/weapon/clothing/under/pink( src )
+ new /obj/item/weapon/clothing/under/pink( src )
+ new /obj/item/weapon/clothing/under/pink( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ new /obj/item/weapon/clothing/shoes/brown( src )
+ return
+
+/obj/closet/wardrobe/white/New()
+
+ new /obj/item/weapon/clothing/under/white( src )
+ new /obj/item/weapon/clothing/under/white( src )
+ new /obj/item/weapon/clothing/under/white( src )
+ new /obj/item/weapon/clothing/under/white( src )
+ new /obj/item/weapon/clothing/under/white( src )
+ new /obj/item/weapon/clothing/shoes/white( src )
+ new /obj/item/weapon/clothing/shoes/white( src )
+ new /obj/item/weapon/clothing/shoes/white( src )
+ new /obj/item/weapon/clothing/shoes/white( src )
+ new /obj/item/weapon/clothing/shoes/white( src )
+ new /obj/item/weapon/storage/lglo_kit( src )
+ new /obj/item/weapon/storage/stma_kit( src )
+ return
+
+/obj/closet/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ for(var/atom/movable/A as mob|obj in src)
+ A.loc = src.loc
+ ex_act(severity)
+ //Foreach goto(35)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/atom/movable/A as mob|obj in src)
+ A.loc = src.loc
+ ex_act(severity)
+ //Foreach goto(108)
+ src = null
+ del(src)
+ return
+ if(3.0)
+ if (prob(5))
+ for(var/atom/movable/A as mob|obj in src)
+ A.loc = src.loc
+ ex_act(severity)
+ //Foreach goto(181)
+ src = null
+ del(src)
+ return
+ else
+ return
+
+/obj/closet/meteorhit(O as obj)
+
+ if (O.icon_state == "flaming")
+ for(var/obj/item/I as obj in src)
+ I.loc = src.loc
+ //Foreach goto(29)
+ for(var/M as mob in src)
+ M.loc = src.loc
+ if (M.client)
+ M.eye = M.client.mob
+ M.client.perspective = MOB_PERSPECTIVE
+ //Foreach goto(71)
+ src.icon_state = "emcloset1"
+ src = null
+ del(src)
+ return
+ return
+
+/obj/closet/attackby(W as obj, user as mob)
+
+ if ((src.opened || (W.damtype != "fire" || !( istype(W, /obj/item/weapon/weldingtool) ))))
+ user.drop_item()
+ W.loc = src.loc
+ else
+ src.welded = !( src.welded )
+ for(var/M as mob in viewers(user, null))
+ if (M.client)
+ M.show_message(text("\red [] has been [] by [].", src, (src.welded ? "welded shut" : "unwelded"), user), 3, "\red You hear welding.", 2)
+ //Foreach goto(82)
+ return
+
+/obj/closet/relaymove(user as mob)
+
+ if (user.stat)
+ return
+ if (!( src.welded ))
+ for(var/obj/item/I as obj in src)
+ I.loc = src.loc
+ //Foreach goto(36)
+ for(var/M as mob in src)
+ M.loc = src.loc
+ if (M.client)
+ M.eye = M.client.mob
+ M.client.perspective = MOB_PERSPECTIVE
+ //Foreach goto(78)
+ src.icon_state = "emcloset1"
+ src.opened = 1
+ else
+ user << "\blue It's welded shut!"
+ for(var/M as mob in hearers(src, null))
+ M << text("BANG, bang!", max(0, 5 - get_dist(src, M)))
+ //Foreach goto(170)
+ return
+
+/obj/closet/MouseDrop_T(O as mob|obj, user as mob)
+
+ if ((user.restrained() || user.stat))
+ return
+ if ((!( istype(O, /atom/movable) ) || (O.anchored || (get_dist(user, src) > 1 || (get_dist(user, O) > 1 || user.contents.Find(src))))))
+ return
+ step_towards(O, src.loc)
+ for(var/M as mob in viewers(user, null))
+ if ((M.client && !( M.blinded )))
+ M << text("\red [] stuffs [] into []!", user, O, src)
+ //Foreach goto(104)
+ src.add_fingerprint(user)
+ return
+
+/obj/closet/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/closet/attack_hand(user as mob)
+
+ src.add_fingerprint(user)
+ if (!( src.opened ))
+ if (!( src.welded ))
+ for(var/obj/item/I as obj in src)
+ I.loc = src.loc
+ //Foreach goto(43)
+ for(var/M as mob in src)
+ if (!( M.buckled ))
+ M.loc = src.loc
+ if (M.client)
+ M.eye = M.client.mob
+ M.client.perspective = MOB_PERSPECTIVE
+ //Foreach goto(85)
+ src.icon_state = "emcloset1"
+ src.opened = 1
+ else
+ usr << "\blue It's welded shut!"
+ else
+ for(var/obj/item/I as obj in src.loc)
+ if (!( I.anchored ))
+ I.loc = src
+ //Foreach goto(187)
+ for(var/M as mob in src.loc)
+ if (M.client)
+ M.client.perspective = EYE_PERSPECTIVE
+ M.client.eye = src
+ M.loc = src
+ //Foreach goto(237)
+ src.icon_state = src.original
+ src.opened = 0
+ return
+
+/obj/closet/CheckPass(O as mob|obj, target as turf)
+
+ if (!( src.opened ))
+ return 0
+ else
+ return 1
+ return
+
+/obj/stool/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ src = null
+ del(src)
+ return
+ if(3.0)
+ if (prob(5))
+ src = null
+ del(src)
+ return
+ else
+ return
+
+/obj/stool/attackby(W as obj, user as mob)
+
+ if (istype(W, /obj/item/weapon/wrench))
+ new /obj/item/weapon/sheet/metal( src.loc )
+ src = null
+ del(src)
+ return
+ return
+ return
+
+/obj/stool/bed/attackby(W as obj, user as mob)
+
+ return
+
+/obj/stool/chair/attackby(W as obj, user as mob)
+
+ ..()
+ if (istype(W, /obj/item/weapon/assembly/shock_kit))
+ var/obj/stool/chair/e_chair/E = new /obj/stool/chair/e_chair( src.loc )
+ E.dir = src.dir
+ E.part1 = W
+ W.loc = E
+ W.master = E
+ user.u_equip(W)
+ W.layer = W.initial(W.layer)
+ src = null
+ del(src)
+ return
+ return
+
+/obj/stool/chair/e_chair/New()
+
+ src.overl = new /atom/movable/overlay( src.loc )
+ src.overl.icon = 'Icons.dmi'
+ src.overl.icon_state = "e_chairo0"
+ src.overl.layer = 5
+ src.overl.name = "electrified chair"
+ src.overl.master = src
+ return
+
+/obj/stool/chair/e_chair/Del()
+
+ src.overl = null
+ del(src.overl)
+ ..()
+ return
+
+/obj/stool/chair/e_chair/attackby(W as obj, user as mob)
+
+ if (istype(W, /obj/item/weapon/wrench))
+ var/obj/stool/chair/C = new /obj/stool/chair( src.loc )
+ C.dir = src.dir
+ src.part1.loc = src.loc
+ src.part1.master = null
+ src.part1 = null
+ src = null
+ del(src)
+ return
+ return
+
+/obj/stool/chair/e_chair/verb/toggle_power()
+ set src in oview(1)
+
+ if ((usr.stat || (usr.restrained() || (!( usr.canmove ) || usr.lying))))
+ return
+ src.on = !( src.on )
+ src.icon_state = text("e_chair[]", src.on)
+ src.overl.icon_state = text("e_chairo[]", src.on)
+ return
+
+/obj/stool/chair/e_chair/proc/shock()
+
+ if (!( src.on ))
+ return
+ if ((src.last_time + 50) > world.time)
+ return
+ src.last_time = world.time
+ flick("e_chairs", src)
+ flick("e_chairos", src.overl)
+ for(var/M as mob in src.loc)
+ M.burn(7.5E7)
+ M << "\red You feel a deep shock curse through your body!"
+ sleep(1)
+ burn(7.5E7)
+ M.stunned = 600
+ //Foreach goto(72)
+ for(var/M as mob in hearers(src, null))
+ if (!( M.blinded ))
+ M << "\red The electric chair went off!"
+ else
+ M << "\red You hear a deep sharp shock."
+ //Foreach goto(142)
+ return
+
+/obj/stool/chair/ex_act(severity)
+
+ if (severity < 4)
+ for(var/M as mob in src.loc)
+ M.buckled = null
+ //Foreach goto(28)
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ src = null
+ del(src)
+ return
+ if(3.0)
+ if (prob(5))
+ src = null
+ del(src)
+ return
+ else
+ return
+
+/obj/stool/chair/New()
+
+ src.verbs -= /atom/movable/verb/pull
+ if (src.dir == NORTH)
+ src.layer = FLY_LAYER
+ ..()
+ return
+
+/obj/stool/chair/Del()
+
+ for(var/M as mob in src.loc)
+ if (M.buckled == src)
+ M.buckled = null
+ //Foreach goto(17)
+ ..()
+ return
+
+/obj/stool/chair/verb/rotate()
+ set src in oview(1)
+
+ src.dir = turn(src.dir, 90)
+ if (src.dir == NORTH)
+ src.layer = FLY_LAYER
+ else
+ src.layer = OBJ_LAYER
+ return
+
+/obj/stool/chair/MouseDrop_T(M as mob, user as mob)
+
+ if ((!( istype(M, /mob) ) || (get_dist(src, user) > 1 || (M.loc != src.loc || (user.restrained() || usr.stat)))))
+ return
+ if (M == usr)
+ for(var/O as mob in viewers(user, null))
+ if ((O.client && !( O.blinded )))
+ O << text("\blue [] buckles in!", user)
+ //Foreach goto(83)
+ else
+ for(var/O as mob in viewers(user, null))
+ if ((O.client && !( O.blinded )))
+ O << text("\blue [] is buckled in by []!", M, user)
+ //Foreach goto(137)
+ M.anchored = 1
+ M.buckled = src
+ M.loc = src.loc
+ src.add_fingerprint(user)
+ return
+
+/obj/stool/chair/attack_paw(user as mob)
+
+ if ((ticker && ticker.mode == "monkey"))
+ return src.attack_hand(user)
+ return
+
+/obj/stool/chair/attack_hand(user as mob)
+
+ for(var/M as mob in src.loc)
+ if (M.buckled)
+ if (M != user)
+ for(var/O as mob in viewers(user, null))
+ if ((O.client && !( O.blinded )))
+ O << text("\blue [] is unbuckled by [].", M, user)
+ //Foreach goto(64)
+ else
+ for(var/O as mob in viewers(user, null))
+ if ((O.client && !( O.blinded )))
+ O << text("\blue [] unbuckles.", M)
+ //Foreach goto(123)
+ M.anchored = 0
+ M.buckled = null
+ src.add_fingerprint(user)
+ //Foreach goto(17)
+ return
+
+/obj/grille/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ src = null
+ del(src)
+ return
+ if(3.0)
+ if (prob(25))
+ src.health -= 11
+ src.healthcheck()
+ else
+ return
+
+/obj/grille/meteorhit()
+
+ if (src.icon_state == "flaming")
+ src.health -= 3
+ src.healthcheck()
+ return
+
+/obj/grille/CheckPass(B as obj)
+
+ if ((istype(B, /obj/effects) || (istype(B, /obj/item/weapon/dummy) || (istype(B, /obj/beam) || istype(B, /obj/meteor/small)))))
+ return 1
+ else
+ if (istype(B, /obj/bullet))
+ return prob(30)
+ else
+ return !( src.density )
+ return
+
+/obj/grille/attackby(W as obj, user as mob)
+
+ if (istype(W, /obj/item/weapon/wirecutters))
+ src.health = 0
+ else
+ if ((istype(W, /obj/item/weapon/screwdriver) && (istype(src.loc, /turf/station) || src.anchored)))
+ src.anchored = !( src.anchored )
+ user << (src.anchored ? "You have fastened the grille to the floor." : "You have unfastened the grill.")
+ else
+ switch(W.damtype)
+ if("fire")
+ src.health -= W.force
+ if("brute")
+ src.health -= src.force * 0.1
+ else
+ src.healthcheck()
+ ..()
+ return
+
+/obj/grille/proc/healthcheck()
+
+ if (src.health <= 0)
+ if (!( src.destroyed ))
+ src.icon_state = "brokengrille"
+ src.density = 0
+ src.destroyed = 1
+ new /obj/item/weapon/rods( src.loc )
+ else
+ if (src.health <= -10.0)
+ new /obj/item/weapon/rods( src.loc )
+ src = null
+ del(src)
+ return
+ return
+
+/obj/window/las_act(flag)
+
+ if (flag == "bullet")
+ new /obj/item/weapon/shard( src.loc )
+ src = null
+ del(src)
+ return
+ return
+
+/obj/window/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ new /obj/item/weapon/shard( src.loc )
+ src = null
+ del(src)
+ return
+ if(3.0)
+ if (prob(50))
+ new /obj/item/weapon/shard( src.loc )
+ src = null
+ del(src)
+ return
+ else
+ return
+
+/obj/window/CheckPass(O as mob|obj, target as turf)
+
+ if (istype(O, /obj/beam))
+ return 1
+ if (src.dir == SOUTHWEST)
+ return 0
+ else
+ if (get_dir(target, O.loc) == src.dir)
+ return 0
+ return 1
+ return
+
+/obj/window/CheckExit(O as mob|obj, target as turf)
+
+ if (istype(O, /obj/beam))
+ return 1
+ if (get_dir(O.loc, target) == src.dir)
+ return 0
+ return 1
+ return
+
+/obj/window/meteorhit()
+
+ src.health = 0
+ new /obj/item/weapon/shard( src.loc )
+ src = null
+ del(src)
+ return
+ return
+
+/obj/window/hitby(W as obj)
+
+ ..()
+ src.health = max(0, src.health - W.throwforce)
+ if (src.health <= 7)
+ src.anchored = 0
+ step(src, get_dir(W, src))
+ if (src.health <= 0)
+ new /obj/item/weapon/shard( src.loc )
+ src = null
+ del(src)
+ return
+ ..()
+ return
+
+/obj/window/attackby(W as obj, user as mob)
+
+ if (istype(W, /obj/item/weapon/screwdriver))
+ src.anchored = !( src.anchored )
+ user << (src.anchored ? "You have fastened the window to the floor." : "You have unfastened the window.")
+ else
+ src.health = max(0, src.health - W.force)
+ if (src.health <= 7)
+ src.anchored = 0
+ step(src, get_dir(user, src))
+ if (src.health <= 0)
+ if (src.dir == SOUTHWEST)
+ var/index = null
+ index = 0
+ while(index < 2)
+ new /obj/item/weapon/shard( src.loc )
+ index++
+ else
+ new /obj/item/weapon/shard( src.loc )
+ src = null
+ del(src)
+ return
+ ..()
+ return
+
+/obj/window/verb/rotate()
+ set src in oview(1)
+
+ if (src.anchored)
+ usr << "It is fastened to the floor; therefore, you can't rotate it!"
+ return 0
+ else
+ if (src.dir == SOUTHWEST)
+ usr << "You can't rotate this! "
+ return 0
+ src.dir = turn(src.dir, 90)
+ src.ini_dir = src.dir
+ return
+
+/obj/window/New()
+
+ ..()
+ src.ini_dir = src.dir
+ return
+
+/obj/window/Move()
+
+ ..()
+ src.dir = src.ini_dir
+ return
+
+/atom/proc/meteorhit(meteor as obj)
+
+ return
+ return
+
+/atom/proc/allow_drop()
+
+ return 1
+ return
+
+/atom/proc/CheckPass(O as mob|obj|turf|area)
+
+ return (!( O.density ) || !( src.density ))
+ return
+
+/atom/proc/CheckExit()
+
+ return 1
+ return
+
+/atom/proc/HasEntered(AM as mob|obj)
+
+ return
+
+/atom/proc/HasProximity(AM as mob|obj)
+
+ return
+
+/atom/movable/overlay/attackby(a, b)
+
+ if (src.master)
+ return src.master.attackby(a, b)
+ return
+
+/atom/movable/overlay/attack_paw(a, b, c)
+
+ if (src.master)
+ return src.master.attack_paw(a, b, c)
+ return
+
+/atom/movable/overlay/attack_hand(a, b, c)
+
+ if (src.master)
+ return src.master.attack_hand(a, b, c)
+ return
+
+/atom/movable/overlay/New()
+
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(17)
+ return
+
+/turf/CheckPass(O as mob|obj|turf|area)
+
+ return !( src.density )
+ return
+
+/turf/New()
+
+ ..()
+ for(var/atom/movable/AM as mob|obj in src)
+ spawn( 0 )
+ src.Entered(AM)
+ return
+ //Foreach goto(19)
+ return
+
+/turf/Enter(O as mob|obj, forget as mob|obj|turf|area)
+
+ if (!( isturf(O.loc) ))
+ return 1
+ for(var/atom/A as mob|obj|turf|area in O.loc)
+ if ((!( A.CheckExit(O, src) ) && (O != A && A != forget)))
+ if (O)
+ O.Bump(A, 1)
+ return 0
+ //Foreach goto(34)
+ for(var/atom/A as mob|obj|turf|area in src)
+ if ((A.flags & 512 && get_dir(A, O) & A.dir))
+ if ((!( A.CheckPass(O, src) ) && (A != src && A != forget)))
+ if (O)
+ O.Bump(A, 1)
+ return 0
+ //Foreach goto(127)
+ for(var/atom/A as mob|obj|turf|area in src)
+ if ((!( A.CheckPass(O, src) ) && A != forget))
+ if (O)
+ O.Bump(A, 1)
+ return 0
+ //Foreach goto(244)
+ if (src != forget)
+ if (!( src.CheckPass(O, src) ))
+ if (O)
+ O.Bump(src, 1)
+ return 0
+ return 1
+ return
+
+/turf/Entered(M as mob|obj)
+
+ ..()
+ for(var/atom/A as mob|obj|turf|area in src)
+ spawn( 0 )
+ if ((A && M))
+ A.HasEntered(M, 1)
+ return
+ //Foreach goto(19)
+ for(var/atom/A as mob|obj|turf|area in range(1, null))
+ spawn( 0 )
+ if ((A && M))
+ A.HasProximity(M, 1)
+ return
+ //Foreach goto(86)
+ return
+
+/turf/station/r_wall/updatecell()
+
+ if (src.state == 2)
+ return
+ else
+ ..()
+ return
+
+/turf/station/r_wall/proc/update()
+
+ if (src.d_state > 6)
+ src.d_state = 0
+ src.state = 1
+ if (src.state == 2)
+ src.icon_state = text("r_wall[]", (src.d_state > 0 ? text("-[]", src.d_state) : null))
+ src.opacity = 1
+ src.density = 1
+ src.updatecell = 0
+ else
+ src.icon_state = "r_girder"
+ src.opacity = 0
+ src.density = 1
+ src.updatecell = 1
+ return
+
+/turf/station/r_wall/unburn()
+
+ src.update()
+ return
+
+/turf/station/r_wall/meteorhit(M as obj)
+
+ if ((M.icon_state == "flaming" && prob(30)))
+ if (src.state == 2)
+ src.state = 1
+ new /obj/item/weapon/sheet/metal( src )
+ new /obj/item/weapon/sheet/metal( src )
+ update()
+ else
+ if ((prob(20) && src.state == 1))
+ src.state = 0
+ var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) )
+ F.oxygen = 756000.0
+ new /obj/item/weapon/sheet/metal( F )
+ new /obj/item/weapon/sheet/metal( F )
+ return
+
+/turf/station/r_wall/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(75))
+ src.opacity = 0
+ src.updatecell = 1
+ src.state = 1
+ src.intact = 0
+ new /obj/item/weapon/sheet/metal( src )
+ new /obj/item/weapon/sheet/metal( src )
+ else
+ src.state = 0
+ var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) )
+ F.burnt = 1
+ F.health = 30
+ F.icon_state = "Floor1"
+ new /obj/item/weapon/sheet/metal( F )
+ new /obj/item/weapon/sheet/metal( F )
+ if(3.0)
+ if (prob(15))
+ src.opacity = 0
+ src.updatecell = 1
+ src.intact = 0
+ src.state = 1
+ new /obj/item/weapon/sheet/metal( src )
+ new /obj/item/weapon/sheet/metal( src )
+ src.icon_state = "girder"
+ update()
+ else
+ return
+
+/turf/station/r_wall/attackby(W as obj, user as mob)
+
+ if ((!( istype(user, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey"))))
+ user << "\red You don't have the dexterity to do this!"
+ return
+ if (src.state == 2)
+ if (istype(W, /obj/item/weapon/wrench))
+ if (src.d_state == 4)
+ var/T = user.loc
+ user << "\blue Cutting support rods."
+ sleep(40)
+ if ((user.loc == T && (equipped() == W && !( user.stat ))))
+ src.d_state = 5
+ else
+ if (istype(W, /obj/item/weapon/wirecutters))
+ if (src.d_state == 0)
+ src.d_state = 1
+ new /obj/item/weapon/rods( src )
+ else
+ if (istype(W, /obj/item/weapon/weldingtool))
+ if (src.d_state == 2)
+ var/T = user.loc
+ user << "\blue Slicing metal cover."
+ sleep(60)
+ if ((user.loc == T && (equipped() == W && !( user.stat ))))
+ src.d_state = 3
+ else
+ if (src.d_state == 5)
+ var/T = user.loc
+ user << "\blue Removing support rods."
+ sleep(100)
+ if ((user.loc == T && (equipped() == W && !( user.stat ))))
+ src.d_state = 6
+ new /obj/item/weapon/rods( src )
+ else
+ if (istype(W, /obj/item/weapon/screwdriver))
+ if (src.d_state == 1)
+ var/T = user.loc
+ user << "\blue Removing support lines."
+ sleep(40)
+ if ((user.loc == T && (equipped() == W && !( user.stat ))))
+ src.d_state = 2
+ else
+ if (istype(W, /obj/item/weapon/crowbar))
+ if (src.d_state == 3)
+ var/T = user.loc
+ user << "\blue Prying cover off."
+ sleep(100)
+ if ((user.loc == T && (equipped() == W && !( user.stat ))))
+ src.d_state = 4
+ else
+ if (src.d_state == 6)
+ var/T = user.loc
+ user << "\blue Prying outer sheath off."
+ sleep(100)
+ if ((user.loc == T && (equipped() == W && !( user.stat ))))
+ src.d_state = 7
+ new /obj/item/weapon/sheet/metal( src )
+ else
+ if (istype(W, /obj/item/weapon/sheet/metal))
+ var/T = user.loc
+ user << "\blue Repairing wall."
+ sleep(100)
+ if ((user.loc == T && (equipped() == W && (!( user.stat ) && src.state == 2))))
+ src.d_state = 0
+ if (W.amount > 1)
+ W.amount--
+ else
+ W = null
+ del(W)
+ if (src.state == 1)
+ if (istype(W, /obj/item/weapon/wrench))
+ user << "\blue Now dismantling girders."
+ var/T = user.loc
+ sleep(100)
+ if ((user.loc == T && (equipped() == W && !( user.stat ))))
+ src.state = 0
+ var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) )
+ F.oxygen = 756000.0
+ new /obj/item/weapon/sheet/metal( F )
+ new /obj/item/weapon/sheet/metal( F )
+ new /obj/item/weapon/sheet/metal( F )
+ new /obj/item/weapon/sheet/metal( F )
+ else
+ if (istype(W, /obj/item/weapon/sheet/r_metal))
+ F.state = 2
+ F.d_state = 0
+ W = null
+ del(W)
+ src.update()
+ return
+
+/turf/station/wall/examine()
+ set src in oview(1)
+
+ usr << "It looks like a regular wall."
+ return
+
+/turf/station/wall/updatecell()
+
+ if (src.state == 2)
+ return
+ else
+ ..()
+ return
+
+/turf/station/wall/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ src.opacity = 0
+ src.updatecell = 1
+ src.state = 1
+ src.intact = 0
+ new /obj/item/weapon/sheet/metal( src )
+ new /obj/item/weapon/sheet/metal( src )
+ src.icon_state = "girder"
+ else
+ src.state = 0
+ var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) )
+ F.burnt = 1
+ F.health = 30
+ F.icon_state = "Floor1"
+ new /obj/item/weapon/sheet/metal( F )
+ new /obj/item/weapon/sheet/metal( F )
+ if(3.0)
+ if (prob(25))
+ src.opacity = 0
+ src.updatecell = 1
+ src.intact = 0
+ src.state = 1
+ new /obj/item/weapon/sheet/metal( src )
+ new /obj/item/weapon/sheet/metal( src )
+ src.icon_state = "girder"
+ else
+ return
+
+/turf/station/wall/unburn()
+
+ if (src.state == 1)
+ src.icon_state = "girder"
+ else
+ src.icon_state = ""
+ return
+
+/turf/station/wall/attack_paw(user as mob)
+
+ if ((ticker && ticker.mode == "monkey"))
+ return src.attack_hand(user)
+ return
+
+/turf/station/wall/attack_hand(user as mob)
+
+ user << "\blue You push the wall but nothing happens!"
+ src.add_fingerprint(user)
+ return
+
+/turf/station/wall/attackby(W as obj, user as mob)
+
+ if ((!( istype(user, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey"))))
+ user << "\red You don't have the dexterity to do this!"
+ return
+ if ((istype(W, /obj/item/weapon/wrench) && src.state == 1))
+ var/T = user.loc
+ if (!( istype(T, /turf) ))
+ return
+ user << "\blue Now dissembling the reinforced girders. Please stand still. This is a long process."
+ sleep(100)
+ if (!( istype(src, /turf/station/wall) ))
+ return
+ if ((user.loc == T && (src.state == 1 && user.equipped() == W)))
+ src.state = 0
+ var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) )
+ F.oxygen = 756000.0
+ new /obj/item/weapon/sheet/metal( F )
+ new /obj/item/weapon/sheet/metal( F )
+ else
+ if ((istype(W, /obj/item/weapon/screwdriver) && src.state == 1))
+ var/T = user.loc
+ if (!( istype(T, /turf) ))
+ return
+ user << "\blue Now dislodging girders."
+ sleep(100)
+ if (!( istype(src, /turf/station/wall) ))
+ return
+ if ((user.loc == T && (src.state == 1 && user.equipped() == W)))
+ src.state = 0
+ var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) )
+ F.oxygen = 756000.0
+ new /obj/d_girders( F )
+ new /obj/item/weapon/sheet/metal( F )
+ else
+ if ((istype(W, /obj/item/weapon/sheet/r_metal) && src.state == 1))
+ var/T = user.loc
+ if (!( istype(T, /turf) ))
+ return
+ user << "\blue Now reinforcing girders."
+ sleep(100)
+ if (!( istype(src, /turf/station/wall) ))
+ return
+ if ((user.loc == T && (src.state == 1 && user.equipped() == W)))
+ src.state = 0
+ var/turf/station/r_wall/F = new /turf/station/r_wall( locate(src.x, src.y, src.z) )
+ F.oxygen = 756000.0
+ F.icon_state = "r_girder"
+ F.state = 1
+ F.opacity = 0
+ F.updatecell = 1
+ else
+ if ((istype(W, /obj/item/weapon/weldingtool) && src.state == 2))
+ var/T = user.loc
+ if (!( istype(T, /turf) ))
+ return
+ var/WT = W
+ if (WT.weldfuel < 5)
+ user << "\blue You need more welding fuel to complete this task."
+ return
+ WT.weldfuel -= 5
+ user << "\blue Now dissembling the outer wall plating. Please stand still."
+ sleep(50)
+ if ((user.loc == T && (src.state == 2 && user.equipped() == W)))
+ src.opacity = 0
+ src.updatecell = 1
+ src.state = 1
+ src.intact = 0
+ new /obj/item/weapon/sheet/metal( src )
+ new /obj/item/weapon/sheet/metal( src )
+ src.icon_state = "girder"
+ return
+
+/turf/station/wall/meteorhit(M as obj)
+
+ if (M.icon_state == "flaming")
+ src.icon_state = "girder"
+ if (src.state == 2)
+ src.state = 1
+ src.opacity = 0
+ src.updatecell = 1
+ src.firelevel = 11
+ new /obj/item/weapon/sheet/metal( src )
+ new /obj/item/weapon/sheet/metal( src )
+ else
+ if ((prob(20) && src.state == 1))
+ src.state = 0
+ var/turf/station/floor/F = new /turf/station/floor( locate(src.x, src.y, src.z) )
+ F.oxygen = 756000.0
+ new /obj/item/weapon/sheet/metal( F )
+ new /obj/item/weapon/sheet/metal( F )
+ return
+
+/turf/station/floor/CheckPass(O as mob|obj)
+
+ if ((istype(O, /obj/machinery/pod) && !( src.burnt )))
+ if (!( locate(/obj/machinery/mass_driver, src) ))
+ return 0
+ return 1
+ return
+
+/turf/station/floor/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ src = null
+ del(src)
+ return
+ else
+ src.icon_state = "burning"
+ src.burnt = 1
+ src.health = 30
+ src.intact = 0
+ src.firelevel = 1800000.0
+ if(3.0)
+ if (prob(50))
+ src.burnt = 1
+ src.health = 1
+ src.intact = 0
+ src.icon_state = "Floor1"
+ else
+ return
+
+/turf/station/floor/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/turf/station/floor/attack_hand(user as mob)
+
+ if ((!( user.canmove ) || (restrained() || !( user.pulling ))))
+ return
+ if (user.pulling.anchored)
+ return
+ if ((user.pulling.loc != user.loc && get_dist(user, user.pulling) > 1))
+ return
+ if (ismob(user.pulling))
+ var/M = user.pulling
+ var/t = M.pulling
+ M.pulling = null
+ step(user.pulling, get_dir(user.pulling.loc, src))
+ M.pulling = t
+ else
+ step(M.pulling, get_dir(user.pulling.loc, src))
+ return
+
+/turf/station/floor/attackby(C as obj, user as mob)
+
+ if (istype(C, /obj/item/weapon/crowbar))
+ if (src.health > 100)
+ src.health = 100
+ src.burnt = 1
+ src.intact = 0
+ new /obj/item/weapon/tile( src )
+ src.icon_state = text("Floor[]", (src.burnt ? "1" : ""))
+ else
+ if (istype(C, /obj/item/weapon/tile))
+ if (src.health <= 100)
+ src.intact = 1
+ src.health = 150
+ src.burnt = 0
+ if (src.firelevel >= 900000.0)
+ src.icon_state = "burning"
+ else
+ src.icon_state = "Floor"
+ var/T = C
+ T.amount--
+ if (T.amount < 1)
+ T = null
+ del(T)
+ return
+
+/turf/station/floor/unburn()
+
+ src.icon_state = text("Floor[]", (src.burnt ? "1" : ""))
+ return
+
+/turf/station/floor/updatecell()
+
+ ..()
+ if (src.checkfire)
+ if (src.firelevel >= 2700000.0)
+ src.health--
+ if (src.health <= 0)
+ src.burnt = 1
+ src.intact = 0
+ src = null
+ del(src)
+ return
+ else
+ if (src.health <= 100)
+ src.burnt = 1
+ src.intact = 0
+ return
+
+/turf/station/floor/plasma_test/updatecell()
+
+ ..()
+ src.poison = 7.5E7
+ src.res_vars()
+ return
+
+/area/New()
+
+ ..()
+ src.icon = 'alert.dmi'
+ src.layer = 10
+ return
+
+/area/vehicles/New()
+
+ ..()
+ sleep(1)
+ var/obj/shut_controller/S = new /obj/shut_controller( )
+ shuttles += S
+ for(var/obj/move/O as obj in src)
+ S.parts += O
+ O.master = S
+ //Foreach goto(42)
+ spawn( 5 )
+ world << "Vehicle loaded!"
+ return
+ return
+
+/area/proc/firealert()
+
+ if (!( src.fire ))
+ if ((src.icon_state == "red" || src.icon_state == "blue-red"))
+ src.icon_state = "blue-red"
+ else
+ src.icon_state = "blue"
+ src.fire = 1
+ for(var/obj/machinery/door/firedoor/D as obj in src)
+ if (!( D.density ))
+ spawn( 0 )
+ closefire()
+ return
+ //Foreach goto(74)
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/demo2.dm b/ss13-40.93.2-decomp/spacestation13/demo2.dm
new file mode 100644
index 0000000..06889d9
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/demo2.dm
@@ -0,0 +1,570 @@
+
+/obj/machinery/computer/atmosphere/proc/returnarea()
+
+ return
+
+/obj/machinery/computer/atmosphere/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(58)
+ src.icon_state = "broken"
+ if(3.0)
+ if (prob(25))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(109)
+ src.icon_state = "broken"
+ else
+ return
+
+/obj/machinery/computer/atmosphere/siphonswitch/returnarea()
+
+ var/T = src.loc
+ if (!( istype(T, /turf) ))
+ return
+ return T.loc.contents
+ return
+
+/obj/machinery/computer/atmosphere/siphonswitch/verb/siphon_all()
+ set src in oview(1)
+
+ if (usr.stat)
+ return
+ usr << "Starting all siphon systems."
+ for(var/obj/machinery/atmoalter/siphs/S as obj in src.returnarea())
+ S.reset(1, 0)
+ //Foreach goto(39)
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/computer/atmosphere/siphonswitch/verb/stop_all()
+ set src in oview(1)
+
+ if (usr.stat)
+ return
+ usr << "Stopping all siphon systems."
+ for(var/obj/machinery/atmoalter/siphs/S as obj in src.returnarea())
+ S.reset(0, 0)
+ //Foreach goto(39)
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/computer/atmosphere/siphonswitch/verb/auto_on()
+ set src in oview(1)
+
+ if (usr.stat)
+ return
+ usr << "Starting automatic air control systems."
+ for(var/obj/machinery/atmoalter/siphs/S as obj in src.returnarea())
+ S.reset(0, 1)
+ //Foreach goto(39)
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/computer/atmosphere/siphonswitch/verb/release_scrubbers()
+ set src in oview(1)
+
+ if (usr.stat)
+ return
+ usr << "Releasing all scrubber toxins."
+ for(var/obj/machinery/atmoalter/siphs/scrubbers/S as obj in src.returnarea())
+ S.reset(-1.0, 0)
+ //Foreach goto(39)
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/computer/atmosphere/siphonswitch/verb/release_all()
+
+ if (usr.stat)
+ return
+ usr << "REleasing all stored air."
+ for(var/obj/machinery/atmoalter/siphs/S as obj in src.returnarea())
+ S.reset(-1.0, 0)
+ //Foreach goto(37)
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/computer/atmosphere/siphonswitch/mastersiphonswitch/returnarea()
+
+ return world
+ return
+
+/obj/machinery/atmoalter/heater/proc/setstate()
+
+ if (src.holding)
+ src.icon_state = "heater1-h"
+ else
+ src.icon_state = "heater1"
+ return
+
+/obj/machinery/atmoalter/heater/process()
+
+ var/T = src.loc
+ if (istype(T, /turf))
+ if (locate(/obj/move, T))
+ T = locate(/obj/move, T)
+ else
+ T = null
+ if (src.h_status)
+ var/t1 = src.gas.tot_gas()
+ if ((t1 > 0 && src.temperature < src.h_tar))
+ var/increase = 1500000.0 / t1
+ var/n_temp = src.gas.temperature + increase
+ src.gas.temperature = min(n_temp, src.h_tar)
+ switch(src.t_status)
+ if(1.0)
+ if (src.holding)
+ var/t1 = src.gas.tot_gas()
+ var/t2 = t1
+ var/t = src.t_per
+ if (src.t_per > t2)
+ t = t2
+ src.holding.gas.transfer_from(src.gas, t)
+ else
+ src.t_status = 3
+ if(2.0)
+ if (src.holding)
+ var/t1 = src.gas.tot_gas()
+ var/t2 = src.maximum - t1
+ var/t = src.t_per
+ if (src.t_per > t2)
+ t = t2
+ src.gas.transfer_from(src.holding.gas, t)
+ else
+ src.t_status = 3
+ else
+ if (src.c_status == 1)
+ var/C = locate(/obj/machinery/connector, src.loc)
+ if (C)
+ var/obj/substance/gas/G = new /obj/substance/gas( )
+ G.transfer_from(src.gas, src.c_per)
+ spawn( 0 )
+ C.receive_gas(G, null)
+ return
+ else
+ C.c_status = 0
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(432)
+ src.setstate()
+ return
+
+/obj/machinery/atmoalter/heater/New()
+
+ ..()
+ src.gas = new /obj/substance/gas( src )
+ src.gas.maximum = src.maximum
+ return
+
+/obj/machinery/atmoalter/heater/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/atmoalter/heater/attack_hand(user as mob)
+
+ user.machine = src
+ switch(src.t_status)
+ if(1.0)
+ var/tt = text("Releasing Siphon Stop", src, src)
+ if(2.0)
+ tt = text("Release SiphoningStop", src, src)
+ if(3.0)
+ tt = text("Release Siphon Stopped", src, src)
+ else
+ var/ht = null
+ if (src.h_status)
+ ht = text("Heating Stop", src)
+ else
+ ht = text("Heat Stopped", src)
+ var/ct = null
+ switch(src.c_status)
+ if(1.0)
+ ct = text("Releasing Accept Stop", src, src)
+ if(2.0)
+ ct = text("Release Accepting Stop", src, src)
+ if(3.0)
+ ct = text("Release Accept Stopped", src, src)
+ else
+ ct = "Disconnected"
+ var/dat = text("Canister Valves
\nContains/Capacity [] / []
\nUpper Valve Status: [][]
\n\tM - - - - [] + + + + M
\nHeater Status: [] - []
\n\tTrg Tmp: - - - [] + + +
\n
\nPipe Valve Status: []
\n\tM - - - - [] + + + + M
\n
\nClose
\n", src.gas.tot_gas(), src.maximum, tt, (src.holding ? text("
Tank ([])", src, src.holding.gas.tot_gas()) : null), src, num2text(1000000.0, 7), src, src, src, src, src.t_per, src, src, src, src, src, num2text(1000000.0, 7), ht, (src.gas.tot_gas() ? src.temperature : 20), src, src, src, src.h_tar, src, src, src, ct, src, num2text(1000000.0, 7), src, src, src, src, src.c_per, src, src, src, src, src, num2text(1000000.0, 7), user)
+ user << browse(dat, "window=canister;size=600x300")
+ return
+
+/obj/machinery/atmoalter/heater/Topic(href, href_list)
+
+ if (usr.stat)
+ return
+ if ((get_dist(src, usr) <= 1 && istype(src.loc, /turf)))
+ usr.machine = src
+ if (href_list["c"])
+ var/c = text2num(href_list["c"])
+ switch(c)
+ if(1.0)
+ src.c_status = 1
+ if(2.0)
+ src.c_status = 2
+ if(3.0)
+ src.c_status = 3
+ else
+ else
+ if (href_list["t"])
+ var/t = text2num(href_list["t"])
+ if (src.t_status == 0)
+ return
+ switch(t)
+ if(1.0)
+ src.t_status = 1
+ if(2.0)
+ src.t_status = 2
+ if(3.0)
+ src.t_status = 3
+ else
+ else
+ if (href_list["h"])
+ var/h = text2num(href_list["h"])
+ if (h == 1)
+ src.h_status = 1
+ else
+ src.h_status = null
+ else
+ if (href_list["tp"])
+ var/tp = text2num(href_list["tp"])
+ src.t_per += tp
+ src.t_per = min(max(round(src.t_per), 0), 1000000.0)
+ else
+ if (href_list["cp"])
+ var/cp = text2num(href_list["cp"])
+ src.c_per += cp
+ src.c_per = min(max(round(src.c_per), 0), 1000000.0)
+ else
+ if (href_list["ht"])
+ var/cp = text2num(href_list["ht"])
+ src.h_tar += cp
+ src.h_tar = min(max(round(src.h_tar), 0), 500)
+ else
+ if (href_list["tank"])
+ var/cp = text2num(href_list["tank"])
+ if ((cp == 1 && src.holding))
+ src.holding.loc = src.loc
+ src.holding = null
+ if (src.t_status == 2)
+ src.t_status = 3
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(515)
+ src.add_fingerprint(usr)
+ else
+ usr << browse(null, "window=canister")
+ return
+ return
+
+/obj/machinery/atmoalter/heater/attackby(W as obj, user as mob)
+
+ if (istype(W, /obj/item/weapon/tank))
+ if (src.holding)
+ return
+ var/T = W
+ user.drop_item()
+ T.loc = src
+ src.holding = T
+ else
+ if (istype(W, /obj/item/weapon/screwdriver))
+ if (src.c_status)
+ src.anchored = 0
+ src.c_status = 0
+ else
+ if (locate(/obj/machinery/connector, src.loc))
+ src.anchored = 1
+ src.c_status = 3
+ return
+
+/obj/machinery/atmoalter/canister/proc/update_icon()
+
+ var/air_in = src.gas.tot_gas()
+ if (src.destroyed)
+ src.icon_state = text("[]-1", src.color)
+ else
+ if (air_in < 10)
+ src.icon_state = text("0[][]", src.color, (src.holding ? "-T" : null))
+ else
+ if (air_in < (src.gas.maximum * 0.2))
+ src.icon_state = text("1[][]", src.color, (src.holding ? "-T" : null))
+ else
+ if (air_in < (src.maximum * 0.6))
+ src.icon_state = text("2[][]", src.color, (src.holding ? "-T" : null))
+ else
+ src.icon_state = text("3[][]", src.color, (src.holding ? "-T" : null))
+ return
+
+/obj/machinery/atmoalter/canister/proc/healthcheck()
+
+ if (src.health <= 10)
+ var/T = src.loc
+ if (!( istype(T, /turf) ))
+ return
+ src.gas.turf_add(T, -1.0)
+ src.destroyed = 1
+ src.density = 0
+ update_icon()
+ if (src.holding)
+ src.holding.loc = src.loc
+ src.holding = null
+ if (src.t_status == 2)
+ src.t_status = 3
+ return
+
+/obj/machinery/atmoalter/canister/process()
+
+ if (src.destroyed)
+ return
+ var/T = src.loc
+ if (istype(T, /turf))
+ if (locate(/obj/move, T))
+ T = locate(/obj/move, T)
+ else
+ T = null
+ switch(src.t_status)
+ if(1.0)
+ if (src.holding)
+ var/t1 = src.gas.tot_gas()
+ var/t2 = t1
+ var/t = src.t_per
+ if (src.t_per > t2)
+ t = t2
+ src.holding.gas.transfer_from(src.gas, t)
+ else
+ if (T)
+ var/t1 = src.gas.tot_gas()
+ var/t2 = t1
+ var/t = src.t_per
+ if (src.t_per > t2)
+ t = t2
+ src.gas.turf_add(T, t)
+ src.update_icon()
+ if(2.0)
+ if (src.holding)
+ var/t1 = src.gas.tot_gas()
+ var/t2 = src.maximum - t1
+ var/t = src.t_per
+ if (src.t_per > t2)
+ t = t2
+ src.gas.transfer_from(src.holding.gas, t)
+ else
+ src.t_status = 3
+ src.update_icon()
+ else
+ if (src.c_status == 1)
+ var/C = locate(/obj/machinery/connector, src.loc)
+ if (C)
+ var/obj/substance/gas/G = new /obj/substance/gas( )
+ G.transfer_from(src.gas, src.c_per)
+ spawn( 0 )
+ C.receive_gas(G, null)
+ return
+ src.update_icon()
+ else
+ src.c_status = 0
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(450)
+ src.update_icon()
+ return
+
+/obj/machinery/atmoalter/canister/New()
+
+ ..()
+ src.gas = new /obj/substance/gas( src )
+ src.gas.maximum = src.maximum
+ return
+
+/obj/machinery/atmoalter/canister/burn(fi_amount)
+
+ src.health -= 1
+ healthcheck()
+ return
+
+/obj/machinery/atmoalter/canister/meteorhit(O as obj)
+
+ src.health = 0
+ healthcheck()
+ return
+
+/obj/machinery/atmoalter/canister/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/atmoalter/canister/attack_hand(user as mob)
+
+ if (src.destroyed)
+ return
+ user.machine = src
+ switch(src.t_status)
+ if(1.0)
+ var/tt = text("Releasing Siphon (only tank) Stop", src, src)
+ if(2.0)
+ tt = text("Release Siphoning (only tank) Stop", src, src)
+ if(3.0)
+ tt = text("Release Siphon (only tank) Stopped", src, src)
+ else
+ var/ct = null
+ switch(src.c_status)
+ if(1.0)
+ ct = text("Releasing Accept Stop", src, src)
+ if(2.0)
+ ct = text("Release Accepting Stop", src, src)
+ if(3.0)
+ ct = text("Release Accept Stopped", src, src)
+ else
+ ct = "Disconnected"
+ var/dat = text("Canister Valves
\nContains/Capacity [] / []
\nUpper Valve Status: []
\n\t[]
\n\tM - - - - [] + + + + M
\nPipe Valve Status: []
\n\tM - - - - [] + + + + M
\n
\nClose
\n", num2text(src.gas.tot_gas(), 20), num2text(src.maximum, 20), tt, (src.holding ? text("Tank ([])", src, src.holding.gas.tot_gas()) : null), src, num2text(1000000.0, 7), src, src, src, src, src.t_per, src, src, src, src, src, num2text(1000000.0, 7), ct, src, num2text(1000000.0, 7), src, src, src, src, src.c_per, src, src, src, src, src, num2text(1000000.0, 7), user)
+ user << browse(dat, "window=canister;size=600x300")
+ return
+
+/obj/machinery/atmoalter/canister/Topic(href, href_list)
+
+ if (usr.stat)
+ return
+ if ((get_dist(src, usr) <= 1 && istype(src.loc, /turf)))
+ usr.machine = src
+ if (href_list["c"])
+ var/c = text2num(href_list["c"])
+ switch(c)
+ if(1.0)
+ src.c_status = 1
+ if(2.0)
+ src.c_status = 2
+ if(3.0)
+ src.c_status = 3
+ else
+ else
+ if (href_list["t"])
+ var/t = text2num(href_list["t"])
+ if (src.t_status == 0)
+ return
+ switch(t)
+ if(1.0)
+ src.t_status = 1
+ if(2.0)
+ if (src.holding)
+ src.t_status = 2
+ else
+ src.t_status = 3
+ if(3.0)
+ src.t_status = 3
+ else
+ else
+ if (href_list["tp"])
+ var/tp = text2num(href_list["tp"])
+ src.t_per += tp
+ src.t_per = min(max(round(src.t_per), 0), 1000000.0)
+ else
+ if (href_list["cp"])
+ var/cp = text2num(href_list["cp"])
+ src.c_per += cp
+ src.c_per = min(max(round(src.c_per), 0), 1000000.0)
+ else
+ if (href_list["tank"])
+ var/cp = text2num(href_list["tank"])
+ if ((cp == 1 && src.holding))
+ src.holding.loc = src.loc
+ src.holding = null
+ if (src.t_status == 2)
+ src.t_status = 3
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(423)
+ src.add_fingerprint(usr)
+ update_icon()
+ else
+ usr << browse(null, "window=canister")
+ return
+ return
+
+/obj/machinery/atmoalter/canister/attackby(W as obj, user as mob)
+
+ if ((istype(W, /obj/item/weapon/tank) && !( src.destroyed )))
+ if (src.holding)
+ return
+ var/T = W
+ user.drop_item()
+ T.loc = src
+ src.holding = T
+ update_icon()
+ else
+ if ((istype(W, /obj/item/weapon/screwdriver) && !( src.destroyed )))
+ if (src.c_status)
+ src.anchored = 0
+ src.c_status = 0
+ else
+ if (locate(/obj/machinery/connector, src.loc))
+ src.anchored = 1
+ src.c_status = 3
+ else
+ switch(W.damtype)
+ if("fire")
+ src.health -= W.force
+ if("brute")
+ src.health -= src.force * 0.5
+ else
+ src.healthcheck()
+ ..()
+ return
+
+/obj/machinery/atmoalter/canister/las_act(flag)
+
+ if (flag == "bullet")
+ src.health = 0
+ spawn( 0 )
+ healthcheck()
+ return
+ if (flag)
+ var/T = src.loc
+ if (!( istype(T, /turf) ))
+ return
+ else
+ T.firelevel = T.poison
+ else
+ src.health = 0
+ spawn( 0 )
+ healthcheck()
+ return
+ return
+
+/obj/machinery/atmoalter/canister/poisoncanister/New()
+
+ ..()
+ src.update_icon()
+ src.gas.plasma = 9.0E7
+ return
+
+/obj/machinery/atmoalter/canister/oxygencanister/New()
+
+ ..()
+ src.gas.oxygen = 1.0E8
+ return
+
+/obj/machinery/atmoalter/canister/anesthcanister/New()
+
+ ..()
+ src.gas.sl_gas = 1.0E8
+ return
+
+/obj/machinery/atmoalter/canister/n2canister/New()
+
+ ..()
+ src.gas.n2 = 1.0E8
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/dna.dm b/ss13-40.93.2-decomp/spacestation13/dna.dm
new file mode 100644
index 0000000..eab94ca
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/dna.dm
@@ -0,0 +1,936 @@
+
+/proc/scram(n)
+
+ var/t = ""
+ var/p = null
+ p = 1
+ while(p <= n)
+ t = text("[][]", t, rand(1, 9))
+ p++
+ return t
+ return
+
+/obj/machinery/computer/dna/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/computer/dna/attack_hand(user as mob)
+
+ user.machine = src
+ if (istype(user, /mob/human))
+ var/dat = text("Please Insert the cards into the slots
\n\t\t\t\tFunction Disk: []
\n\t\t\t\tTarget Disk: []
\n\t\t\t\tAux. Data Disk: []
\n\t\t\t\t\t(Not always used!)
\n\t\t\t\t[]", src, (src.scan ? text("[]", src.scan.name) : "----------"), src, (src.modify ? text("[]", src.modify.name) : "----------"), src, (src.modify2 ? text("[]", src.modify2.name) : "----------"), (src.scan ? text("Execute Function", src) : "No function disk inserted!"))
+ if (src.temp)
+ dat = text("[]
Clear Message", src.temp, src)
+ user << browse(dat, "window=dna_comp")
+ else
+ var/dat = text("[]
\n\t\t\t\t[] []
\n\t\t\t\t[] []
\n\t\t\t\t[] []
\n\t\t\t\t\t(Not always used!)
\n\t\t\t\t[]", stars("Please Insert the cards into the slots"), stars("Function Disk:"), src, (src.scan ? text("[]", src.scan.name) : "----------"), stars("Target Disk:"), src, (src.modify ? text("[]", src.modify.name) : "----------"), stars("Aux. Data Disk:"), src, (src.modify2 ? text("[]", src.modify2.name) : "----------"), (src.scan ? text("[]", src, stars("Execute Function")) : stars("No function disk inserted!")))
+ if (src.temp)
+ dat = text("[]
[]", stars(src.temp), src, stars("Clear Message"))
+ user << browse(dat, "window=dna_comp")
+ return
+
+/obj/machinery/computer/dna/Topic(href, href_list)
+
+ if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey"))))
+ usr << "\red You don't have the dexterity to do this!"
+ return
+ if ((usr.stat || usr.restrained()))
+ return
+ if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf))))
+ usr.machine = src
+ if (href_list["modify"])
+ if (src.modify)
+ src.modify.loc = src.loc
+ src.modify = null
+ src.mode = null
+ else
+ var/I = usr.equipped()
+ if (istype(I, /obj/item/weapon/card/data))
+ usr.drop_item()
+ I.loc = src
+ src.modify = I
+ src.mode = null
+ if (href_list["modify2"])
+ if (src.modify2)
+ src.modify2.loc = src.loc
+ src.modify2 = null
+ src.mode = null
+ else
+ var/I = usr.equipped()
+ if (istype(I, /obj/item/weapon/card/data))
+ usr.drop_item()
+ I.loc = src
+ src.modify2 = I
+ src.mode = null
+ if (href_list["scan"])
+ if (src.scan)
+ src.scan.loc = src.loc
+ src.scan = null
+ src.mode = null
+ else
+ var/I = usr.equipped()
+ if (istype(I, /obj/item/weapon/card/data))
+ usr.drop_item()
+ I.loc = src
+ src.scan = I
+ src.mode = null
+ if (href_list["clear"])
+ src.temp = null
+ if (href_list["execute"])
+ if ((src.scan && src.scan.function))
+ switch(src.scan.function)
+ if("data_mutate")
+ if (src.modify)
+ if (!( findtext(src.scan.data, "-", 1, null) ))
+ if ((src.modify.data && (src.scan.data && length(src.modify.data) >= length(src.scan.data))))
+ src.modify.data = text("[][]", src.scan.data, (length(src.modify.data) > length(src.scan.data) ? copytext(src.modify.data, length(src.scan.data) + 1, length(src.modify.data) + 1) : null))
+ else
+ src.temp = "Disk Failure: Cannot examine data! (Null or wrong format)"
+ else
+ var/d = findtext(src.data, "-", 1, null)
+ var/t = copytext(src.data, d + 1, length(src.data) + 1)
+ d = text2num(copytext(1, d, null))
+ if ((d && (t && (src.modify.data && (src.scan.data && length(src.modify.data) >= ((length(t) + d) - 1))))))
+ src.modify.data = text("[][][]", copytext(src.modify.data, 1, d), t, (length(src.data) > (length(t) + d) ? copytext(src.data, length(t) + d, length(src.data) + 1) : null))
+ else
+ src.temp = "Disk Failure: Cannot examine data! (Null or wrong format)"
+ else
+ src.temp = "Disk Failure: Cannot read target disk!"
+ if("dna_seq")
+ src.temp = "DNA Systems Help:\nHuman DNA sequences: (Compressed in *.dna format version 10.76)\n\tSpecies Identification Marker: (28 chromosomes)\n\t\t5BDFE293BA5500F9FFFD500AAFFE\n\tStructural Enzymes:\n\t\tCDE375C9A6C25A7DBDA50EC05AC6CEB63\n\t\tNote: The first id set is used for DNA clean up operations.\n\tUsed Enzymes:\n\t\t493DB249EB6D13236100A37000800AB71\n\tSpecies/Genus Classification: Homo Sapien\n\nMonkey DNA sequences: (Compressed in *.dna format version 10.76)\n\tSpecies Identification Marker: (16 chromosomes)\n\t\t2B6696D2B127E5A4\n\tStructural Enzymes:\n\t\tCDEAF5B90AADBC6BA8033DB0A7FD613FA\n\t\tNote: The first id set is used for DNA clean up operations.\n\tUsed Enzymes:\n\t\tC8FFFE7EC09D80AEDEDB9A5A0B4085B61\n\tSpecies/Genus Classification: Generic Monkey\n>"
+ if("dna_help")
+ src.temp = "DNA Systems Help:\nThe DNA systems consists 3 systems.\nI. DNA Scanner/Implanter - This system is slightly advanced to use. It accepts\n\t1 disk. Before you wish to run a function/program you must implant the\n\tdisk data into the temporary memory. Note that once this is done the disk can\n\tbe removed to place a data disk in.\nII. DNA computer - This is a simple yet fast computer that basically operates on data.\nIII. Restructurer - This device reorganizes the anatomical structure of the subject\n\taccording to the DNA sequences. Please note that it is illegal to perform a\n\ttransfer from one species to or from the Homo sapiens species but\n\thuman to human is acceptable under UNSD guidlines.\n\tNote: This machine is programmed to operate on specific preprogrammed species with\n\tspecialized anatomical blueprints hard coded into its databanks. It cannot operate\n\ton other species. (Current: Human, Monkey)\n\nData Disks:\n\tThese run on 2 (or 3) types: DNA scanner program disks and data modification\nfunctions (and disk modification functions)\n\nDisk-Copy\n\tThis erases the target disk and completely copies the data from the aux. disk.\nDisk-Erase\n\tThis erases everything on the target disk.\nData-Clear\n\tThis erases (clears) only the data.\n\nData-Trunicate\n\tThis removes data from the target disk (parameters gathered from data slot on target\n\tdisk). This fuction has 4 modes (a,b,c,default) defined by this way. (mode id)(#)\n\ta - This cuts # data from the end. (ex a1 on ABCD = ABC)\n\tb - This cuts # data from the beginning. (ex b1 on ABCD = BCD)\n\tc - This limits the data from the end. (ex c1 on ABCD = A)\n\tdefault - This limits the data from the end. (ex 1 on ABCD = D)\nData-Add\n\tThis adds thedata on the aux. disk to the data on the target disk.\nData-Sramble\n\tThis scrambles the data on the target disk. The length is equal to\n\tthe length of the original data.\nData-Input\n\tThis lets you input data into the data slot of any data disk.\n\tNote: This doesn't work only on storage.\nData-Mutate\n\tThis basically inserts text. You follow this format:\n\tpos-text (or just text for automatic pos 1)\n\tie 2-IVE on FOUR yields FIVE\n"
+ if("data_add")
+ if (src.modify)
+ if (src.modify2)
+ if ((src.modify.data && src.modify2.data))
+ src.modify.data += src.modify2
+ src.temp = text("Done!
New Data:
[]", src.modify.data)
+ else
+ src.temp = "Cannot read data! (may be null)"
+ else
+ src.temp = "Disk Failure: Cannot read aux. data disk!"
+ else
+ src.temp = "Disk Failure: Cannot read target disk!"
+ if("data_scramble")
+ if (src.modify)
+ if (length(text("[]", src.modify.data)) >= 1)
+ src.modify.data = scram(length(text("[]", src.data)))
+ src.temp = text("Data scrambled: []", src.modify.data)
+ else
+ src.temp = "No data to scramble"
+ else
+ src.temp = "Disk Failure: Cannot read target disk!"
+ if("data_input")
+ if (src.modify)
+ var/dat = input(usr, ">", text("[]", src.name), null) as text
+ var/s = src.scan
+ var/m = src.modify
+ if ((usr.stat || (usr.restrained() || (src.modify != m || src.scan != s))))
+ return
+ if ((get_dist(src, usr) <= 1 && istype(src.loc, /turf)))
+ src.modify.data = dat
+ else
+ src.temp = "Disk Failure: Cannot read target disk!"
+ if("disk_copy")
+ if (src.modify)
+ if (src.modify2)
+ src.modify.function = src.modify2.function
+ src.modify.data = src.modify2.data
+ src.modify.special = src.modify2.special
+ src.temp = "All disk data/programs copied."
+ else
+ src.temp = "Disk Failure: Cannot read aux. data disk!"
+ else
+ src.temp = "Disk Failure: Cannot read target disk!"
+ if("disk_dis")
+ if (src.modify)
+ src.temp = text("Function: [][]
Data: []", src.modify.function, (src.special ? text("-[]", src.special) : null), src.modify.data)
+ else
+ src.temp = "Disk Failure: Cannot read target disk!"
+ if("disk_erase")
+ if (src.modify)
+ src.modify.data = null
+ src.modify.function = "storage"
+ src.modify.special = null
+ src.temp = "All Disk contents deleted."
+ else
+ src.temp = "Disk Failure: Cannot read target disk!"
+ if("data_clear")
+ if (src.modify)
+ src.modify.data = null
+ src.temp = "Disk data cleared."
+ else
+ src.temp = "Disk Failure: Cannot read target disk!"
+ if("data_trun")
+ if (src.modify)
+ if ((src.modify.data && src.scan.data))
+ var/l1 = length(src.modify.data)
+ var/l2 = max(round(text2num(src.scan.data)), 1)
+ switch(copytext(src.data, 1, 2))
+ if("a")
+ if (l1 > l2)
+ src.data = copytext(src.modify.data, 1, (l1 - l2) + 1)
+ else
+ src.modify.data = ""
+ src.temp = text("Done!
New Data:
[]", src.modify.data)
+ if("b")
+ if (l1 > l2)
+ src.data = copytext(src.modify.data, l2, l1 + 1)
+ else
+ src.modify.data = ""
+ src.temp = text("Done!
New Data:
[]", src.modify.data)
+ if("c")
+ if (l1 >= l2)
+ src.data = copytext(src.modify.data, l1 - l2, l1 + 1)
+ src.temp = text("Done!
New Data:
[]", src.modify.data)
+ else
+ if (l1 >= l2)
+ src.data = copytext(src.modify.data, 1, l2 + 1)
+ src.temp = text("Done!
New Data:
[]", src.modify.data)
+ else
+ src.temp = "Cannot read data! (may be null and note that function data slot is used instead of aux disk!!)"
+ else
+ src.temp = "Disk Failure: Cannot read target disk!"
+ else
+ else
+ src.temp = "System Failure: Cannot read disk function!"
+ src.add_fingerprint(usr)
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(1764)
+ return
+
+/obj/machinery/computer/dna/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ src = null
+ del(src)
+ return
+ else
+ return
+
+/obj/machinery/dna_scanner/allow_drop()
+
+ return 0
+ return
+
+/obj/machinery/dna_scanner/relaymove(user as mob)
+
+ if (user.stat)
+ return
+ src.go_out()
+ return
+
+/obj/machinery/dna_scanner/verb/eject()
+ set src in oview(1)
+
+ if (usr.stat != 0)
+ return
+ src.go_out()
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/dna_scanner/verb/move_inside()
+ set src in oview(1)
+
+ if (usr.stat != 0)
+ return
+ if (src.occupant)
+ usr << "\blue The scanner is already occupied!"
+ return
+ if (usr.abiotic())
+ usr << "\blue Subject cannot have abiotic items on."
+ return
+ usr.pulling = null
+ usr.client.perspective = EYE_PERSPECTIVE
+ usr.client.eye = src
+ usr.loc = src
+ src.occupant = usr
+ src.icon_state = "scanner_1"
+ for(var/obj/O as obj in src)
+ O = null
+ del(O)
+ //Foreach goto(124)
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/dna_scanner/attackby(G as obj, user as mob)
+
+ if ((!( istype(G, /obj/item/weapon/grab) ) || !( ismob(G.affecting) )))
+ return
+ if (src.occupant)
+ user << "\blue The scanner is already occupied!"
+ return
+ if (G.affecting.abiotic())
+ user << "\blue Subject cannot have abiotic items on."
+ return
+ var/M = G.affecting
+ if (M.client)
+ M.client.perspective = EYE_PERSPECTIVE
+ M.client.eye = src
+ M.loc = src
+ src.occupant = M
+ src.icon_state = "scanner_1"
+ for(var/obj/O as obj in src)
+ O.loc = src.loc
+ //Foreach goto(154)
+ src.add_fingerprint(user)
+ G = null
+ del(G)
+ return
+
+/obj/machinery/dna_scanner/proc/go_out()
+
+ if ((!( src.occupant ) || src.locked))
+ return
+ for(var/obj/O as obj in src)
+ O.loc = src.loc
+ //Foreach goto(30)
+ if (src.occupant.client)
+ src.eye = src.occupant.client.mob
+ src.occupant.client.perspective = MOB_PERSPECTIVE
+ src.occupant.loc = src.loc
+ src.occupant = null
+ src.icon_state = "scanner_0"
+ return
+
+/obj/machinery/dna_scanner/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ for(var/atom/movable/A as mob|obj in src)
+ A.loc = src.loc
+ ex_act(severity)
+ //Foreach goto(35)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/atom/movable/A as mob|obj in src)
+ A.loc = src.loc
+ ex_act(severity)
+ //Foreach goto(108)
+ src = null
+ del(src)
+ return
+ if(3.0)
+ if (prob(25))
+ for(var/atom/movable/A as mob|obj in src)
+ A.loc = src.loc
+ ex_act(severity)
+ //Foreach goto(181)
+ src = null
+ del(src)
+ return
+ else
+ return
+
+/obj/machinery/scan_console/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ src = null
+ del(src)
+ return
+ else
+ return
+
+/obj/machinery/scan_console/New()
+
+ ..()
+ spawn( 5 )
+ src.connected = locate(/obj/machinery/dna_scanner, get_step(src, WEST))
+ return
+ return
+
+/obj/machinery/scan_console/process()
+
+ if (!( src.status ))
+ return
+ if (!( src.func ))
+ src.temp = "No function loaded into memory core!"
+ src.status = null
+ if ((src.connected && src.connected.occupant))
+ var/M = src.connected.occupant
+ if (src.status == "load")
+ src.prog_p1 = null
+ src.prog_p2 = null
+ src.prog_p3 = null
+ src.prog_p4 = null
+ switch(src.func)
+ if("dna_trun")
+ if (src.data)
+ src.prog_p1 = copytext(src.data, 1, 2)
+ src.prog_p2 = text2num(src.data)
+ src.prog_p3 = src.special
+ src.status = "dna_trun"
+ src.temp = "Executing trunication function on occupant."
+ else
+ src.temp = "No data implanted in core memory."
+ src.status = null
+ if("dna_scan")
+ if (src.special)
+ if (src.scan)
+ if (istype(M, /mob))
+ switch(src.special)
+ if("UI")
+ src.temp = text("Scan Complete:
Data downloaded to disk!
Unique Identifier: []", M.primary.uni_identity)
+ src.scan.data = M.primary.uni_identity
+ if("SE")
+ src.temp = text("Scan Complete:
Data downloaded to disk!
Structural Enzymes: []", M.primary.struc_enzyme)
+ src.scan.data = M.primary.struc_enzyme
+ if("UE")
+ src.temp = text("Scan Complete:
Data downloaded to disk!
Used Enzynmes: []", M.primary.use_enzyme)
+ src.scan.data = M.primary.use_enzyme
+ if("SI")
+ src.temp = text("Scan Complete:
Data downloaded to disk!
Species Identifier: []", M.primary.spec_identity)
+ src.scan.data = M.primary.spec_identity
+ else
+ else
+ src.temp = "No occupant to scan!"
+ else
+ src.temp = "Error: No disk to upload data to."
+ else
+ src.temp = "Error: Function program errors."
+ src.status = null
+ if("dna_replace")
+ if ((src.data && src.special))
+ src.prog_p1 = src.special
+ src.prog_p2 = src.data
+ src.status = "dna_replace"
+ src.temp = "Executing repalcement function on occupant."
+ else
+ src.temp = "Error: No DNA data loaded into core or function program errors."
+ src.status = null
+ if("dna_add")
+ if ((src.data && src.special))
+ src.prog_p1 = src.special
+ src.prog_p2 = src.data
+ src.status = "dna_add"
+ src.temp = "Executing addition function on occupant."
+ else
+ src.temp = "Error: No DNA data loaded into core or function program errors."
+ src.status = null
+ else
+ src.temp = "Cannot execute program!"
+ src.status = null
+ else
+ if (src.status == "dna_trun")
+ if (istype(M, /mob))
+ var/t = null
+ switch(src.prog_p3)
+ if("UI")
+ t = M.primary.uni_identity
+ if("SE")
+ t = M.primary.struc_enzyme
+ if("UE")
+ t = M.primary.use_enzyme
+ if("SI")
+ t = M.primary.spec_identity
+ else
+ if (!( src.prog_p4 ))
+ switch(src.prog_p1)
+ if("a")
+ src.prog_p4 = length(t)
+ if("b")
+ src.prog_p4 = 1
+ else
+ else
+ if (src.prog_p1 == "a")
+ src.prog_p4--
+ else
+ if (src.prog_p1 == "b")
+ src.prog_p4--
+ switch(src.prog_p1)
+ if("a")
+ if (src.prog_p4 <= 0)
+ src.temp = "Trunication complete"
+ src.status = null
+ else
+ t = copytext(t, 1, length(t))
+ src.temp = text("Trunicating []'s DNA sequence...
[]
Status: [] units left.
Emergency Abort", M.name, t, src.prog_p4, src)
+ if("b")
+ if (src.prog_p4 <= 0)
+ src.temp = "Trunication complete"
+ src.status = null
+ else
+ t = copytext(t, 2, length(t) + 1)
+ src.temp = text("Trunicating []'s DNA sequence...
[]
Status: [] units left.
Emergency Abort", M.name, t, src.prog_p4, src)
+ if("c")
+ if (length(t) <= src.prog_p2)
+ src.temp = "Limitation complete"
+ src.status = null
+ else
+ t = copytext(t, 1, length(t))
+ src.temp = text("Limiting []'s DNA sequence...
[]
Status: [] units converting to [] units.
Emergency Abort", M.name, t, length(t), src.prog_p2, src)
+ else
+ if (length(t) <= src.prog_p2)
+ src.temp = "Limitation complete"
+ src.status = null
+ else
+ t = copytext(t, 2, length(t) + 1)
+ src.temp = text("Limiting []'s DNA sequence...
[]
Status: [] units converting to [] units.
Emergency Abort", M.name, t, length(t), src.prog_p2, src)
+ switch(src.prog_p3)
+ if("UI")
+ M.primary.uni_identity = t
+ if("SE")
+ M.primary.struc_enzyme = t
+ if("UE")
+ M.primary.use_enzyme = t
+ if("SI")
+ M.primary.spec_identity = t
+ else
+ else
+ M.temp = "Process terminated due to lack of occupant in DNA chamber."
+ M.status = null
+ else
+ if (M.status == "dna_replace")
+ if (istype(M, /mob))
+ var/t = null
+ switch(M.prog_p1)
+ if("UI")
+ t = M.primary.uni_identity
+ if("SE")
+ t = M.primary.struc_enzyme
+ if("UE")
+ t = M.primary.use_enzyme
+ if("SI")
+ t = M.primary.spec_identity
+ else
+ if (!( src.prog_p4 ))
+ src.prog_p4 = 1
+ else
+ src.prog_p4++
+ if ((src.prog_p4 > length(t) || src.prog_p4 > length(src.prog_p2)))
+ src.temp = "Replacement complete"
+ src.status = null
+ else
+ t = text("[][][]", copytext(t, 1, src.prog_p4), copytext(src.prog_p2, src.prog_p4, src.prog_p4 + 1), (src.prog_p4 < length(t) ? copytext(t, src.prog_p4 + 1, length(t) + 1) : null))
+ src.temp = text("Replacing []'s DNA sequence...
[]
Target: []
Status: At position []
Emergency Abort", M.name, t, src.prog_p2, src.prog_p4, src)
+ switch(src.prog_p1)
+ if("UI")
+ M.primary.uni_identity = t
+ if("SE")
+ M.primary.struc_enzyme = t
+ if("UE")
+ M.primary.use_enzyme = t
+ if("SI")
+ M.primary.spec_identity = t
+ else
+ else
+ M.temp = "Process terminated due to lack of occupant in DNA chamber."
+ M.status = null
+ else
+ if (M.status == "dna_add")
+ if (istype(M, /mob))
+ var/t = null
+ switch(M.prog_p1)
+ if("UI")
+ t = M.primary.uni_identity
+ if("SE")
+ t = M.primary.struc_enzyme
+ if("UE")
+ t = M.primary.use_enzyme
+ if("SI")
+ t = M.primary.spec_identity
+ else
+ if (!( src.prog_p4 ))
+ src.prog_p4 = 1
+ else
+ src.prog_p4++
+ if (src.prog_p4 > length(src.prog_p2))
+ src.temp = "Addition complete"
+ src.status = null
+ else
+ t = text("[][]", t, copytext(src.prog_p2, src.prog_p4, src.prog_p4 + 1))
+ src.temp = text("Adding to []'s DNA sequence...
[]
Adding: []
Position: []
Emergency Abort", M.name, t, src.prog_p2, src.prog_p4, src)
+ switch(src.prog_p1)
+ if("UI")
+ M.primary.uni_identity = t
+ if("SE")
+ M.primary.struc_enzyme = t
+ if("UE")
+ M.primary.use_enzyme = t
+ if("SI")
+ M.primary.spec_identity = t
+ else
+ else
+ M.temp = "Process terminated due to lack of occupant in DNA chamber."
+ M.status = null
+ else
+ M.status = null
+ M.temp = "Unknown system error."
+ for(var/O as mob in viewers(1, src))
+ if ((O.client && O.machine == src))
+ src.attack_hand(O)
+ //Foreach goto(1755)
+ return
+
+/obj/machinery/scan_console/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/scan_console/attack_hand(user as mob)
+
+ if (src.temp)
+ var/dat = text("[]
Clear Message", src.temp, src)
+ else
+ if (src.connected)
+ var/occupant = src.connected.occupant
+ dat = "Occupant Statistics:
"
+ if (occupant)
+ switch(occupant.stat)
+ if(0.0)
+ var/t1 = "Conscious"
+ if(1.0)
+ t1 = "Unconscious"
+ else
+ t1 = "*dead*"
+ dat += text("[]\tHealth %: [] ([])
", (occupant.health > 50 ? "" : ""), occupant.health, t1)
+ else
+ dat += "The scanner is empty.
"
+ if (!( src.connected.locked ))
+ dat += text("Lock (Unlocked)
", src)
+ else
+ dat += text("Unlock (Locked)
", src)
+ dat += text("Disk: []
\n[]
\n[]
", src, (src.scan ? text("[]", src.scan.name) : "----------"), (src.scan ? text("Upload Data", src) : "No disk to upload"), ((src.data || (src.func || src.special)) ? text("Clear Data
Execute Data
Function Type: [][]
Data: []", src, src, src.func, (src.special ? text("-[]", src.special) : null), src.data) : "No data uploaded"))
+ dat += text("
Close", user)
+ user << browse(dat, "window=scanner;size=400x500")
+ return
+
+/obj/machinery/scan_console/Topic(href, href_list)
+
+ if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey"))))
+ usr << "\red You don't have the dexterity to do this!"
+ return
+ if ((usr.stat || usr.restrained()))
+ return
+ if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf))))
+ usr.machine = src
+ if (href_list["locked"])
+ if ((src.connected && src.connected.occupant))
+ src.locked = !( src.connected.locked )
+ if (href_list["scan"])
+ if (src.scan)
+ src.scan.loc = src.loc
+ src.scan = null
+ else
+ var/I = usr.equipped()
+ if (istype(I, /obj/item/weapon/card/data))
+ usr.drop_item()
+ I.loc = src
+ src.scan = I
+ if (href_list["u_dat"])
+ if ((src.scan && !( src.status )))
+ if ((src.scan.function && src.function != "storage"))
+ src.func = src.scan.function
+ src.special = src.scan.special
+ if (src.scan.data)
+ src.data = src.data
+ else
+ src.temp = "No disk found or core data access lock out!"
+ if (href_list["c_dat"])
+ if (!( src.status ))
+ src.func = null
+ src.data = null
+ src.special = null
+ else
+ src.temp = "No disk found or core data access lock out!"
+ if (href_list["clear"])
+ src.temp = null
+ if (href_list["abort"])
+ src.status = null
+ if (href_list["e_dat"])
+ if (!( src.status ))
+ src.status = "load"
+ src.temp = "Loading..."
+ src.add_fingerprint(usr)
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(484)
+ return
+
+/obj/machinery/restruct/allow_drop()
+
+ return 0
+ return
+
+/obj/machinery/restruct/verb/eject()
+ set src in oview(1)
+
+ if (usr.stat != 0)
+ return
+ src.go_out()
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/restruct/verb/operate()
+ set src in oview(1)
+
+ src.add_fingerprint(usr)
+ if ((src.occupant && src.occupant.primary))
+ switch(src.occupant.primary.spec_identity)
+ if("5BDFE293BA5500F9FFFD500AAFFE")
+ if (!( istype(src.occupant, /mob/human) ))
+ for(var/obj/O as obj in src.occupant)
+ O = null
+ del(O)
+ //Foreach goto(78)
+ var/mob/human/O = new /mob/human( src )
+ var/M = src.occupant
+ O.start = 1
+ O.primary = M.primary
+ M.primary = null
+ var/t1 = hex2num(copytext(O.primary.uni_identity, 25, 28))
+ if (t1 < 125)
+ O.gender = "male"
+ else
+ O.gender = "female"
+ M << "Genetic Transversal Complete!"
+ if (M.client)
+ M << "Transferring..."
+ M.client.mob = O
+ O << "Neural Sequencing Complete!"
+ O.loc = src
+ src.occupant = O
+ M = null
+ del(M)
+ src.occupant = O
+ src.occupant << "Done!"
+ if("2B6696D2B127E5A4")
+ if (!( istype(src.occupant, /mob/monkey) ))
+ for(var/obj/O as obj in src.occupant)
+ O = null
+ del(O)
+ //Foreach goto(337)
+ var/mob/monkey/O = new /mob/monkey( src )
+ var/M = src.occupant
+ O.start = 1
+ O.primary = M.primary
+ M.primary = null
+ M << "Genetic Transversal Complete!"
+ if (M.client)
+ M << "Transferring..."
+ M.client.mob = O
+ O << "Neural Sequencing Complete!"
+ O.loc = src
+ O << "Genetic Transversal Complete!"
+ src.occupant = O
+ M = null
+ del(M)
+ O.name = text("monkey ([])", copytext(md5(src.occupant.primary.uni_identity), 2, 6))
+ src.occupant << "Done!"
+ else
+ if (istype(src.occupant, /mob/human))
+ var/H = src.occupant
+ if (reg_dna[text("[]", H.primary.uni_identity)])
+ H.rname = reg_dna[text("[]", H.uni_identity)]
+ else
+ if (findname("Unknown"))
+ var/counter = 1
+ while(findname(text("Unknown #[]", counter)))
+ counter++
+ H.rname = text("Unknown #[]", counter)
+ else
+ H.rname = "Unknown"
+ reg_dna[text("[]", H.primary.uni_identity)] = H.rname
+ H << text("\red Your name is now [].", H.rname)
+ var/speak = (length(H.primary.struc_enzyme) >= 25 ? hex2num(copytext(H.struc_enzyme, 22, 25)) : 9999)
+ var/ears = (length(H.primary.struc_enzyme) >= 10 ? hex2num(copytext(H.struc_enzyme, 7, 10)) : 9999)
+ var/vision = (length(H.primary.struc_enzyme) >= 16 ? hex2num(copytext(H.struc_enzyme, 13, 16)) : 1)
+ var/mental1 = (length(H.primary.struc_enzyme) >= 31 ? hex2num(copytext(H.struc_enzyme, 28, 31)) : 1)
+ var/mental2 = (length(H.primary.struc_enzyme) >= 28 ? hex2num(copytext(H.struc_enzyme, 25, 28)) : 1)
+ var/speak2 = (length(H.primary.struc_enzyme) >= 22 ? hex2num(copytext(H.struc_enzyme, 19, 22)) : 1)
+ H.sdisabilities = 0
+ H.disabilities = 0
+ if (speak < 3776)
+ H.disabilities = H.disabilities | 4
+ else
+ if (speak > 3776)
+ H.sdisabilities = H.sdisabilities | 2
+ if (speak2 < 2640)
+ H.disabilities = H.disabilities | 16
+ if (ears > 3226)
+ H.sdisabilities = H.sdisabilities | 4
+ if (vision < 1447)
+ H.sdisabilities = H.sdisabilities | 1
+ else
+ if (vision > 1447)
+ H.disabilities = H.disabilities | 1
+ if (mental1 < 1742)
+ H.disabilities = H.disabilities | 2
+ if (mental2 < 1452)
+ H.disabilities = H.disabilities | 8
+ var/t1 = null
+ if (length(H.primary.uni_identity) >= 20)
+ t1 = copytext(H.uni_identity, 19, 21)
+ if (hex2num(t1) > 127)
+ H.gender = "female"
+ else
+ H.gender = "male"
+ else
+ H.gender = "neuter"
+ if (length(H.primary.uni_identity) >= 18)
+ t1 = copytext(H.uni_identity, 17, 19)
+ H.ns_tone = hex2num(t1)
+ H.ns_tone = -H.ns_tone + 35
+ else
+ H.ns_tone = 1
+ H.ns_tone = -H.ns_tone + 35
+ if (length(H.primary.uni_identity) >= 16)
+ t1 = copytext(H.uni_identity, 15, 17)
+ H.b_eyes = hex2num(t1)
+ else
+ H.b_eyes = 255
+ if (length(H.primary.uni_identity) >= 14)
+ t1 = copytext(H.uni_identity, 13, 15)
+ H.g_eyes = hex2num(t1)
+ else
+ H.g_eyes = 255
+ if (length(H.primary.uni_identity) >= 12)
+ t1 = copytext(H.uni_identity, 11, 13)
+ H.r_eyes = hex2num(t1)
+ else
+ H.r_eyes = 255
+ if (length(H.primary.uni_identity) >= 10)
+ t1 = copytext(H.uni_identity, 9, 11)
+ H.nb_hair = hex2num(t1)
+ else
+ H.nb_hair = 255
+ if (length(H.primary.uni_identity) >= 8)
+ t1 = copytext(H.uni_identity, 7, 9)
+ H.ng_hair = hex2num(t1)
+ else
+ H.ng_hair = 255
+ if (length(H.primary.uni_identity) >= 6)
+ t1 = copytext(H.uni_identity, 5, 7)
+ H.nr_hair = hex2num(t1)
+ else
+ H.nr_hair = 255
+ H.r_hair = H.nr_hair
+ H.g_hair = H.ng_hair
+ H.b_hair = H.nb_hair
+ H.s_tone = H.ns_tone
+ H.update_face()
+ H.update_body()
+ return
+
+/obj/machinery/restruct/verb/move_inside()
+ set src in oview(1)
+
+ if (usr.stat != 0)
+ return
+ if (src.occupant)
+ usr << "\blue The scanner is already occupied!"
+ return
+ if (usr.abiotic())
+ usr << "\blue Subject cannot have abiotic items on."
+ return
+ usr.pulling = null
+ usr.client.perspective = EYE_PERSPECTIVE
+ usr.client.eye = src
+ usr.loc = src
+ src.occupant = usr
+ src.icon_state = "restruct_1"
+ for(var/obj/O as obj in src)
+ O = null
+ del(O)
+ //Foreach goto(124)
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/restruct/relaymove(user as mob)
+
+ if (user.stat)
+ return
+ src.go_out()
+ return
+
+/obj/machinery/restruct/attackby(G as obj, user as mob)
+
+ if ((!( istype(G, /obj/item/weapon/grab) ) || !( ismob(G.affecting) )))
+ return
+ if (src.occupant)
+ user << "\blue The machine is already occupied!"
+ return
+ if (G.affecting.abiotic())
+ user << "\blue Subject cannot have abiotic items on."
+ return
+ var/M = G.affecting
+ if (M.client)
+ M.client.perspective = EYE_PERSPECTIVE
+ M.client.eye = src
+ M.loc = src
+ src.occupant = M
+ src.icon_state = "restruct_1"
+ for(var/obj/O as obj in src)
+ O.loc = src.loc
+ //Foreach goto(154)
+ src.add_fingerprint(user)
+ G = null
+ del(G)
+ return
+
+/obj/machinery/restruct/proc/go_out()
+
+ if ((!( src.occupant ) || src.locked))
+ return
+ for(var/obj/O as obj in src)
+ O.loc = src.loc
+ //Foreach goto(30)
+ if (src.occupant.client)
+ src.eye = src.occupant.client.mob
+ src.occupant.client.perspective = MOB_PERSPECTIVE
+ src.occupant.loc = src.loc
+ src.occupant = null
+ src.icon_state = "restruct_0"
+ return
+
+/obj/machinery/restruct/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ for(var/atom/movable/A as mob|obj in src)
+ A.loc = src.loc
+ ex_act(severity)
+ //Foreach goto(35)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/atom/movable/A as mob|obj in src)
+ A.loc = src.loc
+ ex_act(severity)
+ //Foreach goto(108)
+ src = null
+ del(src)
+ return
+ if(3.0)
+ if (prob(25))
+ for(var/atom/movable/A as mob|obj in src)
+ A.loc = src.loc
+ ex_act(severity)
+ //Foreach goto(181)
+ src = null
+ del(src)
+ return
+ else
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/doors.dmi b/ss13-40.93.2-decomp/spacestation13/doors.dmi
new file mode 100644
index 0000000..564fa29
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/doors.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/engine.dm b/ss13-40.93.2-decomp/spacestation13/engine.dm
new file mode 100644
index 0000000..42230aa
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/engine.dm
@@ -0,0 +1,241 @@
+
+/obj/machinery/computer/engine/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(58)
+ src.icon_state = "broken"
+ if(3.0)
+ if (prob(25))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(109)
+ src.icon_state = "broken"
+ else
+ return
+
+/obj/machinery/computer/engine/New()
+
+ if (!( engine_eject_control ))
+ engine_eject_control = new /datum/engine_eject( )
+ ..()
+ return
+
+/obj/machinery/computer/engine/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/computer/engine/attack_hand(user as mob)
+
+ user.machine = src
+ if (src.temp)
+ var/dat = text("[]
Clear Screen", src.temp, src)
+ else
+ if (engine_eject_control.status == 0)
+ dat = text("Engine Ejection Module
\nStatus: Docked
\n
\nCountdown: []/60 \[Reset\]
\n
\nEject Engine
\n
\nClose", engine_eject_control.timeleft, src, src, user)
+ else
+ if (engine_eject_control.status == 1)
+ dat = text("Engine Ejection Module
\nStatus: Ejecting
\n
\nCountdown: []/60 \[Reset\]
\n
\nStop Ejection
\n
\nClose", engine_eject_control.timeleft, src, user)
+ else
+ dat = text("Engine Ejection Module
\nStatus: Ejected
\n
\nCountdown: N/60 \[Reset\]
\n
\nEngine Ejected!
\n
\nClose", user)
+ user << browse(dat, "window=computer;size=400x500")
+ return
+
+/obj/machinery/computer/engine/process()
+
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(18)
+ return
+
+/obj/machinery/computer/engine/Topic(href, href_list)
+
+ if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey"))))
+ usr << "\red You don't have the dexterity to do this!"
+ return
+ if ((usr.stat || usr.restrained()))
+ return
+ if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf))))
+ usr.machine = src
+ if (href_list["eject"])
+ if (engine_eject_control.status == 0)
+ src.temp = text("Eject Engine?
Yes
No", src, src)
+ else
+ if (href_list["eject2"])
+ if (engine_eject_control.status == 0)
+ engine_eject_control.ejectstart()
+ src.temp = null
+ else
+ if (href_list["stop"])
+ if (engine_eject_control.status > 0)
+ src.temp = text("Stop Ejection?
Yes
No", src, src)
+ else
+ if (href_list["stop2"])
+ if (engine_eject_control.status > 0)
+ stopcount()
+ src.temp = null
+ else
+ if (href_list["reset"])
+ if (engine_eject_control.status == 0)
+ resetcount()
+ else
+ if (href_list["temp"])
+ src.temp = null
+ src.add_fingerprint(usr)
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(351)
+ return
+
+/turf/station/engine/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/turf/station/engine/attack_hand(user as mob)
+
+ if ((!( user.canmove ) || (restrained() || !( user.pulling ))))
+ return
+ if (user.pulling.anchored)
+ return
+ if ((user.pulling.loc != user.loc && get_dist(user, user.pulling) > 1))
+ return
+ if (ismob(user.pulling))
+ var/M = user.pulling
+ var/t = M.pulling
+ M.pulling = null
+ step(user.pulling, get_dir(user.pulling.loc, src))
+ M.pulling = t
+ else
+ step(M.pulling, get_dir(user.pulling.loc, src))
+ return
+
+/turf/station/engine/floor/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ src = null
+ del(src)
+ return
+ else
+ return
+
+/datum/engine_eject/proc/ejectstart()
+
+ if (!( src.status ))
+ if (src.timeleft <= 0)
+ src.timeleft = 60
+ world << "\red Alert: Ejection Sequence for Engine Module has been engaged."
+ world << text("\red Ejection Time in T-[] seconds!", src.timeleft)
+ src.resetting = 0
+ var/engine = locate(/area/engine)
+ engine.icon = 'alert.dmi'
+ if (!( engine.icon_state ))
+ engine.icon_state = "red"
+ else
+ engine.icon_state = "blue-red"
+ src.status = 1
+ for(var/obj/machinery/computer/engine/E as obj in world)
+ E.icon_state = "engaging"
+ //Foreach goto(113)
+ spawn( 0 )
+ src.countdown()
+ return
+ return
+
+/datum/engine_eject/proc/resetcount()
+
+ if (!( src.status ))
+ src.resetting = 1
+ sleep(50)
+ if (src.resetting)
+ src.timeleft = 60
+ world << "\red Alert: Ejection Sequence Countdown for Engine Module has been reset."
+ return
+
+/datum/engine_eject/proc/countdone()
+
+ src.status = -1.0
+ var/engine = locate(/area/engine)
+ engine.icon = 'alert.dmi'
+ engine.icon_state = null
+ var/A = locate(/area/engine)
+ for(var/T as turf in A)
+ var/S = new T.type( locate(T.x, T.y, 8) )
+ for(var/atom/movable/AM as mob|obj in T)
+ AM.loc = S
+ S.oxygen = T.oxygen
+ S.oldoxy = T.oldoxy
+ S.tmpoxy = T.tmpoxy
+ S.poison = T.poison
+ S.oldpoison = T.oldpoison
+ S.tmppoison = T.tmppoison
+ S.co2 = T.co2
+ S.oldco2 = T.oldco2
+ S.tmpco2 = T.tmpco2
+ S.sl_gas = T.sl_gas
+ S.osl_gas = T.osl_gas
+ S.tsl_gas = T.tsl_gas
+ S.n2 = T.n2
+ S.on2 = T.on2
+ S.tn2 = T.tn2
+ //Foreach goto(100)
+ A.contents += S
+ var/P = new T.type( locate(T.x, T.y, T.z) )
+ var/D = locate(/area/dummy)
+ D.contents += P
+ T = null
+ del(T)
+ //Foreach goto(60)
+ world << "\red Engine Ejected!"
+ for(var/obj/machinery/computer/engine/E as obj in world)
+ E.icon_state = "engaged"
+ //Foreach goto(392)
+ return
+
+/datum/engine_eject/proc/stopcount()
+
+ if (src.status > 0)
+ src.status = 0
+ world << "\red Alert: Ejection Sequence for Engine Module has been disengaged!"
+ var/engine = locate(/area/engine)
+ engine.icon = 'alert.dmi'
+ if (engine.icon_state == "blue-red")
+ engine.icon_state = "blue"
+ else
+ engine.icon_state = null
+ for(var/obj/machinery/computer/engine/E as obj in world)
+ E.icon_state = null
+ //Foreach goto(84)
+ return
+
+/datum/engine_eject/proc/countdown()
+
+ if (src.timeleft <= 0)
+ spawn( 0 )
+ countdone()
+ return
+ return
+ if (src.status > 0)
+ src.timeleft--
+ if ((src.timeleft <= 15 || src.timeleft == 30))
+ world << text("\red [] seconds until engine ejection.", src.timeleft)
+ spawn( 10 )
+ src.countdown()
+ return
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/engine.dmi b/ss13-40.93.2-decomp/spacestation13/engine.dmi
new file mode 100644
index 0000000..06ea1b3
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/engine.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/enginecomputer.dmi b/ss13-40.93.2-decomp/spacestation13/enginecomputer.dmi
new file mode 100644
index 0000000..1a31384
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/enginecomputer.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/escapepod.dmi b/ss13-40.93.2-decomp/spacestation13/escapepod.dmi
new file mode 100644
index 0000000..59eeb93
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/escapepod.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/ghost.dmi b/ss13-40.93.2-decomp/spacestation13/ghost.dmi
new file mode 100644
index 0000000..e9e5ae8
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/ghost.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/help.htm b/ss13-40.93.2-decomp/spacestation13/help.htm
new file mode 100644
index 0000000..781f978
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/help.htm
@@ -0,0 +1,121 @@
+Space Station 13
+By: Exadv1
+
+Overview
+ Space Station 13 was written on BYOND. Like a majority of BYOND games it is two dimensional with a top-down view. It uses tile-based movement. Space Station 13 (or SS13 for short) starts you on a space station orbitting a very peculiar gaseous planet in a binary star system. Threoughout a round many disasters will probably occur from meteor attacks to internal disasters such as a traitor. The game is constantly being developed so eventually more disasters will occur such as pathogens, re-entry, and raiders.
+
+Objectives
+ The primary objective in most modes of Space Station 13 is survival. You must stay alive long enough to escape. Now when you first start the game you shouldn't immediately try to escape! You should try and prevent disaster for as long as you can. Eventually you will be able to perform various experiments on-board SS13 between disasters (medical experiments, atmospheric experiments, and plasma experiments). Also depending on the mode there may be more objectives.
+
+Modes
+Traitor - In traitor mode there is a traitor aboard the space station. The objective of the traitor is to be the last person aboard the shuttle when it departs destroying anything or anyone in your way. The objective of everyone else to survive and attempt to pinpoint who the traitor is and stop them.
+
+Meteor - In meteor mode the objective is to escape and see how long you can ride out the meteor storm. This is very challenging and you are given no precious time to prepare for disaster.
+Monkey - In monkey a mode a extremely mutagenous retrovirus has infected the ship. The goal as a human is to escape on the shuttle to warn the rest of the world. The monkies must infect the rest of the crew and stop them. Future modes will allow the humans to examine exactly what the virus is and apply that knowledge.
+
+Secret - This mode chooses randomly between all the modes (or just nothing). This is the default mode and generally produces the best gameplay.
+
+Proposed Modes
+Space Raiders- A group of combatants are trying to raid the station and gather a list of items to escape to their station with.
+Alien- A parasitic organism has infected a crew member. The crew must stay uninfected while the infected people must try and infect the others.
+Orbital Failure- The engine/reactor system is failng and you must regain a safe orbit or plummet into the gaseous planet.
+...
+
+Getting around
+The interface for Space Station 13 is largely click driven. When I refer to attacking I am referring to double clicking.
+Getting Started (A Quick jump-start guide to get into the game)
+You must select your preferences then go over the begin object and get ready. (use ready verb)
+If you want to you can go to SS13 by using enter.
+If you don't and the game hasn't started yet you'll still be automatically teleported.
+Movement
+Movement on SS13 is only in the 4 cardinal directions. The diagonal directions throw/drop items, switch hand/modes. If you move into a dense object you first try to push it. Not all items can be pushed. You can also right click on an object and select 'pull' and then every movement you make will ttempt to drag that object behind you. If you wish to stop pulling you must go onto your on-screen display and find the object with a person in a box. Click on it and you will stop pulling. If you ever desire to make sure of which direction you are facing use .center and then try to move what direction you want to face.
+'Equipping'
+You 'equip' items in SS13 by picking them up. In order to pick an item up all you must do is attack it with a free hand. Now you hae two hands. Which hand is being used is indicated by the blue button in the lower-left area of your HUD. You can change hands by clicking the hand button or pressing the .northeast macro. You can then also then transfer that item to another part of your body. In order to do this you just attack the green box (or blue storage box) on your hud that you would like to move it to. In order to 'unequip' a equipped item that is not in your hand. Get a free hand and attack the item. Then in order to drop an item in your hand (and make it a free hand again) click the drop button (or throw to throw the item wherever you are facing).
+Talking
+ Talking on SS13 is still via the say verb so the normal say speech bubble on the command line will still work. Please note however that you can whisper. More on this in the items selection under radio, intercoms, and headsets. There are a lot of emotes that are accessed by preceding your text with a '*'. To view a list of available emotes for your character use the type '*help' into the say menu.
+Taking Items/Giving Items
+ You can take items from people by dragging their mob onto your mob. A screen will pop up. From this screen you can select an object to remove from them. If you select a 'Nothing' slot then you will attempt to equip that slot with the object you are holding.
+Death
+ If you are dead then you can use the watch verb to look through the eyes of another mob. Depending on circumstances you can use abandon mob to restart (leaving that box blank gives you a random name). A dead person hears everything that is said but might not hear all attack message dialog.
+
+The Items
+If it has a [stackable-x]. This means that if you attack another item of its type with it then you will gather more items on its stack until you hit x items. you can usually see how much is on the stack by right clicking and selecting examine.
+
+Analyzer - Attacking this item with itself (having it equipped then using .southeast, mode, or double clicking it) shows the oxygen, carbon dioxide, and plasma content of the tile you are standing on.
+
+Bottle - This item stores chemicals (60 cubic centimeters). You must use a syringe to draw chemicals from it. You can however pour bottles into bottles by attacking a bottle with another bottle.
+
+Brute Pack [stackable-5] - This item can be used to treat damage done by brute force weapons or piercing weapons. A mix of biodegradable experimental nanites cures most damage almost instantly amone contact.
+
+Card (identification) - Every crew member besides are issued this card. At game start they are given this card and a position (random) aboard Space Station 13. Late joiners get the hyper boring job of Researcher's Assisstant and must have their card filled by the captain at an identification computer. You can wear this card so that every door you walk through will open and close. (on security doors (has the black tab) you automatically try to use your card). You can also equip it and attack a door and it will stay open or stay closed. Also if you are wearing a card that is not yours then your name will be whoever the card is registered to. This however can be considered a crime and grounds for being arrested and punished.
+
+Clothing - This has its own section at the bottom. This includes masks and suits.
+
+Fire Extinguisher - This when you have equipped you can then attack anything besides a person (which can knock them unconscious) will release an anti-fire chemical which eventually helps greatly in stopping a fire. Yuo can refill this by attacking a water-tank and it will refill its 20 units. Right click on it and select examine to see how many units are left.
+Flasks - These contain a large mixture of chemicals (liquid) that are used for cryogenic healing. More on this later.
+
+Handcuffs - These are used for general detainment. It takes 3 uninterrupted (no movement AT ALL) seconds in order to place them on a person. These prevent the person from dong anything with their hands and allow you to remove things from them without resistance (they normally would need to be unconscious). you can rmeove handcuffs by either removing them via the right click option or by double clicking them with a free hand.
+
+Health analyzer - This when you attack a target will give you the overall health and type of damage the target has occurred. note that this only gives physical health and not (role-played) mental health.
+
+Ointment [stackable-5] - This like bruise packs allow you to heal your and other people's damage due to fire (or a welder that is on).
+
+Paper - Double clicking on this will give you its text which can sometimes be very helpful. Various things not in this document are detailed on the papers such as job positions, chemical information, and an old map.
+
+Parts - Table and rack parts. I'm not going to explaion these seperate so just attack themselves and you will construct a rack or get the box for a table. Using a wrench on these I believe converts them to its original metal.
+
+Radios/Headset/Intercom - These are the general method for communication aboard SS13. In order to best use a radio you must either attack itself (this means for headsets you must take them OFF your head first) or if its an intercom attack it with a free hand. This will bring up its control box where you can select a frequency to transmit/receive on (It's very simple - You receive and transmit messages only if you are on that frequency). You can also select whether to hear messages (speaker). Having this off still let's you broadcast but you won't hear yourself broadcast or any responses from others. You can also select having it automatically boradcast. This is most important for intercoms. This means that whenever it hears something via say or a whisper it will send it broadcast it. If you have it off you can still use it prefixing your say with [h] (for head), [l] (for left hand), or [r] (for right hand). This also will whisper what you are saying to those in the tiles adjacent to you.
+
+Rods [stackable-6] - These are like the parts and when you attack them with themselves they will either construct a grille (need 2) or repair a grille (only 1). Unlike the parts these can be used as an OK weapon.
+
+Screwdriver - This item is able to help fasten and unfasten items. It can fasten canisters to connecters, tables to floors, and grilles to floors. It can also unfasten them as well. You can attack with this weapon but there is no chance of knocknig them unconscious. (besides making them bleed to death)
+
+Shards - This glass item can be converted into glass by using a welding tool. Until then it is an unstackable weapon. They can cause a little piercing damage.
+
+Sheets [stackable-5] - These are like rods except that the glass sheets build windows and the metal sheets build MANY things. All you must do is attack self.
+
+Storage Containers (first aid kits and toolboxes) - These allow you to store items into them to allow easier transportation of a lot of items. You cannot store storage containers in storage containers no matter what the sizes are. Also certsin things can't go in ccertain containers because of their size. Most containers hold 7 items. You can open a container in 2 ways. Drag it onto yourself or equip it in one hand then attack it with a free hand. You can then remove items by attackng them with a free hand. Then when you've removed the item close the container by double clicking on the big red close X. You place items in the container by attacking it. They automatically go in unless they don't fit.
+
+Syringe - This object is capable of injecting chemicals into a targets bloodstream. It can also be used for precise mixing of bottles wherejust pouring is too inaccurate. It injects and draws in increments of 5 cubic centimeters. Attack it with itself to change the mode from inject to draw and vice versa. See the chemical information paper for information on the chemicals.
+
+Tanks - These plain and simple hold gases. The 2 types of tanks come prestocked with either oxygen or plasma. you can attach these to a siphon or canister for refillng by attacking it. This is one of the few items that CAN be worn on your back. Also if you have a gas mask on you can attack the tank with itself in order to switch your internals on. This puts you on an external atmosphere and lets you traverse highly toxic or low oxygen environments without fear of being injured. They also make a great item for attacking. It is a good idea to turn on internals then put them on your back so they are out of your way though. See the canisters sections for more information on refilling.
+
+Tile [stackable-10]- These are like the rods except that they build or repair floor tiles. (only one tile regardless)
+
+Welding Tool (or Welder) - This has two modes swapped by attacking itself. When its off its like a wrench except it won't deconstruct. When its on it will cause piercing fire damage. It also can slice canisters open releasing their contents. It also can be used to weld open the plating on a wall, cut grilles, form chards into sheets, and many other things. Be warned that using this in a high plasma environment may ignite the highly flammable plasma! Most actions with this use up fuel which can be refilled by attacking a welding fuel tank and cghecked by using the examine verb.
+
+Wirecutters - These can be used to cut wires on electronic devices. They can also easily cut grilles open
+
+Wrench - This item performs a variety of functions that largely deal with deconstruction. Attacking a chair, stool, table, rack, or wall girders will deconstruct them into eith metal sheets, table parts, or rack parts. It's also not too bad as an item to club an assailant over the head. (You can knock them unconscious) Since they disassemble tables and racks in order to place them on the table drag them over to the table.
+
+Clothing
+ Masks- There are currently two types of masks. Masks can be put on by either attackng yourself with it, attacking your mask hud button, or if the other person is submissive (unconscious/handcuffed) attacking the other person to place it on them.
+Gas mask- This filters out most plasma from the environment and allows for running on internals
+Muzzle - This is a negative item and prevents all speech including gasping generally leaving only nod. you can take this off yourself provided your hands aren't handcuffed.
+
+ Suits These work like masks except you must use the external clothing HUD.
+Fire suit - This prevents damage from the flames of fire. (Not welding tool attacks though as well as the oxygen deprivation from fire) also note there is a limit which once surpassed the suit can't disperse the heat causing you o take damage.
+
+Canisters/Siphons/Scrubbers
+ If you attack these with a free hand you'll bring up the control box. The only part that really deserves observance is the first set of buttons. The lower valve is not in yet. The release button releases x amount of units into the connected tank or if no tank to the environment. The amount of units is determined by the valve. You can alter this amount from 0 to 1000 by using the + + + and - - - buttons which go alter by adding or subtracting 1, 5, or 50 units. The next button - siphon - either siphons gas from the environment or an attached tank. Canisters are unable to siphon from the environment! The next button stop stops all siphoning or releasing. Siphons/scrubbers also contain an option canisters do not - automatic. This makes the sensors on board the unit to try and equalize the atmospheric environment of the tile it is on every second. The vents start with this as its option. Please note that the presence of a tank makes no difference as this part is on a seperate air track and it will still release into the environment. Once your done click the close button to stop the box from popping up.
+Scrubbers/air filters - These are like the normak siphons except that before its air cycle it releases all the oxygen it has stored. The automatic mode also instead of equalizingthe oxygen level removes carbon dioxide and plasma.
+
+Chairs
+ Chairs have a special feature - buckling. You can buckle someone (including yourself)into a chair by dragging them onto the chair object. The person must already be on the same tile as the chair however. You can unbuckle them/yourself from a chair by attacking the chair with a free hand. (Note: Handcuffed people can't unbuckle from chairs.)
+
+Miscellaneous Object Descriptions
+
+Alarm - This object is able to detect whether the area arod it has an appropriate co2 and o2 content to stay alive. Basically green is good and red is bad.
+
+Cryogenic Healing Units - There is a tutorial for this on the main SS13 website so I won't detail it here. Please note you can't revive already dead people.
+
+Firealarm - This is able to lock down an area instantly. When a fire gets near it it will trigger the lockdown to prevent contamination. You must use the reset button on this in order to clear the alarm and unlock the firedoors. You can also initiate a timer lock if you want time to escape.
+
+Grilles - These do a great job of blocking a lot of thngs. They stop most meteors in their tracks and are hard to destroy with normal weapons. (although it IS possible.)
+
+
+Miscellaneous Notes (a.k.a. archived world messages)
+
+Job selection is in thanks to Spuzzum! A captain is still randomly assigned if no one picks captain as their choice. Also please note that if you pick something as your primary and someone else picks it as their secondary (or tertiary) then they will always lose. This is essence is fairer. Also you can pick your beginning gender and name. I hope you enjoy it! Also I've extended time till start from one minute to one and a half minutes.
+
+
\ No newline at end of file
diff --git a/ss13-40.93.2-decomp/spacestation13/hexadecimal.dm b/ss13-40.93.2-decomp/spacestation13/hexadecimal.dm
new file mode 100644
index 0000000..dd9353b
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/hexadecimal.dm
@@ -0,0 +1,78 @@
+
+/proc/hex2num(hex)
+
+ if (!( istext(hex) ))
+ CRASH("hex2num not given a hexadecimal string argument (user error)")
+ return
+ var/num = 0
+ var/power = 0
+ var/i = null
+ i = length(hex)
+ while(i > 0)
+ var/char = copytext(hex, i, i + 1)
+ switch(char)
+ if("0")
+ power++
+ goto Label_290
+ if("9", "8", "7", "6", "5", "4", "3", "2", "1")
+ num += text2num(char) * (16 ** power)
+ if("a", "A")
+ num += (16 ** power) * 10
+ if("b", "B")
+ num += (16 ** power) * 11
+ if("c", "C")
+ num += (16 ** power) * 12
+ if("d", "D")
+ num += (16 ** power) * 13
+ if("e", "E")
+ num += (16 ** power) * 14
+ if("f", "F")
+ num += (16 ** power) * 15
+ else
+ CRASH("hex2num given non-hexadecimal string (user error)")
+ return
+ power++
+ Label_290:
+ i--
+ return num
+ return
+
+/proc/num2hex(num, placeholder)
+
+ if (placeholder == null)
+ placeholder = 2
+ if (!( isnum(num) ))
+ CRASH("num2hex not given a numeric argument (user error)")
+ return
+ if (!( num ))
+ return "0"
+ var/hex = ""
+ var/i = 0
+ while((16 ** i) < num)
+ i++
+ var/power = null
+ power = i - 1
+ while(power >= 0)
+ var/val = round(num / (16 ** power))
+ num -= val * (16 ** power)
+ switch(val)
+ if(9.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0, 0.0)
+ hex += text("[]", val)
+ if(10.0)
+ hex += "A"
+ if(11.0)
+ hex += "B"
+ if(12.0)
+ hex += "C"
+ if(13.0)
+ hex += "D"
+ if(14.0)
+ hex += "E"
+ if(15.0)
+ hex += "F"
+ else
+ power--
+ while(length(hex) < placeholder)
+ hex = text("0[]", hex)
+ return hex
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/hi_pipe.dmi b/ss13-40.93.2-decomp/spacestation13/hi_pipe.dmi
new file mode 100644
index 0000000..77fb29e
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/hi_pipe.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/human.dmi b/ss13-40.93.2-decomp/spacestation13/human.dmi
new file mode 100644
index 0000000..1c03266
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/human.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/instructions.dm b/ss13-40.93.2-decomp/spacestation13/instructions.dm
new file mode 100644
index 0000000..3ad69bc
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/instructions.dm
@@ -0,0 +1,333 @@
+
+/obj/machinery/computer/hologram_comp/New()
+
+ ..()
+ spawn( 10 )
+ src.projector = locate(/obj/machinery/hologram_proj, get_step(src.loc, NORTH))
+ return
+ return
+
+/obj/machinery/computer/hologram_comp/DblClick()
+
+ if (get_dist(src, usr) > 1)
+ return 0
+ src.show_console(usr)
+ return
+
+/obj/machinery/computer/hologram_comp/proc/render()
+
+ var/icon/I = new /icon( 'human.dmi', "male" )
+ if (src.lumens >= 0)
+ I.Blend(rgb(src.lumens, src.lumens, src.lumens), 0)
+ else
+ I.Blend(rgb( -I.lumens, -I.lumens, -I.lumens), 1)
+ I.Blend(new /icon( 'human.dmi', "mouth" ), 3)
+ var/icon/U = new /icon( 'human.dmi', "diaper" )
+ Blend(U, 3)
+ U = new /icon( 'mob.dmi', "hair_a" )
+ U.Blend(rgb(src.h_r, src.h_g, src.h_b), 0)
+ I.Blend(U, 3)
+ src.projector.projection.icon = I
+ return
+
+/obj/machinery/computer/hologram_comp/proc/show_console(user as mob)
+
+ user.machine = src
+ if (src.temp)
+ var/dat = text("[]
Clear", src.temp, src)
+ else
+ dat = text("Hologram Status:
\nPower: []
\nHologram Control:
\nColor Luminosity: []/220 \[Reset\]
\nLighten: 1 10
\nDarken: 1 10
\n
\nHair Color: ([],[],[]) \[Reset\]
\nRed (0-255): \[0\] -10 -1 [] 1 10 \[255\]
\nGreen (0-255): \[0\] -10 -1 [] 1 10 \[255\]
\nBlue (0-255): \[0\] -10 -1 [] 1 10 \[255\]
", src, (src.projector.projection ? "On" : "Off"), -src.lumens + 35, src, src, src, src, src, src.h_r, src.h_g, src.h_b, src, src, src, src, src.h_r, src, src, src, src, src, src, src.h_g, src, src, src, src, src, src, src.h_b, src, src, src)
+ user << browse(dat, "window=hologram_console")
+ return
+
+/obj/machinery/computer/hologram_comp/Topic(href, href_list)
+
+ if (get_dist(src, usr) <= 1)
+ flick("holo_console1", src)
+ if (href_list["power"])
+ if (src.projector.projection)
+ src.icon_state = "hologram0"
+ src.projection = null
+ del(src.projector.projection)
+ else
+ src.projection = new /obj/projection( src.loc )
+ src.projector.projection.icon = 'human.dmi'
+ src.projector.projection.icon_state = "male"
+ src.projector.icon_state = "hologram1"
+ src.render()
+ else
+ if (href_list["h_r"])
+ if (src.projector.projection)
+ src.h_r += text2num(href_list["h_r"])
+ src.h_r = min(max(src.h_r, 0), 255)
+ render()
+ else
+ if (href_list["h_g"])
+ if (src.projector.projection)
+ src.h_g += text2num(href_list["h_g"])
+ src.h_g = min(max(src.h_g, 0), 255)
+ render()
+ else
+ if (href_list["h_b"])
+ if (src.projector.projection)
+ src.h_b += text2num(href_list["h_b"])
+ src.h_b = min(max(src.h_b, 0), 255)
+ render()
+ else
+ if (href_list["light"])
+ if (src.projector.projection)
+ src.lumens += text2num(href_list["light"])
+ src.lumens = min(max(src.lumens, -185.0), 35)
+ render()
+ else
+ if (href_list["reset"])
+ if (src.projector.projection)
+ src.lumens = 0
+ render()
+ else
+ if (href_list["temp"])
+ src.temp = null
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.show_console(M)
+ //Foreach goto(446)
+ return
+
+/obj/begin/verb/ready()
+ set src in usr.loc
+
+ if ((!( istype(usr, /mob/human) ) || usr.start))
+ usr << "You have already started!"
+ return
+ var/M = usr
+ src.get_dna_ready(M)
+ if ((!( M.w_uniform ) && !( ticker )))
+ if (M.gender == "female")
+ M.w_uniform = new /obj/item/weapon/clothing/under/pink( M )
+ else
+ M.w_uniform = new /obj/item/weapon/clothing/under/blue( M )
+ M.w_uniform.layer = 20
+ M.shoes = new /obj/item/weapon/clothing/shoes/brown( M )
+ M.shoes.layer = 20
+ else
+ M << "You will have to find clothes from the station."
+ if ((ticker && !( M.l_hand )))
+ var/obj/item/weapon/card/id/I = new /obj/item/weapon/card/id( M )
+ var/list/L = list( "Technical Assistant", "Research Assistant", "Staff Assistant", "Medical Assistant" )
+ if (L.Find(M.occupation1))
+ var/choose = M.occupation1
+ else
+ choose = pick(L)
+ switch(choose)
+ if("Research Assistant")
+ I.assignment = "Research Assistant"
+ I.registered = M.rname
+ I.access_level = 0
+ I.lab_access = 0
+ I.engine_access = 0
+ I.air_access = 0
+ if("Technical Assistant")
+ I.assignment = "Technical Assistant"
+ I.registered = M.rname
+ I.access_level = 0
+ I.lab_access = 0
+ I.engine_access = 0
+ I.air_access = 0
+ if("Medical Assistant")
+ I.assignment = "Medical Assistant"
+ I.registered = M.rname
+ I.access_level = 0
+ I.lab_access = 0
+ I.engine_access = 0
+ I.air_access = 0
+ if("Staff Assistant")
+ I.assignment = "Staff Assistant"
+ I.registered = M.rname
+ I.access_level = 0
+ I.lab_access = 0
+ I.engine_access = 0
+ I.air_access = 0
+ else
+ I.name = text("[]'s ID Card ([]>[]-[]-[])", I.registered, I.access_level, I.lab_access, I.engine_access, I.air_access)
+ I.layer = 20
+ M.l_hand = I
+ M.start = 1
+ M.update_face()
+ M.update_body()
+ return
+
+/obj/begin/verb/enter()
+ set src in usr.loc
+
+ if (!( enter_allowed ))
+ usr << "\blue There is an administrative lock on entering the game!"
+ return
+ if ((!( usr.start ) || !( istype(usr, /mob/human) )))
+ usr << "\blue You aren't ready! Use the ready verb on this pad to set up your character!"
+ return
+ if (ctf)
+ var/rogue = locate("landmark*CTF-rogue")
+ usr.loc = rogue.loc
+ usr << "It's CTF mode. You are a late joiner so you are a Rogue!"
+ usr << "\blue Now teleporting."
+ if (ticker)
+ var/H = usr
+ if (istype(H, /mob/human))
+ reg_dna[text("[]", H.primary.uni_identity)] = H.rname
+ return
+ var/M = usr
+ var/list/start_loc = list( )
+ if ((M.key in list( "Thief jack", "Link43130", "Hutchy2k1", "Easty", "Exadv1" )))
+ start_loc["Supply Station"] = locate(77, 40, 10)
+ var/A = locate(/area/sleep_area)
+ var/list/L = list( )
+ for(var/T as turf in A)
+ L += T
+ //Foreach goto(239)
+ start_loc["SS13"] = pick(L)
+ if (locate(text("spstart[]", M.ckey)))
+ for(var/obj/sp_start/S as obj in world)
+ if (S.tag == text("spstart[]", M.ckey))
+ start_loc[text("[]", S.desc)] = S
+ //Foreach goto(295)
+ var/option = input(M, "Where should you start?", "Start Selector", null) in start_loc
+ if ((!( usr.start ) || (!( istype(usr, /mob/human) ) || usr.loc != src.loc)))
+ return
+ if (ticker)
+ reg_dna[text("[]", M.primary.uni_identity)] = M.rname
+ var/S = start_loc[option]
+ if (istype(S, /obj/sp_start))
+ M << "\blue Now teleporting to special location."
+ if (S.special == 2)
+ for(var/obj/O as obj in M)
+ O = null
+ del(O)
+ //Foreach goto(492)
+ M.loc = S.loc
+ else
+ if (M.special == 3)
+ for(var/obj/O as obj in M)
+ O = null
+ del(O)
+ //Foreach goto(560)
+ var/mob/monkey/O = new /mob/monkey( S.loc )
+ M.client.mob = O
+ O.loc = S.loc
+ M = null
+ del(M)
+ else
+ M.loc = O.loc
+ else
+ if (isturf(S))
+ M << "\blue Now teleporting."
+ M.loc = S
+ return
+
+/obj/begin/proc/get_dna_ready(user as mob)
+
+ var/M = user
+ if (!( M.primary ))
+ M.r_hair = M.nr_hair
+ M.b_hair = M.nb_hair
+ M.g_hair = M.ng_hair
+ M.s_tone = M.ns_tone
+ var/t1 = rand(1000, 1500)
+ dna_ident += t1
+ if (dna_ident > 65536.0)
+ dna_ident = rand(1, 1500)
+ M.primary = new /obj/dna( null )
+ M.primary.uni_identity = text("[]", add_zero(num2hex(dna_ident), 4))
+ var/t2 = add_zero(num2hex(M.nr_hair), 2)
+ M.uni_identity = text("[][]", M.primary.uni_identity, t2)
+ t2 = add_zero(num2hex(M.ng_hair), 2)
+ M.uni_identity = text("[][]", M.primary.uni_identity, t2)
+ t2 = add_zero(num2hex(M.nb_hair), 2)
+ M.uni_identity = text("[][]", M.primary.uni_identity, t2)
+ t2 = add_zero(num2hex(M.r_eyes), 2)
+ M.uni_identity = text("[][]", M.primary.uni_identity, t2)
+ t2 = add_zero(num2hex(M.g_eyes), 2)
+ M.uni_identity = text("[][]", M.primary.uni_identity, t2)
+ t2 = add_zero(num2hex(M.b_eyes), 2)
+ M.uni_identity = text("[][]", M.primary.uni_identity, t2)
+ t2 = add_zero(num2hex( -M.ns_tone + 35), 2)
+ M.uni_identity = text("[][]", M.primary.uni_identity, t2)
+ t2 = (M.gender == "male" ? text("[]", num2hex(rand(1, 124))) : text("[]", num2hex(rand(127, 250))))
+ if (length(t2) < 2)
+ M.uni_identity = text("[]0[]", M.primary.uni_identity, t2)
+ else
+ M.uni_identity = text("[][]", M.primary.uni_identity, t2)
+ M.primary.spec_identity = "5BDFE293BA5500F9FFFD500AAFFE"
+ M.primary.struc_enzyme = "CDE375C9A6C25A7DBDA50EC05AC6CEB63"
+ if (rand(1, 3125) == 13)
+ M.need_gl = 1
+ M.be_epil = 1
+ M.be_cough = 1
+ M.be_tur = 1
+ M.be_stut = 1
+ if (M.need_gl)
+ var/b_vis = add_zero(text("[]", num2hex(rand(10, 1400))), 3)
+ M.disabilities = M.disabilities | 1
+ M << "\blue You need glasses!"
+ else
+ b_vis = "5A7"
+ if (M.be_epil)
+ var/epil = add_zero(text("[]", num2hex(rand(10, 1400))), 3)
+ M.disabilities = M.disabilities | 2
+ M << "\blue You are epileptic!"
+ else
+ epil = "6CE"
+ if (M.be_cough)
+ var/cough = add_zero(text("[]", num2hex(rand(10, 1400))), 3)
+ M.disabilities = M.disabilities | 4
+ M << "\blue You have a chronic coughing syndrome!"
+ else
+ cough = "EC0"
+ if (M.be_tur)
+ epil = add_zero(text("[]", num2hex(rand(10, 1400))), 3)
+ M.disabilities = M.disabilities | 8
+ M << "\blue You have Tourette syndrome!"
+ else
+ var/Tourette = "5AC"
+ if (M.be_stut)
+ var/stutter = add_zero(text("[]", num2hex(rand(10, 1400))), 3)
+ M.disabilities = M.disabilities | 16
+ M << "\blue You have a stuttering problem!"
+ else
+ stutter = "A50"
+ M.primary.struc_enzyme = text("CDE375C9A6C2[]DBD[][][][]B63", b_vis, stutter, cough, Tourette, epil)
+ M.primary.use_enzyme = "493DB249EB6D13236100A37000800AB71"
+ M.primary.n_chromo = 28
+ return
+
+/turf/station/command/floor/updatecell()
+
+ src.oxygen = 756000.0
+ src.firelevel = 0
+ src.co2 = 0
+ src.poison = 0
+ src.sl_gas = 0
+ src.n2 = 0
+ return
+
+/turf/station/command/floor/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/turf/station/command/floor/attack_hand(user as mob)
+
+ if ((!( user.canmove ) || (restrained() || !( user.pulling ))))
+ return
+ if (user.pulling.anchored)
+ return
+ if ((user.pulling.loc != user.loc && get_dist(user, user.pulling) > 1))
+ return
+ if (ismob(user.pulling))
+ var/M = user.pulling
+ var/t = M.pulling
+ M.pulling = null
+ step(user.pulling, get_dir(user.pulling.loc, src))
+ M.pulling = t
+ else
+ step(M.pulling, get_dir(user.pulling.loc, src))
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/inverthtml.dm b/ss13-40.93.2-decomp/spacestation13/inverthtml.dm
new file mode 100644
index 0000000..fd51487
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/inverthtml.dm
@@ -0,0 +1,27 @@
+
+/proc/invertHTML(HTMLstring)
+
+ if (!( istext(HTMLstring) ))
+ CRASH("Given non-text argument!")
+ return
+ else
+ if (length(HTMLstring) != 7)
+ CRASH("Given non-HTML argument!")
+ return
+ var/textr = copytext(HTMLstring, 2, 4)
+ var/textg = copytext(HTMLstring, 4, 6)
+ var/textb = copytext(HTMLstring, 6, 8)
+ var/r = hex2num(textr)
+ var/g = hex2num(textg)
+ var/b = hex2num(textb)
+ textr = num2hex(255 - r)
+ textg = num2hex(255 - g)
+ textb = num2hex(255 - b)
+ if (length(textr) < 2)
+ textr = text("0[]", textr)
+ if (length(textg) < 2)
+ textr = text("0[]", textg)
+ if (length(textb) < 2)
+ textr = text("0[]", textb)
+ return text("#[][][]", textr, textg, textb)
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/items.dm b/ss13-40.93.2-decomp/spacestation13/items.dm
new file mode 100644
index 0000000..5e62618
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/items.dm
@@ -0,0 +1,5419 @@
+
+/proc/text2dir(direction)
+
+ switch(uppertext(direction))
+ if("NORTH")
+ return 1
+ if("SOUTH")
+ return 2
+ if("EAST")
+ return 4
+ if("WEST")
+ return 8
+ if("NORTHEAST")
+ return 5
+ if("NORTHWEST")
+ return 9
+ if("SOUTHEAST")
+ return 6
+ if("SOUTHWEST")
+ return 10
+ else
+ return
+
+/proc/get_turf(T as turf)
+
+ while((!( istype(T, /turf) ) && T))
+ T = T.loc
+ return T
+ return
+
+/proc/dir2text(direction)
+
+ switch(direction)
+ if(1.0)
+ return "north"
+ if(2.0)
+ return "south"
+ if(4.0)
+ return "east"
+ if(8.0)
+ return "west"
+ if(5.0)
+ return "northeast"
+ if(6.0)
+ return "southeast"
+ if(9.0)
+ return "northwest"
+ if(10.0)
+ return "southwest"
+ else
+ return
+
+/obj/proc/hear_talk(M as mob, text)
+
+ return
+
+/obj/machinery/recharger/process()
+
+ if (src.charging)
+ if (src.charging.charges < 10)
+ src.charges++
+ src.icon_state = "recharger1"
+ else
+ src.icon_state = "recharger2"
+ else
+ src.icon_state = "recharger0"
+ return
+
+/obj/machinery/recharger/attack_paw(user as mob)
+
+ if ((ticker && ticker.mode == "monkey"))
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/recharger/attack_hand(user as mob)
+
+ src.add_fingerprint(user)
+ if (src.charging)
+ src.charging.update_icon()
+ src.charging.loc = src.loc
+ src.charging = null
+ return
+
+/obj/machinery/recharger/attackby(G as obj, user as mob)
+
+ if (src.charging)
+ return
+ if (istype(G, /obj/item/weapon/gun/energy))
+ user.drop_item()
+ G.loc = src
+ src.charging = G
+ return
+ return
+
+/obj/item/weapon/table_parts/attackby(W as obj, user as mob)
+
+ if (istype(W, /obj/item/weapon/wrench))
+ new /obj/item/weapon/sheet/metal( src.loc )
+ src = null
+ del(src)
+ return
+ return
+ return
+
+/obj/item/weapon/table_parts/attack_self(user as mob)
+
+ var/state = input(user, "What type of table?", "Assembling Table", null) in list( "sides", "corners", "alone" )
+ var/direct = SOUTH
+ if (state == "corners")
+ direct = input(user, "Direction?", "Assembling Table", null) in list( "northwest", "northeast", "southwest", "southeast" )
+ else
+ if (state == "sides")
+ direct = input(user, "Direction?", "Assembling Table", null) in list( "north", "east", "south", "west" )
+ var/obj/table/T = new /obj/table( user.loc )
+ T.icon_state = state
+ T.dir = text2dir(direct)
+ T.add_fingerprint(user)
+ src = null
+ del(src)
+ return
+ return
+
+/obj/item/weapon/rack_parts/attackby(W as obj, user as mob)
+
+ if (istype(W, /obj/item/weapon/wrench))
+ new /obj/item/weapon/sheet/metal( src.loc )
+ src = null
+ del(src)
+ return
+ return
+ return
+
+/obj/item/weapon/rack_parts/attack_self(user as mob)
+
+ var/obj/rack/R = new /obj/rack( user.loc )
+ R.add_fingerprint(user)
+ src = null
+ del(src)
+ return
+ return
+
+/obj/item/weapon/paper_bin/proc/update()
+
+ src.icon_state = text("paper_bin[]", ((src.amount || locate(/obj/item/weapon/paper, src)) ? "1" : null))
+ return
+
+/obj/item/weapon/paper_bin/attackby(W as obj, user as mob)
+
+ if (istype(W, /obj/item/weapon/paper))
+ user.drop_item()
+ W.loc = src
+ else
+ if (istype(W, /obj/item/weapon/weldingtool))
+ var/T = W
+ if ((T.welding && T.weldfuel > 0))
+ viewers(user, null) << text("[] burns the paper with the welding tool!", user)
+ spawn( 0 )
+ src.burn(1800000.0)
+ return
+ else
+ if (istype(W, /obj/item/weapon/igniter))
+ viewers(user, null) << text("[] burns the paper with the igniter!", user)
+ spawn( 0 )
+ src.burn(1800000.0)
+ return
+ src.update()
+ return
+
+/obj/item/weapon/paper_bin/burn(fi_amount)
+
+ flick("paper_binb", src)
+ for(var/atom/movable/A as mob|obj in src)
+ A.burn(fi_amount)
+ //Foreach goto(23)
+ if (fi_amount >= 900000.0)
+ src.amount = 0
+ src.update()
+ return
+
+/obj/item/weapon/paper_bin/MouseDrop(user as mob)
+
+ if ((user == usr && (!( usr.restrained() ) && (!( usr.stat ) && (usr.contents.Find(src) || get_dist(src, usr) <= 1)))))
+ if (usr.hand)
+ if (!( usr.l_hand ))
+ spawn( 0 )
+ src.attack_hand(usr, 1, 1)
+ return
+ else
+ if (!( src.r_hand ))
+ spawn( 0 )
+ src.attack_hand(usr, 0, 1)
+ return
+ return
+
+/obj/item/weapon/paper_bin/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/item/weapon/paper_bin/attack_hand(user as mob, unused, flag)
+
+ if (flag)
+ return ..()
+ src.add_fingerprint(user)
+ if (locate(/obj/item/weapon/paper, src))
+ for(var/obj/item/weapon/paper/P as obj in src)
+ if ((usr.hand && !( usr.l_hand )))
+ usr.l_hand = P
+ P.loc = usr
+ P.layer = 20
+ P = null
+ usr.UpdateClothing()
+ else
+ if (!( usr.r_hand ))
+ usr.r_hand = P
+ P.loc = usr
+ P.layer = 20
+ P = null
+ usr.UpdateClothing()
+ else
+ //Foreach goto(48)
+ else
+ if (usr.amount >= 1)
+ usr.amount--
+ new /obj/item/weapon/paper( usr.loc )
+ src.update()
+ return
+
+/obj/item/weapon/paper_bin/examine()
+ set src in oview(1)
+
+ src.amount = round(src.amount)
+ var/n = src.amount
+ for(var/obj/item/weapon/paper/P as obj in src)
+ n++
+ //Foreach goto(33)
+ if (n <= 0)
+ n = 0
+ usr << "There are no papers in the bin."
+ else
+ if (n == 1)
+ usr << "There is one paper in the bin."
+ else
+ usr << text("There are [] papers in the bin.", n)
+ return
+
+/obj/item/weapon/dummy/ex_act()
+
+ return
+
+/obj/item/weapon/game_kit/New()
+
+ src.board_stat = "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
+ src.selected = "CR"
+ return
+
+/obj/item/weapon/game_kit/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/item/weapon/game_kit/MouseDrop(user as mob)
+
+ if ((user == usr && (!( usr.restrained() ) && (!( usr.stat ) && (usr.contents.Find(src) || get_dist(src, usr) <= 1)))))
+ if (usr.hand)
+ if (!( usr.l_hand ))
+ spawn( 0 )
+ src.attack_hand(usr, 1, 1)
+ return
+ else
+ if (!( src.r_hand ))
+ spawn( 0 )
+ src.attack_hand(usr, 0, 1)
+ return
+ return
+
+/obj/item/weapon/game_kit/proc/update()
+
+ if (!( src.internet ))
+ var/dat = text("Game Board
[] remove
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
", src)
+ dat += text("
[]", changes), "window=changes") + if (!( isturf(src.loc) )) + src.client.eye = src.loc + src.client.perspective = EYE_PERSPECTIVE + if (!( src.start )) + ShowChoices() + var/A = locate(/area/start) + var/list/L = list( ) + for(var/T as turf in A) + L += T + //Foreach goto(1251) + src.loc = pick(L) + return + +/mob/human/Bump(AM as mob|obj, yes) + + spawn( 0 ) + if ((!( yes ) || src.now_pushing)) + return + ..() + if (!( istype(AM, /atom/movable) )) + return + if (!( src.now_pushing )) + src.now_pushing = 1 + if (!( AM.anchored )) + var/t = get_dir(src, AM) + step(AM, t) + src.now_pushing = null + return + return + +/mob/human/death() + + src.healths.icon_state = "health5" + src.stat = 2 + src.canmove = 0 + src.blind.layer = 0 + src.lying = 1 + src.icon_state = "dead" + for(var/M as mob in world) + if ((M.client && !( M.stat ))) + var/cancel = 1 + //Foreach goto(67) + if (!( cancel )) + world << "Everyone is dead! Resetting in 30 seconds!" + if ((ticker && ticker.timing)) + ticker.check_win() + else + spawn( 300 ) + world.Reboot() + return + return ..() + return + +/mob/human/m_delay() + + var/tally = 0 + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/straight_jacket)) + tally += 15 + if (istype(src.shoes, /obj/item/weapon/clothing/shoes)) + if (src.shoes.chained) + tally += 15 + else + tally += -1.0 + return tally + return + +/mob/human/burn(fi_amount) + + var/ok = 0 + if (src.r_hand) + src.r_hand.burn(fi_amount) + if (src.l_hand) + src.l_hand.burn(fi_amount) + if (src.back) + src.back.burn(fi_amount) + if (src.belt) + src.belt.burn(fi_amount) + var/still_burning = 127 + if (src.wear_suit) + if (src.wear_suit.burn(fi_amount)) + still_burning &= ~src.fire_protect + if (still_burning & 46) + if (src.w_uniform) + if (src.w_uniform.burn(fi_amount)) + still_burning &= ~src.fire_protect + if (still_burning & 16) + if (src.gloves) + if (src.gloves.burn(fi_amount)) + still_burning &= ~src.fire_protect + if (still_burning & 64) + if (src.shoes) + if (src.shoes.burn(fi_amount)) + still_burning &= ~src.fire_protect + if (still_burning & 1) + if (src.head) + if (src.head.burn(fi_amount)) + still_burning &= ~src.fire_protect + if (still_burning & 1) + if (src.wear_mask) + if (src.wear_mask.burn(fi_amount)) + still_burning &= ~src.fire_protect + if (still_burning) + if ((src.fire && src.stat != 2)) + flick("fire1", src.fire) + if (still_burning & 1) + if (src.glasses) + src.glasses.burn(fi_amount) + if (src.ears) + src.ears.burn(fi_amount) + if (src.w_radio) + src.w_radio.burn(fi_amount) + var/temp = null + if (src.organs["head"]) + temp = src.organs["head"] + if (istype(temp, /obj/item/weapon/organ/external)) + ok += temp.take_damage(0, 5) + if (still_burning & 2) + if (src.wear_id) + src.wear_id.burn(fi_amount) + temp = null + if (src.organs["chest"]) + temp = src.organs["chest"] + if (istype(temp, /obj/item/weapon/organ/external)) + ok += temp.take_damage(0, 5) + if (still_burning & 4) + temp = null + if (src.organs["diaper"]) + temp = src.organs["diaper"] + if (istype(temp, /obj/item/weapon/organ/external)) + ok += temp.take_damage(0, 5) + if (still_burning & 8) + temp = null + if (src.organs["l_arm"]) + temp = src.organs["l_arm"] + if (istype(temp, /obj/item/weapon/organ/external)) + ok += temp.take_damage(0, 5) + temp = null + if (src.organs["r_arm"]) + temp = src.organs["r_arm"] + if (istype(temp, /obj/item/weapon/organ/external)) + ok += temp.take_damage(0, 5) + if (still_burning & 32) + temp = null + if (src.organs["l_leg"]) + temp = src.organs["l_leg"] + if (istype(temp, /obj/item/weapon/organ/external)) + ok += temp.take_damage(0, 5) + temp = null + if (src.organs["r_leg"]) + temp = src.organs["r_leg"] + if (istype(temp, /obj/item/weapon/organ/external)) + ok += temp.take_damage(0, 5) + if (still_burning & 64) + temp = null + if (src.organs["l_foot"]) + temp = src.organs["l_foot"] + if (istype(temp, /obj/item/weapon/organ/external)) + ok += temp.take_damage(0, 5) + temp = null + if (src.organs["r_foot"]) + temp = src.organs["r_foot"] + if (istype(temp, /obj/item/weapon/organ/external)) + ok += temp.take_damage(0, 5) + if (still_burning & 16) + temp = null + if (src.organs["l_hand"]) + temp = src.organs["l_hand"] + if (istype(temp, /obj/item/weapon/organ/external)) + ok += temp.take_damage(0, 5) + temp = null + if (src.organs["r_hand"]) + temp = src.organs["r_hand"] + if (istype(temp, /obj/item/weapon/organ/external)) + ok += temp.take_damage(0, 5) + if (ok) + src.UpdateDamageIcon() + else + src.UpdateDamage() + return + +/mob/human/Life() + set invisibility = 0 + set background = 1 + + var/T = src.loc + src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss + if (src.monkeyizing) + return + if (src.stat != 2) + if (!( src.m_flag )) + src.last_move = null + src.m_flag = null + if (src.mach) + if (src.machine) + src.mach.icon_state = "mach1" + else + src.mach.icon_state = null + if (src.disabilities & 2) + if ((prob(1) && (src.paralysis < 10 && src.r_epil < 1))) + src << "\red You have a seizure!" + src.paralysis = max(10, src.paralysis) + if (src.disabilities & 4) + if ((prob(5) && (src.paralysis <= 1 && src.r_ch_cou < 1))) + src.drop_item() + spawn( 0 ) + emote("cough") + return + if (src.disabilities & 8) + if ((prob(10) && (src.paralysis <= 1 && src.r_Tourette < 1))) + src.stunned = max(10, src.stunned) + spawn( 0 ) + emote("twitch") + return + if (src.disabilities & 16) + if (prob(10)) + src.stuttering = max(10, src.stuttering) + if ((src.internal && !( src.contents.Find(src.internal) ))) + src.internal = null + if ((!( src.wear_mask ) || !( src.wear_mask.flags | 8 ))) + src.internal = null + if (src.losebreath > 0) + src.losebreath-- + if (prob(7)) + spawn( 0 ) + emote("gasp") + return + var/oxcheck = 7 + var/plcheck = 0 + else + if (isobj(T)) + var/O = T + T = O.alter_health(src) + if (isturf(T)) + var/t = 1.4E-4 + if (src.health < -75.0) + t = 5.0E-5 + else + if (src.health < -50.0) + t = 1.0E-4 + if (locate(/obj/move, T)) + T = locate(/obj/move, T) + var/turf_total = (((T.oxygen + T.poison) + T.sl_gas) + T.co2) + T.n2 + var/obj/substance/gas/G = new /obj/substance/gas( ) + G.maximum = 10000 + if (src.internal) + src.internal.process(src, G) + if (src.internals) + src.internals.icon_state = "internal1" + if ((src.wear_mask.flags & 4 && (!( istype(src.head, /obj/item/weapon/clothing/head) ) || !( src.head.flags & 2 )))) + turf_add(T, G.tot_gas() * 0.5) + turf_take(T, ((t / 2) * turf_total) - tot_gas()) + else + if (G.internals) + src.internals.icon_state = "internal0" + G.turf_take(T, t * turf_total) + if (G.tot_gas() > 650) + turf_add(T, tot_gas() - 650) + src.aircheck(G) + plcheck = src.t_plasma + oxcheck = src.t_oxygen + turf_add(T, G.tot_gas()) + if ((istype(src.loc, /turf/space) && !( locate(/obj/move, src.loc) ))) + var/layers = 20 + if (((istype(src.head, /obj/item/weapon/clothing/head) && src.head.flags & 4) || (istype(src.wear_mask, /obj/item/weapon/clothing/mask) && (!( src.wear_mask.flags & 4 ) && src.flags & 8)))) + layers -= 5 + if (istype(src.w_uniform, /obj/item/weapon/clothing/under)) + layers -= 5 + if ((istype(src.wear_suit, /obj/item/weapon/clothing/suit) && src.wear_suit.flags & 8)) + layers -= 10 + if (layers > oxcheck) + oxcheck = layers + if ((plcheck && src.health >= 0)) + if ((src.paralysis <= 0 || src.weakened <= 0)) + src.toxloss += plcheck + else + src.toxloss += plcheck + src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss + if ((oxcheck && src.health >= 0)) + if ((src.paralysis <= 0 || src.weakened <= 0)) + src.oxyloss += oxcheck + else + src.oxyloss += oxcheck + src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss + else + if (src.health >= 0) + if (src.oxyloss >= 10) + var/amount = max(0.15, 1) + src.oxyloss -= amount + else + src.oxyloss = 0 + src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss + if (src.health <= -100.0) + src.death() + else + if ((src.sleeping || src.health < 0)) + if (prob(1)) + if (src.health <= 20) + spawn( 0 ) + emote("gasp") + return + else + spawn( 0 ) + emote("snore") + return + if (src.health < 0) + if (src.rejuv <= 0) + src.oxyloss++ + src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss + src.stat = 1 + if (src.paralysis < 5) + src.paralysis = 5 + else + if (src.resting) + if (src.weakened < 5) + src.weakened = 5 + else + if (src.health < 20) + if (prob(5)) + if (prob(1)) + if (src.health <= 20) + spawn( 0 ) + emote("gasp") + return + src.stat = 1 + if (src.paralysis < 2) + src.paralysis = 2 + src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss + if (src.rejuv > 0) + src.rejuv-- + if (src.r_epil > 0) + src.r_epil-- + if (src.antitoxs > 0) + src.r_epil -= 4 + if (src.r_ch_cou > 0) + src.r_ch_cou-- + if (src.antitoxs > 0) + src.r_ch_cou -= 4 + if (src.r_Tourette > 0) + src.r_Tourette-- + if (src.antitoxs > 0) + src.r_Tourette -= 4 + if (src.antitoxs > 0) + src.antitoxs-- + if (src.plasma > 0) + src.antitoxs -= 4 + if (src.plasma > 0) + src.plasma-- + src.blinded = null + if (src.drowsyness > 0) + src.drowsyness-- + if (src.paralysis > 1) + src.drowsyness -= 0.5 + else + if (src.weakened > 1) + src.drowsyness -= 0.25 + src.eye_blurry = max(2, src.eye_blurry) + if (prob(5)) + src.sleeping = 1 + src.paralysis = 5 + if ((src.health > -10.0 && src.drowsyness > 1200)) + if (src.antitoxs < 1) + src.toxloss += plcheck + src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss + plcheck = 1 + var/mental_danger = 0 + src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss + if (((src.r_epil > 0 && !( src.disabilities & 2 )) || (src.r_Tourette > 0 && !( src.disabilities & 8 )))) + src.stuttering = max(2, src.drowsyness) + mental_danger = 1 + src.drowsyness = max(2, src.drowsyness) + if (!( src.paralysis )) + if (prob(5)) + src << "\red You have a seizure!" + src.paralysis = 10 + else + if (prob(5)) + spawn( 0 ) + emote("twitch") + return + src.stunned = 10 + else + if (prob(30)) + spawn( 0 ) + emote("drool") + return + src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss + if (src.health > -10.0) + var/threshold = 60 + if (mental_danger) + threshold = 30 + if (src.r_ch_cou > 3600) + if (src.antitoxs < 1) + src.toxloss += 1 + src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss + plcheck = 1 + if (prob(15)) + spawn( 0 ) + emote("twitch") + src.stunned = 2 + return + if (src.r_epil > (threshold * 60)) + if (src.antitoxs < 1) + src.toxloss += 1 + src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss + plcheck = 1 + if (prob(15)) + spawn( 0 ) + emote("twitch") + src.stunned = 2 + return + if (src.r_Tourette > (threshold * 60)) + if (src.antitoxs < 1) + src.toxloss += 1 + src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss + plcheck = 1 + if (prob(15)) + spawn( 0 ) + emote("twitch") + src.stunned = 2 + return + if (src.antitoxs > 7200) + src.toxloss += 1 + src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss + plcheck = 1 + if (prob(15)) + spawn( 0 ) + emote("drool") + return + src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss + if (src.health > -50.0) + if (src.plasma > 0) + if (src.antitoxs < 1) + src.toxloss += 1 + src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss + plcheck = 1 + if (prob(15)) + spawn( 0 ) + emote("moan") + return + src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss + if (src.stat != 2) + if (((src.paralysis + src.stunned) + src.weakened) > 0) + if (src.stunned > 0) + src.stunned-- + src.stat = 0 + if (src.weakened > 0) + src.weakened-- + src.lying = 1 + src.stat = 0 + if (src.paralysis > 0) + src.paralysis-- + src.blinded = 1 + src.lying = 1 + src.stat = 1 + src.canmove = 0 + var/h = src.hand + src.hand = 0 + src.drop_item() + src.hand = 1 + src.drop_item() + src.hand = h + else + src.canmove = 1 + src.lying = 0 + src.stat = 0 + else + src.lying = 1 + src.blinded = 1 + src.stat = 2 + src.canmove = 0 + if (src.stuttering > 0) + src.stuttering-- + if (src.eye_blind > 0) + src.eye_blind-- + src.blinded = 1 + if (src.ear_deaf > 0) + src.ear_deaf-- + else + if (src.ear_damage < 25) + src.ear_damage -= 0.05 + if (istype(src.ears, /obj/item/weapon/clothing/ears/earmuffs)) + src.ear_damage -= 0.15 + src.ear_damage = max(src.ear_damage, 0) + if (src.buckled) + src.lying = 0 + src.density = !( src.lying ) + src.pixel_y = 0 + src.pixel_x = 0 + var/add_weight = 0 + if (istype(src.l_hand, /obj/item/weapon/grab)) + add_weight += 1250000.0 + if (istype(src.r_hand, /obj/item/weapon/grab)) + add_weight += 1250000.0 + if (locate(/obj/item/weapon/grab, src.grabbed_by)) + var/a_grabs = 0 + for(var/obj/item/weapon/grab/G as obj in src.grabbed_by) + G.process() + if (G) + if (G.state > 1) + a_grabs++ + if ((G.state > 2 && src.loc == G.assailant.loc)) + src.density = 0 + src.lying = 0 + switch(G.assailant.dir) + if(1.0) + src.pixel_y = 8 + if(2.0) + src.pixel_y = -8.0 + if(4.0) + src.pixel_x = 8 + if(8.0) + src.pixel_x = -8.0 + else + //Foreach goto(2918) + src.weight = ((((src.grabbed_by.len - a_grabs) / 2) + 1) * 1250000.0) + (a_grabs * 2500000.0) + else + if (src.lying) + src.weight = add_weight + 2500000.0 + else + src.weight = add_weight + 1250000.0 + if ((src.sdisabilities & 1 || istype(src.glasses, /obj/item/weapon/clothing/glasses/blindfold))) + src.blinded = 1 + if ((src.sdisabilities & 4 || istype(src.ears, /obj/item/weapon/clothing/ears/earmuffs))) + src.ear_deaf = 1 + if (src.eye_blurry > 0) + src.eye_blurry-- + src.eye_blurry = max(0, src.eye_blurry) + if (src.client) + src.client.screen -= main_hud.g_dither + if (istype(src.wear_mask, /obj/item/weapon/clothing/mask/gasmask)) + src.client.screen += main_hud.g_dither + if (istype(src.glasses, /obj/item/weapon/clothing/glasses/meson)) + src.sight |= SEE_TURFS + src.see_invisible = 0 + else + if (istype(src.glasses, /obj/item/weapon/clothing/glasses/thermal)) + src.sight |= SEE_TURFS + src.sight |= SEE_MOBS + src.see_invisible = 2 + else + src.sight &= 65519 + src.sight &= 65531 + src.see_invisible = 0 + if (src.mach) + if (src.machine) + src.mach.icon_state = "mach1" + else + src.mach.icon_state = "blank" + if (src.sleep) + src.sleep.icon_state = text("sleep[]", src.sleeping) + if (src.rest) + src.rest.icon_state = text("rest[]", src.resting) + if (src.healths) + if (src.stat < 2) + if (src.health >= 100) + src.healths.icon_state = "health0" + else + if (src.health >= 75) + src.healths.icon_state = "health1" + else + if (src.health >= 50) + src.healths.icon_state = "health2" + else + if (src.health > 20) + src.healths.icon_state = "health3" + else + src.healths.icon_state = "health4" + else + src.healths.icon_state = "health5" + if (src.pullin) + if (src.pulling) + src.pullin.icon_state = "pull1" + else + src.pullin.icon_state = "pull0" + if (src.toxin) + if (plcheck) + src.toxin.icon_state = "toxin1" + else + src.toxin.icon_state = "toxin0" + if (src.oxygen) + if (oxcheck) + src.oxygen.icon_state = "oxy1" + else + src.oxygen.icon_state = "oxy0" + src.client.screen -= src.hud_used.blurry + src.client.screen -= src.hud_used.vimpaired + if ((src.blind && src.stat != 2)) + if (src.blinded) + src.blind.layer = 18 + else + src.blind.layer = 0 + if ((src.disabilities & 1 && !( istype(src.glasses, /obj/item/weapon/clothing/glasses/regular) ))) + src.client.screen -= src.hud_used.vimpaired + src.client.screen += src.hud_used.vimpaired + else + src.client.screen -= src.hud_used.vimpaired + if (src.eye_blurry) + src.client.screen -= src.hud_used.blurry + src.client.screen += src.hud_used.blurry + else + src.client.screen -= src.hud_used.blurry + if (src.stat != 2) + if (src.machine) + if (!( src.machine.check_eye(src) )) + src.reset_view(null) + else + src.reset_view(null) + if (src.primary) + src.primary.cleanup() + src.UpdateClothing() + src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss + return + +/mob/human/Stat() + + ..() + statpanel("Status") + stat(null, text("Intent: []", src.a_intent)) + stat(null, text("Move Mode: []", src.m_intent)) + if (src.client.statpanel == "Status") + if (ticker) + var/timel = ticker.timeleft + stat(null, text("ETA-[]:[][]", (timel / 600) % 60, (timel / 100) % 6, (timel / 10) % 10)) + if (src.internal) + if (!( src.internal.gas )) + src.internal = null + del(src.internal) + stat(null, text("Internal Atmosphere: []", src.internal)) + stat(null, text("Internal Oxygen: []", src.internal.gas.oxygen)) + stat(null, text("Internal Plasma: []", src.plasma)) + return + +/mob/human/las_act(flag, A as obj) + + var/shielded = 0 + for(var/obj/item/weapon/shield/S as obj in src) + if (S.active) + if (flag == "bullet") + return + shielded = 1 + S.active = 0 + S.icon_state = "shield0" + //Foreach goto(22) + for(var/obj/item/weapon/cloaking_device/S as obj in src) + if (S.active) + shielded = 1 + S.active = 0 + S.icon_state = "shield0" + //Foreach goto(99) + if ((shielded && flag != "bullet")) + if (!( flag )) + src << "\blue Ohhh that shield isn't going to help here!" + src.paralysis = 120 + src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss + if (locate(/obj/item/weapon/grab, src)) + var/safe = null + if (istype(src.l_hand, /obj/item/weapon/grab)) + var/G = src.l_hand + if ((G.state == 3 && get_dir(src, A) == src.dir)) + safe = G.affecting + if (istype(src.r_hand, /obj/item/weapon/grab)) + var/G = src.r_hand + if ((G.state == 3 && get_dir(src, A) == src.dir)) + safe = G.affecting + if (safe) + return safe.las_act(flag, A) + if (flag == "bullet") + var/d = 51 + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/armor)) + if (prob(70)) + src.show_message("\red Your armor absorbs the hit!", 4) + return + else + if (prob(40)) + src.show_message("\red Your armor only softens the hit!", 4) + if (prob(20)) + d = d / 2 + d = d / 4 + else + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/swat_suit)) + if (prob(90)) + src.show_message("\red Your armor absorbs the blow!", 4) + return + else + if (prob(90)) + src.show_message("\red Your armor only softens the blow!", 4) + if (prob(60)) + d = d / 2 + d = d / 5 + if (src.stat != 2) + if (istype(src.organs["chest"], /obj/item/weapon/organ/external)) + var/temp = src.organs["chest"] + temp.take_damage(d, 0) + src.UpdateDamageIcon() + src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss + if (prob(50)) + src.weakened = 5 + return + else + if (flag) + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/armor)) + if (prob(5)) + src.show_message("\red Your armor absorbs the hit!", 4) + return + else + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/swat_suit)) + if (prob(70)) + src.show_message("\red Your armor absorbs the hit!", 4) + return + if (prob(75)) + src.stunned = 10 + else + src.weakened = 10 + if (src.stuttering < 10) + src.stuttering = 10 + else + var/d = 20 + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/armor)) + if (prob(40)) + src.show_message("\red Your armor absorbs the hit!", 4) + return + else + if (prob(40)) + src.show_message("\red Your armor only softens the hit!", 4) + if (prob(20)) + d = d / 2 + d = d / 2 + else + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/swat_suit)) + if (prob(70)) + src.show_message("\red Your armor absorbs the blow!", 4) + return + else + if (prob(90)) + src.show_message("\red Your armor only softens the blow!", 4) + if (prob(60)) + d = d / 2 + d = d / 2 + if (src.stat != 2) + if (istype(src.organs["chest"], /obj/item/weapon/organ/external)) + var/temp = src.organs["chest"] + temp.take_damage(d, 0) + src.UpdateDamageIcon() + src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss + if (prob(25)) + src.stunned = 1 + return + +/mob/human/say(message as text) + + if (src.muted) + return + if ((src.name != src.rname && src.wear_id)) + var/alt_name = text(" (as [])", src.wear_id.registered) + if (src.stat == 2) + for(var/M as mob in world) + if (M.stat == 2) + M << text("[][] []: []", src.rname, alt_name, (src.stat > 1 ? "\[dead \]" : ""), message) + //Foreach goto(69) + return + if ((copytext(message, 1, 2) == "*" && !( src.stat ))) + src.emote(copytext(message, 2, length(message) + 1)) + return + message = copytext(message, 1, 256) + if (src.sdisabilities & 2) + return + if (src.stat >= 1) + return + if ((!( message ) || istype(src.wear_mask, /obj/item/weapon/clothing/mask/muzzle))) + return + if (src.stat < 2) + var/list/L = list( ) + var/pre = copytext(message, 1, 4) + var/italics = 0 + var/obj_range = null + if (pre == "\[r\]") + message = copytext(message, 4, length(message) + 1) + if (src.r_hand) + src.r_hand.talk_into(usr, message) + L += hearers(1, null) + obj_range = 1 + italics = 1 + else + if (pre == "\[h\]") + message = copytext(message, 4, length(message) + 1) + if (src.w_radio) + src.w_radio.talk_into(usr, message) + L += hearers(1, null) + obj_range = 1 + italics = 1 + else + if (pre == "\[l\]") + message = copytext(message, 4, length(message) + 1) + if (src.l_hand) + src.l_hand.talk_into(usr, message) + L += hearers(1, null) + obj_range = 1 + italics = 1 + else + if (pre == "\[w\]") + message = copytext(message, 4, length(message) + 1) + L += hearers(1, null) + obj_range = 1 + italics = 1 + else + if (pre == "\[i\]") + message = copytext(message, 4, length(message) + 1) + for(var/obj/item/weapon/radio/intercom/I as obj in view(1, null)) + I.talk_into(usr, message) + //Foreach goto(626) + L += hearers(1, null) + obj_range = 1 + italics = 1 + else + L += hearers(null, null) + pre = null + L -= src + L += src + var/T = src.loc + if (locate(/obj/move, T)) + T = locate(/obj/move, T) + message = html_encode(message) + if (src.stuttering) + message = stutter(message) + if (italics) + message = text("[]", message) + if (((src.oxygen && src.oxygen.icon_state == "oxy0") || (!( (istype(T, /turf) || istype(T, /obj/move)) ) || T.oxygen > 0))) + for(var/M as mob in L) + if (istype(M, src.type)) + M.show_message(text("[][]: []", src.rname, alt_name, message), 2) + else + M.show_message(text("The human: []", stars(message)), 2) + //Foreach goto(864) + for(var/obj/O as obj in view(obj_range, null)) + spawn( 0 ) + if (O) + O.hear_talk(usr, message) + return + //Foreach goto(948) + for(var/M as mob in world) + if (M.stat > 1) + M << text("[][] []: []", src.rname, alt_name, (src.stat > 1 ? "\[dead \]" : ""), message) + //Foreach goto(1005) + return + +/mob/human/UpdateClothing() + + ..() + if (src.monkeyizing) + return + if (!( src.w_uniform )) + var/W = src.r_store + if (W) + src.u_equip(W) + if (src.client) + src.client.screen -= W + if (W) + W.loc = src.loc + dropped(src) + W.layer = initial(W.layer) + W = src.l_store + if (W) + src.u_equip(W) + if (src.client) + src.client.screen -= W + if (W) + W.loc = src.loc + dropped(src) + W.layer = initial(W.layer) + W = src.wear_id + if (W) + src.u_equip(W) + if (src.client) + src.client.screen -= W + if (W) + W.loc = src.loc + dropped(src) + W.layer = initial(W.layer) + W = src.belt + if (W) + src.u_equip(W) + if (src.client) + src.client.screen -= W + if (W) + W.loc = src.loc + dropped(src) + W.layer = initial(W.layer) + for(var/i in src.overlays) + src.overlays -= i + //Foreach goto(351) + for(var/i in src.zone_sel.overlays) + src.zone_sel.overlays -= i + //Foreach goto(385) + src.zone_sel.overlays += src.body_standing + src.overlays += image(list("icon" = 'zone_sel.dmi', "icon_state" = text("[]", src.zone_sel.selecting))) + if (src.lying) + src.icon = src.lying_icon + if (src.face2) + src.overlays += src.face2 + src.overlays += src.body_lying + else + src.icon = src.stand_icon + if (src.face) + src.overlays += src.face + src.overlays += src.body_standing + if (src.w_uniform) + if (istype(src.w_uniform, /obj/item/weapon/clothing/under)) + var/t1 = src.w_uniform.color + if (!( t1 )) + t1 = src.icon_state + src.overlays += image(list("icon" = 'uniforms.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER)) + src.w_uniform.screen_loc = "2,2" + if (src.wear_id) + src.overlays += image(list("icon" = 'mob.dmi', "icon_state" = text("id[]", (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER)) + if (src.client) + src.client.screen -= src.hud_used.other + src.client.screen -= src.hud_used.intents + src.client.screen -= src.hud_used.mov_int + if ((src.client && src.other)) + src.client.screen += src.hud_used.other + if (src.gloves) + var/t1 = src.gloves.s_istate + if (!( t1 )) + t1 = src.icon_state + src.overlays += image(list("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER)) + src.gloves.screen_loc = "4,2" + if (src.glasses) + var/t1 = src.glasses.s_istate + if (!( t1 )) + t1 = src.icon_state + src.overlays += image(list("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER)) + src.glasses.screen_loc = "6,2" + if (src.ears) + var/t1 = src.ears.s_istate + if (!( t1 )) + t1 = src.icon_state + src.overlays += image(list("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER)) + src.ears.screen_loc = "9,2" + if (src.shoes) + var/t1 = src.shoes.s_istate + if (!( t1 )) + t1 = src.icon_state + src.overlays += image(list("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER)) + src.shoes.screen_loc = "5,2" + else + if (src.gloves) + var/t1 = src.gloves.s_istate + if (!( t1 )) + t1 = src.icon_state + src.overlays += image(list("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER)) + src.gloves.screen_loc = null + if (src.glasses) + var/t1 = src.glasses.s_istate + if (!( t1 )) + t1 = src.icon_state + src.overlays += image(list("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER)) + src.glasses.screen_loc = null + if (src.ears) + var/t1 = src.ears.s_istate + if (!( t1 )) + t1 = src.icon_state + src.overlays += image(list("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER)) + src.ears.screen_loc = null + if (src.shoes) + var/t1 = src.shoes.s_istate + if (!( t1 )) + t1 = src.icon_state + src.overlays += image(list("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER)) + src.shoes.screen_loc = null + if (src.w_radio) + if (!( src.lying )) + src.overlays += image(list("icon" = 'mob.dmi', "icon_state" = "headset", "layer" = MOB_LAYER)) + else + src.overlays += image(list("icon" = 'mob.dmi', "icon_state" = "headset2", "layer" = MOB_LAYER)) + src.w_radio.screen_loc = "3,1" + if (src.wear_mask) + if (istype(src.wear_mask, /obj/item/weapon/clothing/mask)) + var/t1 = src.wear_mask.s_istate + if (!( t1 )) + t1 = src.icon_state + src.overlays += image(list("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER)) + src.wear_mask.screen_loc = "2,3" + if (src.client) + if (src.i_select) + if (src.intent) + src.client.screen += src.hud_used.intents + src.i_select.screen_loc = src.intent + else + src.i_select.screen_loc = null + if (src.m_select) + if (src.m_int) + src.client.screen += src.hud_used.mov_int + src.m_select.screen_loc = src.m_int + else + src.m_select.screen_loc = null + if (src.wear_suit) + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit)) + var/t1 = src.wear_suit.s_istate + if (!( t1 )) + t1 = src.icon_state + src.overlays += image(list("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER)) + src.wear_suit.screen_loc = "2,1" + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/straight_jacket)) + if (src.handcuffed) + src.handcuffed.loc = src.loc + src.handcuffed.layer = src.handcuffed.initial(src.layer) + src.handcuffed = null + if ((src.l_hand || src.r_hand)) + var/h = src.hand + src.hand = 1 + src.drop_item() + src.hand = 0 + src.drop_item() + src.hand = h + if ((src.client && src.other)) + if (src.head) + var/t1 = src.head.s_istate + if (!( t1 )) + t1 = src.icon_state + src.overlays += image(list("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER)) + src.head.screen_loc = "7,2" + if (src.belt) + var/t1 = src.belt.s_istate + if (!( t1 )) + t1 = src.icon_state + src.overlays += image(list("icon" = 'belt.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER)) + src.belt.screen_loc = "8,2" + else + if (src.head) + var/t1 = src.head.s_istate + if (!( t1 )) + t1 = src.icon_state + src.overlays += image(list("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER)) + src.head.screen_loc = null + if (src.belt) + var/t1 = src.belt.s_istate + if (!( t1 )) + t1 = src.icon_state + src.overlays += image(list("icon" = 'belt.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = MOB_LAYER)) + src.belt.screen_loc = null + if (src.wear_id) + if (((src.wear_mask && !( src.wear_mask.see_face )) || (src.head && !( src.head.see_face )))) + src.name = (src.wear_id.registered ? src.registered : "Unknown") + else + if (src.wear_id.registered != src.rname) + src.name = text("[] (as [])", src.rname, src.wear_id.registered) + else + src.name = text("[]", src.rname) + src.wear_id.screen_loc = "1,1" + else + src.name = text("[]", src.rname) + if (src.l_store) + src.l_store.screen_loc = "4,1" + if (src.r_store) + src.r_store.screen_loc = "5,1" + if (src.r_hand) + var/t1 = src.r_hand.s_istate + if (!( t1 )) + t1 = src.icon_state + src.overlays += image(list("icon" = 'r_items.dmi', "icon_state" = t1, "layer" = MOB_LAYER)) + src.r_hand.screen_loc = "1,2" + if (src.l_hand) + var/t1 = src.l_hand.s_istate + if (!( t1 )) + t1 = src.icon_state + src.overlays += image(list("icon" = 'l_items.dmi', "icon_state" = t1, "layer" = MOB_LAYER)) + src.l_hand.screen_loc = "3,2" + if (src.back) + if (istype(src.back, /obj/item/weapon/radio/electropack)) + if (!( src.lying )) + src.overlays += image(list("icon" = 'mob.dmi', "icon_state" = "backe", "layer" = MOB_LAYER)) + else + src.overlays += image(list("icon" = 'mob.dmi', "icon_state" = "backe2", "layer" = MOB_LAYER)) + else + if (!( src.lying )) + src.overlays += image(list("icon" = 'mob.dmi', "icon_state" = "back", "layer" = MOB_LAYER)) + else + src.overlays += image(list("icon" = 'mob.dmi', "icon_state" = "back2", "layer" = MOB_LAYER)) + src.back.screen_loc = "3,3" + if (src.handcuffed) + src.pulling = null + if (!( src.lying )) + src.overlays += image(list("icon" = 'mob.dmi', "icon_state" = "handcuff1", "layer" = MOB_LAYER)) + else + src.overlays += image(list("icon" = 'mob.dmi', "icon_state" = "handcuff2", "layer" = MOB_LAYER)) + if (src.client) + src.client.screen -= src.contents + src.client.screen += src.contents + var/shielded = 0 + for(var/obj/item/weapon/shield/S as obj in src) + if (S.active) + shielded = 1 + else + //Foreach continue //goto(2917) + for(var/obj/item/weapon/cloaking_device/S as obj in src) + if (S.active) + shielded = 2 + else + //Foreach continue //goto(2969) + if (shielded == 2) + src.invisibility = 2 + else + src.invisibility = 0 + if (shielded) + src.overlays += image(list("icon" = 'mob.dmi', "icon_state" = "shield", "layer" = MOB_LAYER)) + for(var/M as mob in viewers(1, src)) + if ((M.client && M.machine == src)) + spawn( 0 ) + src.show_inv(M) + return + //Foreach goto(3088) + src.last_b_state = src.stat + return + +/mob/human/hand_p(M as mob) + + if (M.a_intent == "hurt") + if (istype(M.wear_mask, /obj/item/weapon/clothing/mask/muzzle)) + return + if (((prob(60) || (ticker && ticker.mode == "monkey")) && src.health > 0)) + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/sp_suit)) + if (prob(95)) + for(var/O as mob in viewers(src, null)) + O.show_message(text("\red The monkey has attempted to bite []!", src), 1) + //Foreach goto(101) + return + else + if (istype(O.wear_suit, /obj/item/weapon/clothing/suit/bio_suit)) + if (prob(90)) + for(var/O as mob in viewers(src, null)) + O.show_message(text("\red The monkey has attempted to bite []!", src), 1) + //Foreach goto(167) + return + else + if (istype(O.wear_suit, /obj/item/weapon/clothing/suit/armor)) + if (prob(60)) + for(var/O as mob in viewers(src, null)) + O.show_message(text("\red The monkey has attempted to bite []!", src), 1) + //Foreach goto(233) + return + else + if (istype(O.wear_suit, /obj/item/weapon/clothing/suit/swat_suit)) + if (prob(99)) + for(var/O as mob in viewers(src, null)) + O.show_message(text("\red The monkey has attempted to bite []!", src), 1) + //Foreach goto(299) + return + for(var/O as mob in viewers(src, null)) + if ((O.client && !( O.blinded ))) + O.show_message(text("\red The monkey has bit []!", src), 1) + //Foreach goto(344) + var/damage = rand(1, 3) + var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg", "diaper") + if (istype(src.organs[text("[]", dam_zone)], /obj/item/weapon/organ/external)) + var/temp = src.organs[text("[]", dam_zone)] + if (temp.take_damage(damage, 0)) + src.UpdateDamageIcon() + else + src.UpdateDamage() + src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss + if ((ticker && ticker.mode == "monkey")) + src.monkeyize() + else + for(var/O as mob in viewers(src, null)) + if ((O.client && !( O.blinded ))) + O.show_message(text("\red The monkey has attempted to bite []!", src), 1) + //Foreach goto(580) + return + +/mob/human/attack_paw(M as mob) + + if (M.a_intent == "help") + src.sleeping = 0 + src.resting = 0 + for(var/O as mob in viewers(src, null)) + O.show_message(text("\blue The monkey shakes [] trying to wake him up!", src), 1) + //Foreach goto(47) + else + if (istype(O.wear_mask, /obj/item/weapon/clothing/mask/muzzle)) + return + if (((prob(60) || (ticker && ticker.mode == "monkey")) && src.health > 0)) + if (istype(src.wear_suit, /obj/item/weapon/clothing/suit/sp_suit)) + if (prob(95)) + for(var/O as mob in viewers(src, null)) + O.show_message(text("\red The monkey has attempted to bite []!", src), 1) + //Foreach goto(159) + return + else + if (istype(O.wear_suit, /obj/item/weapon/clothing/suit/bio_suit)) + if (prob(90)) + for(var/O as mob in viewers(src, null)) + O.show_message(text("\red The monkey has attempted to bite []!", src), 1) + //Foreach goto(225) + return + else + if (istype(O.wear_suit, /obj/item/weapon/clothing/suit/armor)) + if (prob(60)) + for(var/O as mob in viewers(src, null)) + O.show_message(text("\red The monkey has attempted to bite []!", src), 1) + //Foreach goto(291) + return + else + if (istype(O.wear_suit, /obj/item/weapon/clothing/suit/swat_suit)) + if (prob(99)) + for(var/O as mob in viewers(src, null)) + O.show_message(text("\red The monkey has attempted to bite []!", src), 1) + //Foreach goto(357) + return + for(var/O as mob in viewers(src, null)) + O.show_message(text("\red The monkey has bit []!", src), 1) + //Foreach goto(402) + var/damage = rand(1, 3) + var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg", "diaper") + if (istype(src.organs[text("[]", dam_zone)], /obj/item/weapon/organ/external)) + var/temp = src.organs[text("[]", dam_zone)] + if (temp.take_damage(damage, 0)) + src.UpdateDamageIcon() + else + src.UpdateDamage() + src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss + if ((ticker && ticker.mode == "monkey")) + src.monkeyize() + else + for(var/O as mob in viewers(src, null)) + O.show_message(text("\red The monkey has attempted to bite []!", src), 1) + //Foreach goto(623) + return + +/mob/human/attack_hand(M as mob) + + if (M.a_intent == "help") + if (src.health > 0) + if (src.w_uniform) + src.w_uniform.add_fingerprint(M) + src.sleeping = 0 + src.resting = 0 + for(var/O as mob in viewers(src, null)) + O.show_message(text("\blue [] shakes [] trying to wake [] up!", M, src, src), 1) + //Foreach goto(80) + else + if (O.health >= -75.0) + if (((M.head && M.head.flags & 4) || ((M.wear_mask && !( M.wear_mask.flags & 32 )) || ((src.head && src.head.flags & 4) || (src.wear_mask && !( src.wear_mask.flags & 32 )))))) + M << "\blue Remove that mask!" + return + var/obj/equip_e/human/O = new /obj/equip_e/human( ) + O.source = M + O.target = src + O.s_loc = M.loc + O.t_loc = src.loc + O.place = "CPR" + src.requests += O + spawn( 0 ) + O.process() + return + else + if (O.a_intent == "grab") + if (M == src) + return + if (src.w_uniform) + src.w_uniform.add_fingerprint(M) + var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M ) + G.assailant = M + if (M.hand) + M.l_hand = G + else + M.r_hand = G + G.layer = 20 + G.affecting = src + src.grabbed_by += G + G.synch() + for(var/O as mob in viewers(src, null)) + O.show_message(text("\red [] has grabbed [] passively!", M, src), 1) + //Foreach goto(441) + else + if (O.a_intent == "hurt") + if (src.w_uniform) + src.w_uniform.add_fingerprint(M) + var/damage = rand(1, 9) + var/affecting = src.organs["chest"] + var/t = M.zone_sel.selecting + if ((t in list( "hair", "eyes", "mouth", "neck" ))) + t = "head" + var/def_zone = ran_zone(t) + if (src.organs[text("[]", def_zone)]) + affecting = src.organs[text("[]", def_zone)] + if ((istype(affecting, /obj/item/weapon/organ/external) && prob(90))) + for(var/O as mob in viewers(src, null)) + O.show_message(text("\red [] has punched []!", M, src), 1) + //Foreach goto(646) + if (def_zone == "head") + if ((((src.head && src.head.brute_protect & 1) || (src.wear_mask && src.wear_mask.brute_protect & 1)) && prob(99))) + if (prob(20)) + affecting.take_damage(damage, 0) + else + src.show_message("\red You have been protected from a hit to the head.") + return + if (damage > 4.9) + if (src.weakened < 10) + src.weakened = rand(10, 15) + for(var/O as mob in viewers(M, null)) + O.show_message(text("\red [] has weakened []!", M, src), 1, "\red You hear someone fall.", 2) + //Foreach goto(820) + affecting.take_damage(damage) + else + if (def_zone == "chest") + if ((((src.wear_suit && src.wear_suit.brute_protect & 2) || (src.w_uniform && src.w_uniform.brute_protect & 2)) && prob(85))) + src.show_message("\red You have been protected from a hit to the cheast.") + return + if (damage > 4.9) + if (prob(50)) + if (src.weakened < 5) + src.weakened = 5 + for(var/O as mob in viewers(src, null)) + O.show_message(text("\red [] has knocked down []!", M, src), 1, "\red You hear someone fall.", 2) + //Foreach goto(993) + else + if (src.stunned < 5) + src.stunned = 5 + for(var/O as mob in viewers(src, null)) + O.show_message(text("\red [] has stunned []!", M, src), 1) + //Foreach goto(1063) + src.stat = 1 + affecting.take_damage(damage) + else + if (def_zone == "diaper") + if ((((src.wear_suit && src.wear_suit.brute_protect & 4) || (src.w_uniform && src.w_uniform.brute_protect & 4)) && prob(75))) + src.show_message("\red You have been protected from a hit to the lower chest/diaper.") + return + if (damage > 4.9) + if (prob(50)) + if (src.weakened < 3) + src.weakened = 3 + for(var/O as mob in viewers(src, null)) + O.show_message(text("\red [] has knocked down []!", M, src), 1, "\red You hear someone fall.", 2) + //Foreach goto(1239) + else + if (src.stunned < 3) + src.stunned = 3 + for(var/O as mob in viewers(src, null)) + O.show_message(text("\red [] has stunned []!", M, src), 1) + //Foreach goto(1309) + src.stat = 1 + affecting.take_damage(damage) + else + affecting.take_damage(damage) + src.UpdateDamageIcon() + src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss + else + for(var/O as mob in viewers(src, null)) + O.show_message(text("\red [] has attempted to punch []!", M, src), 1) + //Foreach goto(1419) + return + else + if (!( src.lying )) + if (src.w_uniform) + src.w_uniform.add_fingerprint(M) + var/randn = rand(1, 100) + if (randn <= 25) + src.weakened = 2 + for(var/O as mob in viewers(src, null)) + O.show_message(text("\red [] has pushed down []!", M, src), 1) + //Foreach goto(1529) + else + if (randn <= 60) + src.drop_item() + for(var/O as mob in viewers(src, null)) + O.show_message(text("\red [] has disarmed []!", M, src), 1) + //Foreach goto(1596) + else + for(var/O as mob in viewers(src, null)) + O.show_message(text("\red [] has attempted to disarm []!", M, src), 1) + //Foreach goto(1643) + return + +/mob/human/Topic(href, href_list) + + if ((src == usr && !( src.start ))) + if (findtext(href, "occ", 1, null)) + if (findtext(href, "cancel", 1, null)) + usr << browse(null, text("window=\ref[]occupation", src)) + return + if (!( findtext(href, "job", 1, null) )) + src.SetChoices(text2num(href_list["occ"])) + else + src.SetJob(arglist(list("occ" = text2num(href_list["occ"]), "job" = href_list["job"]))) + else + if (findtext(href, "rname", 1, null)) + var/t1 = href_list["rname"] + if (t1 == "input") + t1 = input("Please select a name:", "Character Generation", null, null) as text + if ((!( src.start ) && t1)) + if (length(t1) >= 26) + t1 = copytext(t1, 1, 26) + t1 = dd_replacetext(t1, ">", "'") + src.rname = t1 + else + if (findtext(href, "age", 1, null)) + var/t1 = href_list["age"] + if (t1 == "input") + t1 = input("Please select type in age: 20-45", "Character Generation", null, null) as num + if ((!( src.start ) && t1)) + src.age = max(min(round(text2num(t1)), 45), 20) + else + if (findtext(href, "b_type", 1, null)) + var/t1 = href_list["b_type"] + if (t1 == "input") + t1 = input("Please select a blood type:", "Character Generation", null, null) as null|anything in list( "A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-" ) + if ((!( src.start ) && t1)) + src.b_type = t1 + else + if (findtext(href, "nr_hair", 1, null)) + var/t1 = href_list["nr_hair"] + if (t1 == "input") + t1 = input("Please select red hair component: 1-255", "Character Generation", null, null) as text + if ((!( src.start ) && t1)) + src.nr_hair = max(min(round(text2num(t1)), 255), 1) + else + if (findtext(href, "ng_hair", 1, null)) + var/t1 = href_list["ng_hair"] + if (t1 == "input") + t1 = input("Please select green hair component: 1-255", "Character Generation", null, null) as text + if ((!( src.start ) && t1)) + src.ng_hair = max(min(round(text2num(t1)), 255), 1) + else + if (findtext(href, "nb_hair", 1, null)) + var/t1 = href_list["nb_hair"] + if (t1 == "input") + t1 = input("Please select blue hair component: 1-255", "Character Generation", null, null) as text + if ((!( src.start ) && t1)) + src.nb_hair = max(min(round(text2num(t1)), 255), 1) + else + if (findtext(href, "r_eyes", 1, null)) + var/t1 = href_list["r_eyes"] + if (t1 == "input") + t1 = input("Please select red eyes component: 1-255", "Character Generation", null, null) as text + if ((!( src.start ) && t1)) + src.r_eyes = max(min(round(text2num(t1)), 255), 1) + else + if (findtext(href, "ns_tone", 1, null)) + var/t1 = href_list["ns_tone"] + if (t1 == "input") + t1 = input("Please select skin tone level: 1-220 (1=albino,35=caucasian, 150=black220='very' black)", "Character Generation", null, null) as text + if ((!( src.start ) && t1)) + src.ns_tone = max(min(round(text2num(t1)), 220), 1) + src.ns_tone = -src.ns_tone + 35 + else + if (findtext(href, "g_eyes", 1, null)) + var/t1 = href_list["g_eyes"] + if (t1 == "input") + t1 = input("Please select green eyes component: 1-255", "Character Generation", null, null) as text + if ((!( src.start ) && t1)) + src.g_eyes = max(min(round(text2num(t1)), 255), 1) + else + if (findtext(href, "b_eyes", 1, null)) + var/t1 = href_list["b_eyes"] + if (t1 == "input") + t1 = input("Please select blue eyes component: 1-255", "Character Generation", null, null) as text + if ((!( src.start ) && t1)) + src.b_eyes = max(min(round(text2num(t1)), 255), 1) + else + if (findtext(href, "h_style", 1, null)) + var/t1 = href_list["h_style"] + if (t1 == "input") + t1 = input("Please select hair style", "Character Generation", null, null) as null|anything in list( "Cut Hair", "Short Hair (M)", "Long Hair (F)", "Bald" ) + if ((!( src.start ) && t1)) + src.h_style = t1 + switch(t1) + if("Short Hair (M)") + src.h_style_r = "hair_a" + if("Long Hair (F)") + src.h_style_r = "hair_b" + if("Cut Hair") + src.h_style_r = "hair_c" + else + src.h_style_r = "bald" + else + if (findtext(href, "gender", 1, null)) + if (src.gender == "male") + src.gender = "female" + else + src.gender = "male" + src.stand_icon = new /icon( 'human.dmi', text("[]", src.gender) ) + src.lying_icon = new /icon( 'human.dmi', text("[]-d", src.gender) ) + else + if (findtext(href, "n_gl", 1, null)) + src.need_gl = !( src.need_gl ) + else + if (findtext(href, "b_ep", 1, null)) + src.be_epil = !( src.be_epil ) + else + if (findtext(href, "b_tur", 1, null)) + src.be_tur = !( src.be_tur ) + else + if (findtext(href, "b_co", 1, null)) + src.be_cough = !( src.be_cough ) + else + if (findtext(href, "b_stut", 1, null)) + src.be_stut = !( src.be_stut ) + else + if (findtext(href, "save", 1, null)) + var/savefile/F = new /savefile( text("players/[].sav", src.ckey) ) + F["version"] << savefile_ver + F["rname"] << src.rname + F["gender"] << src.gender + F["age"] << src.age + F["occupation1"] << src.occupation1 + F["occupation2"] << src.occupation2 + F["occupation3"] << src.occupation3 + F["nr_hair"] << src.nr_hair + F["ng_hair"] << src.ng_hair + F["nb_hair"] << src.nb_hair + F["ns_tone"] << src.ns_tone + F["h_style"] << src.h_style + F["h_style_r"] << src.h_style_r + F["r_eyes"] << src.r_eyes + F["g_eyes"] << src.g_eyes + F["b_eyes"] << src.b_eyes + F["b_type"] << src.b_type + F["need_gl"] << src.need_gl + F["be_epil"] << src.be_epil + F["be_tur"] << src.be_tur + F["be_cough"] << src.be_cough + F["be_stut"] << src.be_stut + else + if (findtext(href, "load", 1, null)) + if (fexists(text("players/[].sav", src.ckey))) + var/savefile/F = new /savefile( text("players/[].sav", src.ckey) ) + var/test = null + F["version"] >> test + if (test != savefile_ver) + fdel(text("players/[].sav", src.ckey)) + alert("Your savefile was incompatible with this version and was deleted.", null, null, null, null, null) + return + F["rname"] >> src.rname + F["gender"] >> src.gender + F["age"] >> src.age + F["occupation1"] >> src.occupation1 + F["occupation2"] >> src.occupation2 + F["occupation3"] >> src.occupation3 + F["nr_hair"] >> src.nr_hair + F["ng_hair"] >> src.ng_hair + F["nb_hair"] >> src.nb_hair + F["ns_tone"] >> src.ns_tone + F["h_style"] >> src.h_style + F["h_style_r"] >> src.h_style_r + F["r_eyes"] >> src.r_eyes + F["g_eyes"] >> src.g_eyes + F["b_eyes"] >> src.b_eyes + F["b_type"] >> src.b_type + F["need_gl"] >> src.need_gl + F["be_epil"] >> src.be_epil + F["be_tur"] >> src.be_tur + F["be_cough"] >> src.be_cough + F["be_stut"] >> src.be_stut + else + alert("You do not have a savefile.", null, null, null, null, null) + src.ShowChoices() + if (href_list["mach_close"]) + var/t1 = text("window=[]", href_list["mach_close"]) + src.machine = null + src << browse(null, t1) + if ((href_list["item"] && (!( usr.stat ) && (usr.canmove && (!( usr.restrained() ) && get_dist(src, usr) <= 1))))) + var/obj/equip_e/human/O = new /obj/equip_e/human( ) + O.source = usr + O.target = src + O.item = usr.equipped() + O.s_loc = usr.loc + O.t_loc = src.loc + O.place = href_list["item"] + src.requests += O + spawn( 0 ) + O.process() + return + ..() + return + +/mob/human/show_inv(user as mob) + + user.machine = src + var/dat = text("
\n[]\n\tHead(Mask): []\n\t\tHeadset: []\n\tLeft Hand: []\n\tRight Hand: []\n\tGloves: []\n\tEyes: []\n\tEars: []\n\tHead: []\n\tShoes: []\n\tBelt: []\n\tUniform: []\n\t(Exo)Suit: []\n\tBack: [] []\n\tID: []\n\t[]\n\t[]\n\tEmpty Pockets\nClose\n", src.name, src, (src.wear_mask ? text("[]", src.wear_mask) : "Nothing"), src, (src.w_radio ? text("[]", src.w_radio) : "Nothing"), src, (src.l_hand ? text("[]", src.l_hand) : "Nothing"), src, (src.r_hand ? text("[]", src.r_hand) : "Nothing"), src, (src.gloves ? text("[]", src.gloves) : "Nothing"), src, (src.glasses ? text("[]", src.glasses) : "Nothing"), src, (src.ears ? text("[]", src.ears) : "Nothing"), src, (src.head ? text("[]", src.head) : "Nothing"), src, (src.shoes ? text("[]", src.shoes) : "Nothing"), src, (src.belt ? text("[]", src.belt) : "Nothing"), src, (src.w_uniform ? text("[]", src.w_uniform) : "Nothing"), src, (src.wear_suit ? text("[]", src.wear_suit) : "Nothing"), src, (src.back ? text("[]", src.back) : "Nothing"), ((istype(src.wear_mask, /obj/item/weapon/clothing/mask) && (istype(src.back, /obj/item/weapon/tank) && !( src.internal ))) ? text(" Set Internal", src) : ""), src, (src.wear_id ? text("[]", src.wear_id) : "Nothing"), (src.handcuffed ? text("Handcuffed", src) : text("Not Handcuffed", src)), (src.internal ? text("Remove Internal", src) : ""), src, user, src.name) + user << browse(dat, text("window=mob[];size=300x600", src.name)) + return + +/mob/proc/show_message(msg, type, alt, alt_type) + + if (type) + if ((type & 1 && (src.sdisabilities & 1 || (src.blinded || src.paralysis)))) + if (!( alt )) + return + else + msg = alt + type = alt_type + if ((type & 2 && (src.sdisabilities & 4 || src.ear_deaf))) + if (!( alt )) + return + else + msg = alt + type = alt_type + if ((type & 1 && src.sdisabilities & 1)) + return + src << msg + return + +/mob/proc/findname(msg) + + for(var/M as mob in world) + if (M.rname == text("[]", msg)) + return 1 + //Foreach goto(15) + return 0 + return + +/mob/proc/m_delay() + + return + +/mob/proc/Life() + + return + +/mob/proc/UpdateClothing() + + return + +/mob/proc/death() + + src.timeofdeath = world.time + return ..() + return + +/mob/proc/restrained() + + if (src.handcuffed) + return 1 + return + +/mob/proc/db_click(text, t1) + + var/W = src.equipped() + switch(text) + if("mask") + if (src.wear_mask) + return + if (!( istype(W, /obj/item/weapon/clothing/mask) )) + return + src.u_equip(W) + src.wear_mask = W + if("back") + if ((src.back || !( istype(W, /obj/item/weapon) ))) + return + if (!( W.flags & 1 )) + return + src.u_equip(W) + src.back = W + else + return + +/mob/proc/throw_item() + + var/W = src.equipped() + if (W) + src.u_equip(W) + if (src.client) + src.client.screen -= W + if (usr.stat) + return + W.loc = src.loc + if (istype(W, /obj/item/weapon/grab)) + throw() + else + dropped(src) + if (W) + W.layer = W.initial(W.layer) + for(var/O as mob in viewers(src, null)) + O.show_message(text("\red [] has thrown [].", src, W), 1) + //Foreach goto(133) + W.density = 1 + W.throwing = 1 + W.throwspeed = initial(W.throwspeed) + spawn( 0 ) + W.throwing(src.dir) + return + return + +/mob/proc/swap_hand() + + src.hand = !( src.hand ) + if (!( src.hand )) + src.hands.dir = NORTH + else + src.hands.dir = SOUTH + return + +/mob/proc/drop_item_v() + + if (src.stat == 0) + src.drop_item() + return + +/mob/proc/throw_item_v() + + if (src.stat == 0) + throw_item() + return + +/mob/proc/drop_item() + + var/W = src.equipped() + if (W) + src.u_equip(W) + if (src.client) + src.client.screen -= W + if (W) + W.loc = src.loc + dropped(src) + if (W) + W.layer = initial(W.layer) + return + +/mob/proc/reset_view(A as mob|obj) + + if (src.client) + if (istype(A, /atom/movable)) + src.client.perspective = EYE_PERSPECTIVE + src.client.eye = A + else + if (isturf(src.loc)) + src.eye = src.client.mob + src.client.perspective = MOB_PERSPECTIVE + else + src.client.perspective = EYE_PERSPECTIVE + src.client.eye = src.loc + return + +/mob/proc/who() + set category = "Admin" + + var/total = 0 + usr << "Current Players:" + for(var/M as mob in world) + if (M.client) + total++ + usr << text("\t [] ([])", M, M.client) + //Foreach goto(32) + usr << text("Total Players: []", total) + return + +/mob/proc/list_dna() + set category = "Admin" + + usr << "Registered DNA sequences:" + for(var/M in reg_dna) + usr << text("\t [] = []", M, reg_dna[text("[]", M)]) + //Foreach goto(26) + return + +/mob/proc/equipped() + + if (src.hand) + return src.l_hand + else + return src.r_hand + return + +/mob/proc/show_inv(user as mob) + + user.machine = src + var/dat = text("\n[]
"
+ for(var/t in typesof(/area))
+ master += text("[]\n", t)
+ //Foreach goto(26)
+ src << browse(master)
+ return
+
+/mob/verb/memory()
+
+ src << browse(text("Memory::
[]", src.memory), "window=memory")
+ return
+
+/mob/verb/add_memory(msg as message)
+
+ src.memory += text("[]
", msg)
+ src << browse(text("Memory::
[]", src.memory), "window=memory")
+ return
+
+/mob/verb/help()
+
+ src << browse('help.htm', "window=help")
+ return
+
+/mob/verb/abandon_mob()
+
+ if (!( abandon_allowed ))
+ return
+ if ((src.stat != 2 || !( ticker )))
+ usr << "\blue You must be dead to use this!"
+ return
+ usr << "\blue Please roleplay correctly!"
+ for(var/obj/screen/t as obj in usr.client.screen)
+ if (t.loc == null)
+ t = null
+ del(t)
+ //Foreach goto(66)
+ var/mob/human/M = new /mob/human( )
+ M.key = src.client.key
+ return
+
+/mob/verb/changes()
+
+ src << browse(text("[]
", changes), "window=changes")
+ return
+
+/mob/verb/succumb()
+ set hidden = 1
+
+ if ((src.health < 0 && src.health > -95.0))
+ src.oxyloss += src.health + 99
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ usr << "\blue You have given up life and succumbed to death."
+ return
+
+/mob/verb/say()
+
+ return
+
+/mob/verb/observe()
+
+ if (src.stat != 2)
+ usr << "\blue You must be dead to use this!"
+ return
+ src.client.perspective = EYE_PERSPECTIVE
+ src.client.eye = input("Please, select a player!", "Watch", null, null) as mob in world
+ return
+
+/mob/verb/listen_ooc()
+
+ if (src.client)
+ src.listen_ooc = !( src.client.listen_ooc )
+ if (src.client.listen_ooc)
+ src << "\blue You are now listening to messages on the OOC channel. Don't abuse this!"
+ else
+ src << "\blue You are no longer listening to messages on the OOC channel."
+ return
+
+/mob/verb/ooc(msg as text)
+
+ msg = html_encode(copytext(msg, 1, 128))
+ if (!( msg ))
+ return
+ if ((ooc_allowed && !( src.muted )))
+ for(var/M as mob in world)
+ if ((M.client && M.client.listen_ooc))
+ M << text("OOC: []: []", src.key, msg)
+ //Foreach goto(54)
+ return
+
+/mob/verb/switch_hud()
+
+ src.client.screen -= main_hud.contents
+ src.client.screen -= main_hud2.contents
+ if (src.hud_used == main_hud)
+ src.hud_used = main_hud2
+ src.oxygen.icon = 'screen.dmi'
+ src.toxin.icon = 'screen.dmi'
+ src.internals.icon = 'screen.dmi'
+ src.mach.icon = 'screen.dmi'
+ src.fire.icon = 'screen.dmi'
+ src.healths.icon = 'screen.dmi'
+ src.pullin.icon = 'screen.dmi'
+ src.blind.icon = 'screen.dmi'
+ src.hands.icon = 'screen.dmi'
+ src.flash.icon = 'screen.dmi'
+ src.sleep.icon = 'screen.dmi'
+ src.rest.icon = 'screen.dmi'
+ else
+ src.hud_used = main_hud
+ src.oxygen.icon = 'screen1.dmi'
+ src.toxin.icon = 'screen1.dmi'
+ src.internals.icon = 'screen1.dmi'
+ src.mach.icon = 'screen1.dmi'
+ src.fire.icon = 'screen1.dmi'
+ src.healths.icon = 'screen1.dmi'
+ src.pullin.icon = 'screen1.dmi'
+ src.blind.icon = 'screen1.dmi'
+ src.hands.icon = 'screen1.dmi'
+ src.flash.icon = 'screen1.dmi'
+ src.sleep.icon = 'screen1.dmi'
+ src.rest.icon = 'screen1.dmi'
+ src.client.screen -= src.hud_used.adding
+ src.client.screen += src.hud_used.adding
+ return
+
+/mob/Login()
+
+ src.sight |= SEE_SELF
+ ..()
+ return
+
+/mob/CheckPass(M as mob)
+
+ if ((src.other_mobs && (ismob(M) && M.other_mobs)))
+ return 1
+ else
+ return (!( M.density ) || (!( src.density ) || src.lying))
+ return
+
+/mob/burn(fi_amount)
+
+ for(var/atom/movable/A as mob|obj in src)
+ A.burn(fi_amount)
+ //Foreach goto(15)
+ return
+
+/mob/Topic(href, href_list)
+
+ if (href_list["mach_close"])
+ var/t1 = text("window=[]", href_list["mach_close"])
+ src.machine = null
+ src << browse(null, t1)
+ ..()
+ return
+
+/mob/MouseDrop(M as mob)
+
+ ..()
+ if ((M != usr || (usr == src || get_dist(usr, src) > 1)))
+ return
+ src.show_inv(usr)
+ return
+
+/mob/las_act(flag)
+
+ if (flag == "bullet")
+ if (src.stat != 2)
+ if (istype(src, /mob/human))
+ var/H = src
+ var/dam_zone = pick("chest", "chest", "chest", "diaper", "head")
+ if (H.organs[text("[]", dam_zone)])
+ var/affecting = H.organs[text("[]", dam_zone)]
+ if (affecting.take_damage(51, 0))
+ H.UpdateDamageIcon()
+ else
+ H.UpdateDamage()
+ else
+ H.bruteloss += 51
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ if (prob(80))
+ src.weakened = 2
+ if (flag)
+ if (prob(75))
+ src.stunned = 10
+ else
+ src.weakened = 10
+ else
+ if (src.stat != 2)
+ if (istype(src, /mob/human))
+ var/H = src
+ var/dam_zone = pick("chest", "chest", "chest", "diaper", "head")
+ if (H.organs[text("[]", dam_zone)])
+ var/affecting = H.organs[text("[]", dam_zone)]
+ if (affecting.take_damage(20, 0))
+ H.UpdateDamageIcon()
+ else
+ H.UpdateDamage()
+ else
+ H.bruteloss += 20
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ if (prob(25))
+ src.stunned = 2
+ return
+
+/mob/ghost/proc/infest()
+
+ return
+
+/mob/ghost/Move()
+
+ if (src.stunned)
+ return
+ . = ..()
+ return
+
+/mob/ghost/show_inv()
+
+ return
+ return
+
+/mob/ghost/Bump()
+
+ return
+ return
+
+/mob/ghost/UpdateClothing()
+
+ for(var/i in src.overlays)
+ src.overlays -= i
+ //Foreach goto(17)
+ if (src.wear_mask)
+ if (istype(src.wear_mask, /obj/item/weapon/clothing/mask))
+ var/t1 = src.wear_mask.s_istate
+ if (!( t1 ))
+ t1 = src.icon_state
+ src.overlays += image(list("icon" = 'ghost.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = src.layer))
+ src.wear_mask.screen_loc = "2,3"
+ if (src.r_hand)
+ var/t1 = src.r_hand.s_istate
+ if (!( t1 ))
+ t1 = src.icon_state
+ src.overlays += image(list("icon" = 'r_items.dmi', "icon_state" = t1, "layer" = src.layer))
+ src.r_hand.screen_loc = "1,2"
+ if (src.l_hand)
+ var/t1 = src.l_hand.s_istate
+ if (!( t1 ))
+ t1 = src.icon_state
+ src.overlays += image(list("icon" = 'l_items.dmi', "icon_state" = t1, "layer" = src.layer))
+ src.l_hand.screen_loc = "3,2"
+ if (src.client)
+ src.client.screen -= src.contents
+ src.client.screen += src.contents
+ return
+
+/mob/ghost/Life()
+
+ if (src.stat == 2)
+ death()
+ return
+ src.canmove = 1
+ src.lying = 1
+ src.stat = 0
+ if (src.weakened > 0)
+ src.weakened--
+ src.icon_state = "ghost"
+ else
+ src.icon_state = "blank"
+ if (src.stunned > 0)
+ src.stunned--
+ src.canmove = 0
+ for(var/obj/item/O as obj in src)
+ O.loc = src.loc
+ O.layer = initial(O.layer)
+ src.u_equip(O)
+ //Foreach goto(109)
+ if (src.health < 0)
+ src.stat = 2
+ return
+ return
+
+/mob/ghost/db_click()
+
+ return
+ return
+
+/mob/ghost/equipped()
+
+ return null
+ return
+
+/mob/ghost/m_delay()
+
+ return -100.0
+ return
+
+/mob/ghost/reset_view()
+
+ if (src.client)
+ src.client.eye = src
+ else
+ return ..()
+ return
+
+/mob/ghost/las_act()
+
+ return
+ return
+
+/mob/ghost/ex_act()
+
+ return
+ return
+
+/mob/ghost/attack_hand(M as mob)
+
+ src.infest(M)
+ return
+
+/mob/ghost/attack_paw(M as mob)
+
+ src.infest(M)
+ return
+
+/mob/ghost/death()
+
+ src.stunned = 1
+ ..()
+ return
+
+/mob/ghost/meteorhit()
+
+ return
+ return
+
+/mob/ghost/restrained()
+
+ return 0
+ return
+
+/mob/ghost/attackby(nothing, M as mob)
+
+ src.infest(M)
+ return 0
+ return
+
+/mob/ghost/say(msg as text)
+
+ if (!( msg ))
+ return
+ msg = stutter(msg)
+ if (prob(25))
+ msg = stars(msg)
+ for(var/M as mob in hearers(null, null))
+ M.show_message(msg, 2)
+ //Foreach goto(58)
+ return
+
+/mob/monkey/New()
+
+ spawn( 50 )
+ if (!( src.primary ))
+ var/t1 = rand(1000, 1500)
+ dna_ident += t1
+ if (dna_ident > 65536.0)
+ dna_ident = rand(1, 1500)
+ src.primary = new /obj/dna( null )
+ src.primary.uni_identity = text("[]", dna_ident)
+ while(length(src.primary.uni_identity) < 4)
+ src.uni_identity = text("0[]", src.uni_identity)
+ var/t2 = text("[]", rand(1, 256))
+ if (length(t2) < 2)
+ src.uni_identity = text("[]0[]", src.primary.uni_identity, t2)
+ else
+ src.uni_identity = text("[][]", src.primary.uni_identity, t2)
+ t2 = text("[]", rand(1, 256))
+ if (length(t2) < 2)
+ src.uni_identity = text("[]0[]", src.primary.uni_identity, t2)
+ else
+ src.uni_identity = text("[][]", src.primary.uni_identity, t2)
+ t2 = text("[]", rand(1, 256))
+ if (length(t2) < 2)
+ src.uni_identity = text("[]0[]", src.primary.uni_identity, t2)
+ else
+ src.uni_identity = text("[][]", src.primary.uni_identity, t2)
+ t2 = text("[]", rand(1, 256))
+ if (length(t2) < 2)
+ src.uni_identity = text("[]0[]", src.primary.uni_identity, t2)
+ else
+ src.uni_identity = text("[][]", src.primary.uni_identity, t2)
+ t2 = (src.gender == "male" ? text("[]", rand(1, 124)) : text("[]", rand(127, 250)))
+ if (length(t2) < 2)
+ src.uni_identity = text("[]0[]", src.primary.uni_identity, t2)
+ else
+ src.uni_identity = text("[][]", src.primary.uni_identity, t2)
+ src.primary.spec_identity = "2B6696D2B127E5A4"
+ src.primary.struc_enzyme = "CDEAF5B90AADBC6BA8033DB0A7FD613FA"
+ src.primary.use_enzyme = "C8FFFE7EC09D80AEDEDB9A5A0B4085B61"
+ src.primary.n_chromo = 16
+ src.name = text("monkey ([])", copytext(md5(src.primary.uni_identity), 2, 6))
+ return
+ ..()
+ return
+
+/mob/monkey/Bump(AM as mob|obj, yes)
+
+ spawn( 0 )
+ if ((!( yes ) || src.now_pushing))
+ return
+ ..()
+ if (!( istype(AM, /atom/movable) ))
+ return
+ if (!( src.now_pushing ))
+ src.now_pushing = 1
+ if (!( AM.anchored ))
+ var/t = get_dir(src, AM)
+ step(AM, t)
+ src.now_pushing = null
+ return
+ return
+
+/mob/monkey/Topic(href, href_list)
+
+ if (href_list["mach_close"])
+ var/t1 = text("window=[]", href_list["mach_close"])
+ src.machine = null
+ src << browse(null, t1)
+ if ((href_list["item"] && (!( usr.stat ) && (!( restrained() ) && get_dist(src, usr) <= 1))))
+ var/obj/equip_e/monkey/O = new /obj/equip_e/monkey( )
+ O.source = usr
+ O.target = src
+ O.item = usr.equipped()
+ O.s_loc = usr.loc
+ O.t_loc = src.loc
+ O.place = href_list["item"]
+ src.requests += O
+ spawn( 0 )
+ O.process()
+ return
+ ..()
+ return
+
+/mob/monkey/meteorhit(O as obj)
+
+ for(var/M as mob in viewers(src, null))
+ M.show_message(text("\red [] has been hit with by []", src, O), 1)
+ //Foreach goto(19)
+ if (src.health > 0)
+ var/shielded = 0
+ for(var/obj/item/weapon/shield/S as obj in src)
+ if (S.active)
+ shielded = 1
+ else
+ //Foreach continue //goto(79)
+ src.bruteloss += 30
+ if ((O.icon_state == "flaming" && !( shielded )))
+ src.fireloss += 40
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ return
+
+/mob/monkey/las_act(flag)
+
+ if (flag == "bullet")
+ if (src.stat != 2)
+ src.bruteloss += 60
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ src.weakened = 10
+ if (flag)
+ if (prob(75))
+ src.stunned = 15
+ else
+ src.weakened = 15
+ else
+ if (src.stat != 2)
+ src.bruteloss += 20
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ if (prob(25))
+ src.stunned = 1
+ return
+
+/mob/monkey/hand_p(M as mob)
+
+ if ((M.a_intent == "hurt" && !( istype(src.wear_mask, /obj/item/weapon/clothing/mask/muzzle) )))
+ if ((prob(75) && src.health > 0))
+ for(var/O as mob in viewers(src, null))
+ O.show_message(text("\red The monkey has bit []!", src), 1)
+ //Foreach goto(63)
+ var/damage = rand(1, 5)
+ src.bruteloss += damage
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ else
+ for(var/O as mob in viewers(src, null))
+ O.show_message(text("\red The monkey has attempted to bite []!", src), 1)
+ //Foreach goto(144)
+ return
+
+/mob/monkey/attack_paw(M as mob)
+
+ if (M.a_intent == "help")
+ src.sleeping = 0
+ src.resting = 0
+ for(var/O as mob in viewers(src, null))
+ O.show_message("\blue The monkey shakes the monkey trying to wake him up!", 1)
+ //Foreach goto(47)
+ else
+ if ((O.a_intent == "hurt" && !( istype(src.wear_mask, /obj/item/weapon/clothing/mask/muzzle) )))
+ if ((prob(75) && src.health > 0))
+ for(var/O as mob in viewers(src, null))
+ O.show_message("\red The monkey has bit the monkey!", 1)
+ //Foreach goto(130)
+ var/damage = rand(1, 5)
+ src.bruteloss += damage
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ else
+ for(var/O as mob in viewers(src, null))
+ O.show_message("\red The monkey has attempted to bite the monkey!", 1)
+ //Foreach goto(209)
+ return
+
+/mob/monkey/attack_hand(M as mob)
+
+ if (M.a_intent == "help")
+ src.sleeping = 0
+ src.resting = 0
+ for(var/O as mob in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\blue [] shakes the monkey trying to wake him up!", M), 1)
+ //Foreach goto(47)
+ else
+ if (O.a_intent == "hurt")
+ if ((prob(75) && src.health > 0))
+ for(var/O as mob in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\red [] has punched the monkey!", M), 1)
+ //Foreach goto(135)
+ var/damage = rand(5, 10)
+ if (prob(40))
+ damage = rand(10, 15)
+ if (src.paralysis < 5)
+ src.paralysis = rand(10, 15)
+ spawn( 0 )
+ for(var/O as mob in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\red [] has knocked out the monkey!", M), 1)
+ //Foreach goto(248)
+ return
+ src.bruteloss += damage
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ else
+ for(var/O as mob in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\red [] has attempted to punch the monkey!", M), 1)
+ //Foreach goto(336)
+ else
+ if (O.a_intent == "grab")
+ if (M == src)
+ return
+ var/obj/item/weapon/grab/G = new /obj/item/weapon/grab( M )
+ G.assailant = M
+ if (M.hand)
+ M.l_hand = G
+ else
+ M.r_hand = G
+ G.layer = 20
+ G.affecting = src
+ src.grabbed_by += G
+ G.synch()
+ for(var/O as mob in viewers(src, null))
+ O.show_message(text("\red [] has grabbed the monkey passively!", M), 1)
+ //Foreach goto(502)
+ else
+ if (!( src.paralysis ))
+ if (prob(25))
+ src.paralysis = 2
+ for(var/O as mob in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\red [] has pushed down the monkey!", M), 1)
+ //Foreach goto(571)
+ else
+ drop_item()
+ for(var/O as mob in viewers(src, null))
+ if ((O.client && !( O.blinded )))
+ O.show_message(text("\red [] has disarmed the monkey!", M), 1)
+ //Foreach goto(638)
+ return
+
+/mob/monkey/Stat()
+
+ ..()
+ statpanel("Status")
+ stat(null, text("Intent: []", src.a_intent))
+ stat(null, text("Move Mode: []", src.m_intent))
+ return
+
+/mob/monkey/UpdateClothing()
+
+ ..()
+ for(var/i in src.overlays)
+ src.overlays -= i
+ //Foreach goto(21)
+ if (!( src.lying ))
+ src.icon_state = "monkey1"
+ else
+ src.icon_state = "monkey0"
+ if (src.wear_mask)
+ if (istype(src.wear_mask, /obj/item/weapon/clothing/mask))
+ var/t1 = src.wear_mask.s_istate
+ if (!( t1 ))
+ t1 = src.icon_state
+ src.overlays += image(list("icon" = 'monkey.dmi', "icon_state" = text("[][]", t1, (!( src.lying ) ? null : "2")), "layer" = src.layer))
+ src.wear_mask.screen_loc = "2,3"
+ if (src.r_hand)
+ var/t1 = src.r_hand.s_istate
+ if (!( t1 ))
+ t1 = src.icon_state
+ src.overlays += image(list("icon" = 'r_items.dmi', "icon_state" = t1, "layer" = src.layer))
+ src.r_hand.screen_loc = "1,2"
+ if (src.l_hand)
+ var/t1 = src.l_hand.s_istate
+ if (!( t1 ))
+ t1 = src.icon_state
+ src.overlays += image(list("icon" = 'l_items.dmi', "icon_state" = t1, "layer" = src.layer))
+ src.l_hand.screen_loc = "3,2"
+ if (src.back)
+ if (!( src.lying ))
+ src.overlays += image(list("icon" = 'monkey.dmi', "icon_state" = "back", "layer" = src.layer))
+ else
+ src.overlays += image(list("icon" = 'monkey.dmi', "icon_state" = "back2", "layer" = src.layer))
+ src.back.screen_loc = "3,3"
+ if (src.handcuffed)
+ src.pulling = null
+ if (!( src.lying ))
+ src.overlays += image(list("icon" = 'monkey.dmi', "icon_state" = "handcuff1", "layer" = src.layer))
+ else
+ src.overlays += image(list("icon" = 'monkey.dmi', "icon_state" = "handcuff2", "layer" = src.layer))
+ if (src.client)
+ src.client.screen -= src.contents
+ src.client.screen += src.contents
+ src.client.screen -= src.hud_used.m_ints
+ src.client.screen -= src.hud_used.mov_int
+ if (src.i_select)
+ if (src.intent)
+ src.client.screen += src.hud_used.m_ints
+ src.i_select.screen_loc = src.intent
+ else
+ src.i_select.screen_loc = null
+ if (src.m_select)
+ if (src.m_int)
+ src.client.screen += src.hud_used.mov_int
+ src.m_select.screen_loc = src.m_int
+ else
+ src.m_select.screen_loc = null
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ spawn( 0 )
+ src.show_inv(M)
+ return
+ //Foreach goto(662)
+ return
+
+/mob/monkey/Login()
+
+ if (banned.Find(src.ckey))
+ src.client = null
+ del(src.client)
+ src.client.screen -= main_hud.contents
+ src.client.screen -= main_hud2.contents
+ if (!( src.hud_used ))
+ src.hud_used = main_hud
+ src.next_move = 1
+ if (!( src.rname ))
+ src.rname = src.key
+ src.oxygen = new /obj/screen( null )
+ src.i_select = new /obj/screen( null )
+ src.m_select = new /obj/screen( null )
+ src.toxin = new /obj/screen( null )
+ src.internals = new /obj/screen( null )
+ src.mach = new /obj/screen( null )
+ src.fire = new /obj/screen( null )
+ src.healths = new /obj/screen( null )
+ src.pullin = new /obj/screen( null )
+ src.blind = new /obj/screen( null )
+ src.flash = new /obj/screen( null )
+ src.hands = new /obj/screen( null )
+ src.sleep = new /obj/screen( null )
+ src.rest = new /obj/screen( null )
+ ..()
+ UpdateClothing()
+ src.oxygen.icon_state = "oxy0"
+ src.i_select.icon_state = "selector"
+ src.m_select.icon_state = "selector"
+ src.toxin.icon_state = "toxin0"
+ src.internals.icon_state = "internal0"
+ src.mach.icon_state = null
+ src.fire.icon_state = "fire0"
+ src.healths.icon_state = "health0"
+ src.pullin.icon_state = "pull0"
+ src.blind.icon_state = "black"
+ src.hands.icon_state = "hand"
+ src.flash.icon_state = "blank"
+ src.sleep.icon_state = "sleep0"
+ src.rest.icon_state = "rest0"
+ src.hands.dir = NORTH
+ src.oxygen.name = "oxygen"
+ src.i_select.name = "intent"
+ src.m_select.name = "move"
+ src.toxin.name = "toxin"
+ src.internals.name = "internal"
+ src.mach.name = "Reset Machine"
+ src.fire.name = "fire"
+ src.healths.name = "health"
+ src.pullin.name = "pull"
+ src.blind.name = " "
+ src.hands.name = "hand"
+ src.flash.name = "flash"
+ src.sleep.name = "sleep"
+ src.rest.name = "rest"
+ src.oxygen.screen_loc = "15,12"
+ src.i_select.screen_loc = "14,15"
+ src.m_select.screen_loc = "14,14"
+ src.toxin.screen_loc = "15,10"
+ src.internals.screen_loc = "15,14"
+ src.mach.screen_loc = "14,1"
+ src.fire.screen_loc = "15,8"
+ src.healths.screen_loc = "15,5"
+ src.sleep.screen_loc = "15,3"
+ src.rest.screen_loc = "15,2"
+ src.pullin.screen_loc = "15,1"
+ src.hands.screen_loc = "1,3"
+ src.blind.screen_loc = "1,1 to 15,15"
+ src.flash.screen_loc = "1,1 to 15,15"
+ src.blind.layer = 0
+ src.flash.layer = 17
+ src.sleep.layer = 20
+ src.rest.layer = 20
+ src.client.screen.len = null
+ src.client.screen -= list( src.oxygen, src.i_select, src.m_select, src.toxin, src.internals, src.fire, src.hands, src.healths, src.pullin, src.blind, src.flash, src.rest, src.sleep, src.mach )
+ src.client.screen += list( src.oxygen, src.i_select, src.m_select, src.toxin, src.internals, src.fire, src.hands, src.healths, src.pullin, src.blind, src.flash, src.rest, src.sleep, src.mach )
+ src.client.screen -= src.hud_used.adding
+ src.client.screen += src.hud_used.adding
+ src.client.screen -= src.hud_used.mon_blo
+ src.client.screen += src.hud_used.mon_blo
+ if (!( src.primary ))
+ var/t1 = rand(1000, 1500)
+ dna_ident += t1
+ if (dna_ident > 65536.0)
+ dna_ident = rand(1, 1500)
+ src.primary = new /obj/dna( null )
+ src.primary.uni_identity = text("[]", dna_ident)
+ while(length(src.primary.uni_identity) < 4)
+ src.uni_identity = text("0[]", src.uni_identity)
+ var/t2 = text("[]", rand(1, 256))
+ if (length(t2) < 2)
+ src.uni_identity = text("[]0[]", src.primary.uni_identity, t2)
+ else
+ src.uni_identity = text("[][]", src.primary.uni_identity, t2)
+ t2 = text("[]", rand(1, 256))
+ if (length(t2) < 2)
+ src.uni_identity = text("[]0[]", src.primary.uni_identity, t2)
+ else
+ src.uni_identity = text("[][]", src.primary.uni_identity, t2)
+ t2 = text("[]", rand(1, 256))
+ if (length(t2) < 2)
+ src.uni_identity = text("[]0[]", src.primary.uni_identity, t2)
+ else
+ src.uni_identity = text("[][]", src.primary.uni_identity, t2)
+ t2 = text("[]", rand(1, 256))
+ if (length(t2) < 2)
+ src.uni_identity = text("[]0[]", src.primary.uni_identity, t2)
+ else
+ src.uni_identity = text("[][]", src.primary.uni_identity, t2)
+ t2 = (src.gender == "male" ? text("[]", rand(1, 124)) : text("[]", rand(127, 250)))
+ if (length(t2) < 2)
+ src.uni_identity = text("[]0[]", src.primary.uni_identity, t2)
+ else
+ src.uni_identity = text("[][]", src.primary.uni_identity, t2)
+ src.primary.spec_identity = "2B6696D2B127E5A4"
+ src.primary.struc_enzyme = "CDEAF5B90AADBC6BA8033DB0A7FD613FA"
+ src.primary.use_enzyme = "C8FFFE7EC09D80AEDEDB9A5A0B4085B61"
+ src.primary.n_chromo = 16
+ if (!( src.start ))
+ if ((src.key in list( "Thief jack", "Link43130", "Hutchy2k1", "Easty", "Exadv1" )))
+ src.start = 1
+ src.loc = locate(36, 67, 10)
+ else
+ src.start = 1
+ var/A = locate(/area/start)
+ var/list/L = list( )
+ for(var/T as turf in A)
+ L += T
+ //Foreach goto(1473)
+ src.loc = pick(L)
+ src << browse('help.htm', "window=help")
+ if (((src.key in list( "Exadv1", "Expert Advisor" )) || (world.address == src.client.address || !( src.address ))))
+ src << text("\blue The game ip is byond://[]:[] !", world.address, world.port)
+ src.verbs += /mob/proc/mute
+ src.verbs += /mob/proc/changemessage
+ src.verbs += /mob/proc/boot
+ src.verbs += /mob/proc/changemode
+ src.verbs += /mob/proc/show_ctf
+ src.verbs += /mob/proc/restart
+ src.verbs += /mob/proc/who
+ src.verbs += /mob/proc/change_name
+ src.verbs += /mob/proc/show_help
+ src.verbs += /mob/proc/toggle_ooc
+ src.verbs += /mob/proc/toggle_abandon
+ src.verbs += /mob/proc/toggle_enter
+ src.verbs += /mob/proc/toggle_shuttle
+ src.verbs += /mob/proc/delay_start
+ src.verbs += /mob/proc/make_gift
+ src.verbs += /mob/proc/make_flag
+ src.verbs += /mob/proc/make_pill
+ src.verbs += /mob/proc/ban
+ src.verbs += /mob/proc/unban
+ src.verbs += /mob/proc/secrets
+ src.verbs += /mob/proc/toggle_alter
+ src.verbs += /mob/proc/carboncopy
+ src.verbs += /mob/proc/list_dna
+ src << text("\blue []", world_message)
+ if (!( isturf(src.loc) ))
+ src.client.eye = src.loc
+ src.client.perspective = EYE_PERSPECTIVE
+ src.name = text("monkey ([])", copytext(md5(src.primary.uni_identity), 2, 6))
+ return
+
+/mob/monkey/Move()
+
+ if ((!( src.buckled ) || src.buckled.loc != src.loc))
+ src.buckled = null
+ if (src.buckled)
+ return
+ if (src.restrained())
+ src.pulling = null
+ var/t7 = 1
+ if (src.restrained())
+ for(var/M as mob in range(src, 1))
+ if ((M.pulling == src && (M.stat == 0 && !( restrained() ))))
+ return 0
+ //Foreach goto(93)
+ if ((t7 && (src.pulling && get_dist(src, src.pulling) <= 1)))
+ if (src.pulling.anchored)
+ src.pulling = null
+ var/T = src.loc
+ . = ..()
+ if (!( isturf(src.pulling.loc) ))
+ src.pulling = null
+ return
+ if (!( src.restrained() ))
+ var/diag = get_dir(src, src.pulling)
+ if ((diag - 1) & diag)
+ else
+ diag = null
+ if ((ismob(src.pulling) && (get_dist(src, src.pulling) > 1 || diag)))
+ if (istype(src.pulling, src.type))
+ var/M = src.pulling
+ var/t = M.pulling
+ M.pulling = null
+ step(src.pulling, get_dir(src.pulling.loc, T))
+ M.pulling = t
+ else
+ step(src.pulling, get_dir(src.pulling.loc, T))
+ else
+ src.pulling = null
+ . = ..()
+ if ((src.s_active && !( src.contents.Find(src.s_active) )))
+ src.s_active.close(src)
+ return
+
+/mob/monkey/death()
+
+ if (src.healths)
+ src.healths.icon_state = "health5"
+ src.stat = 2
+ src.canmove = 0
+ if (src.blind)
+ src.blind.layer = 0
+ src.lying = 1
+ src.icon_state = "dead"
+ for(var/M as mob in world)
+ if ((M.client && !( M.stat )))
+ var/cancel = 1
+ //Foreach goto(79)
+ if (!( cancel ))
+ world << "Everyone is dead! Resetting in 30 seconds!"
+ if ((ticker && ticker.timing))
+ ticker.check_win()
+ else
+ spawn( 300 )
+ world.Reboot()
+ return
+ return ..()
+ return
+
+/mob/monkey/Life()
+ set invisibility = 0
+ set background = 1
+
+ var/T = src.loc
+ if (!( locate(/obj/table, src.loc) ))
+ src.layer = MOB_LAYER
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ if (src.stat != 2)
+ src.t_sl_gas = 0
+ src.t_n2 = 0
+ if (!( src.m_flag ))
+ src.last_move = null
+ src.m_flag = null
+ if (src.mach)
+ if (src.machine)
+ src.mach.icon_state = "mach1"
+ else
+ src.mach.icon_state = null
+ if ((src.internal && !( src.contents.Find(src.internal) )))
+ src.internal = null
+ if ((!( src.wear_mask ) || !( src.wear_mask.flags | 8 )))
+ src.internal = null
+ if (istype(T, /turf))
+ var/t = 1.4E-4
+ if (src.health < 20)
+ t = 5.0E-5
+ else
+ if (src.health < 40)
+ t = 1.0E-4
+ if (locate(/obj/move, T))
+ T = locate(/obj/move, T)
+ var/turf_total = (((T.oxygen + T.poison) + T.sl_gas) + T.co2) + T.n2
+ var/obj/substance/gas/G = new /obj/substance/gas( )
+ G.maximum = 10000
+ if (src.internal)
+ src.internal.process(src, G)
+ if (src.wear_mask.flags & 4)
+ turf_add(T, G.tot_gas() * 0.5)
+ turf_take(T, ((t / 2) * turf_total) - tot_gas())
+ else
+ G.turf_take(T, t * turf_total)
+ src.aircheck(G)
+ var/plcheck = src.t_plasma
+ var/oxcheck = src.t_oxygen
+ turf_add(T, G.tot_gas())
+ var/ficheck = src.firecheck(T)
+ else
+ if (istype(T, /obj))
+ var/O = T
+ O.alter_health(src)
+ if ((istype(src.loc, /turf/space) && !( locate(/obj/move, src.loc) )))
+ var/layers = 20
+ if ((istype(src.wear_mask, /obj/item/weapon/clothing/mask) && (!( src.wear_mask.flags & 4 ) && src.flags & 8)))
+ layers -= 5
+ if (layers > oxcheck)
+ oxcheck = layers
+ if ((plcheck && src.health >= 0))
+ if ((src.paralysis <= 0 || src.weakened <= 0))
+ src.toxloss += plcheck
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ else
+ src.toxloss += plcheck
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ if ((oxcheck && src.health >= 0))
+ if ((src.paralysis <= 0 || src.weakened <= 0))
+ src.oxyloss += oxcheck
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ else
+ src.oxyloss += oxcheck
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ else
+ if (src.health >= 0)
+ if (src.oxyloss >= 10)
+ var/amount = max(0.15, 1)
+ src.oxyloss -= amount
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ else
+ src.oxyloss = 0
+ if (ficheck)
+ src.fireloss += ficheck * 10
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ if (src.health <= -100.0)
+ death()
+ else
+ if ((src.sleeping || src.health < 0))
+ if (prob(1))
+ if (src.health <= 20)
+ spawn( 0 )
+ src.emote("gasp")
+ return
+ else
+ spawn( 0 )
+ src.emote("snore")
+ return
+ if (src.health < 0)
+ if (src.rejuv <= 0)
+ src.oxyloss++
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ src.stat = 1
+ if (src.paralysis < 5)
+ src.paralysis = 5
+ else
+ if (src.resting)
+ if (src.weakened < 5)
+ src.weakened = 5
+ else
+ if (src.health < 20)
+ if (prob(5))
+ if (prob(1))
+ if (src.health <= 20)
+ spawn( 0 )
+ src.emote("gasp")
+ return
+ src.stat = 1
+ if (src.paralysis < 2)
+ src.paralysis = 2
+ if (src.rejuv > 0)
+ src.rejuv--
+ if (src.r_epil > 0)
+ src.r_epil--
+ if (src.r_ch_cou > 0)
+ src.r_ch_cou--
+ if (src.r_Tourette > 0)
+ src.r_Tourette--
+ if (src.antitoxs > 0)
+ src.antitoxs--
+ if (src.plasma > 0)
+ src.antitoxs -= 4
+ if (src.plasma > 0)
+ src.plasma--
+ src.blinded = null
+ if (src.drowsyness > 0)
+ src.drowsyness--
+ if (src.paralysis > 1)
+ src.drowsyness -= 0.5
+ else
+ if (src.weakened > 1)
+ src.drowsyness -= 0.25
+ src.eye_blurry = max(2, src.eye_blurry)
+ if (prob(5))
+ src.sleeping = 1
+ src.paralysis = 5
+ if ((src.health > -10.0 && src.drowsyness > 1200))
+ if (src.antitoxs < 1)
+ src.toxloss += plcheck
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ plcheck = 1
+ var/mental_danger = 0
+ if (((src.r_epil > 0 && !( src.disabilities & 2 )) || (src.r_Tourette > 0 && !( src.disabilities & 8 ))))
+ src.stuttering = max(2, src.drowsyness)
+ mental_danger = 1
+ src.drowsyness = max(2, src.drowsyness)
+ if (!( src.paralysis ))
+ if (prob(5))
+ src << "\red You have a seizure!"
+ src.paralysis = 10
+ else
+ if (prob(5))
+ spawn( 0 )
+ src.emote("twitch")
+ return
+ src.stunned = 10
+ else
+ if (prob(30))
+ spawn( 0 )
+ src.emote("drool")
+ return
+ if (src.health > -10.0)
+ var/threshold = 45
+ if (mental_danger)
+ threshold = 15
+ if (src.r_ch_cou > 2700)
+ if (src.antitoxs < 1)
+ src.toxloss += 1
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ plcheck = 1
+ if (prob(15))
+ spawn( 0 )
+ src.emote("twitch")
+ src.stunned = 2
+ return
+ if (src.r_epil > (threshold * 60))
+ if (src.antitoxs < 1)
+ src.toxloss += 1
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ plcheck = 1
+ if (prob(15))
+ spawn( 0 )
+ src.emote("twitch")
+ src.stunned = 2
+ return
+ if (src.r_Tourette > (threshold * 60))
+ if (src.antitoxs < 1)
+ src.toxloss += 1
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ plcheck = 1
+ if (prob(15))
+ spawn( 0 )
+ src.emote("twitch")
+ src.stunned = 2
+ return
+ if (src.antitoxs > 7200)
+ src.toxloss += 1
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ plcheck = 1
+ if (prob(15))
+ spawn( 0 )
+ src.emote("drool")
+ return
+ if (src.health > -50.0)
+ if (src.plasma > 0)
+ if (src.antitoxs < 1)
+ src.toxloss += 1
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ plcheck = 1
+ if (prob(15))
+ spawn( 0 )
+ src.emote("moan")
+ return
+ if (src.stat != 2)
+ if (((src.paralysis + src.stunned) + src.weakened) > 0)
+ if (src.stunned > 0)
+ src.stunned--
+ src.stat = 0
+ if (src.weakened > 0)
+ src.weakened--
+ src.lying = 1
+ src.stat = 0
+ if (src.paralysis > 0)
+ src.paralysis--
+ src.blinded = 1
+ src.lying = 1
+ src.stat = 1
+ src.canmove = 0
+ var/h = src.hand
+ src.hand = 0
+ drop_item()
+ src.hand = 1
+ drop_item()
+ src.hand = h
+ else
+ src.canmove = 1
+ src.lying = 0
+ src.stat = 0
+ else
+ src.lying = 1
+ src.blinded = 1
+ src.stat = 2
+ src.canmove = 0
+ var/add_weight = 0
+ if (istype(src.l_hand, /obj/item/weapon/grab))
+ add_weight += 1250000.0
+ if (istype(src.r_hand, /obj/item/weapon/grab))
+ add_weight += 1250000.0
+ if (locate(/obj/item/weapon/grab, src.grabbed_by))
+ var/a_grabs = 0
+ for(var/obj/item/weapon/grab/G as obj in src.grabbed_by)
+ G.process()
+ if (G)
+ if (G.state > 1)
+ a_grabs++
+ if ((G.state > 2 && src.loc == G.assailant.loc))
+ src.density = 0
+ src.lying = 0
+ switch(G.assailant.dir)
+ if(1.0)
+ src.pixel_y = 8
+ if(2.0)
+ src.pixel_y = -8.0
+ if(4.0)
+ src.pixel_x = 8
+ if(8.0)
+ src.pixel_x = -8.0
+ else
+ //Foreach goto(2333)
+ src.weight = ((((src.grabbed_by.len - a_grabs) / 2) + 1) * 1250000.0) + (a_grabs * 2500000.0)
+ else
+ if (src.lying)
+ src.weight = add_weight + 2500000.0
+ else
+ src.weight = add_weight + 1250000.0
+ if (src.stuttering > 0)
+ src.stuttering--
+ if (src.eye_blind > 0)
+ src.eye_blind--
+ src.blinded = 1
+ if (src.ear_deaf > 0)
+ src.ear_deaf--
+ else
+ if (src.ear_damage < 25)
+ src.ear_damage -= 0.05
+ src.ear_damage = max(src.ear_damage, 0)
+ if (src.buckled)
+ src.lying = 0
+ src.density = !( src.lying )
+ if (src.lying)
+ src.weight = 5000000.0
+ else
+ src.weight = 2500000.0
+ if (src.sdisabilities & 1)
+ src.blinded = 1
+ if (src.eye_blurry > 0)
+ src.eye_blurry--
+ src.eye_blurry = max(0, src.eye_blurry)
+ if (src.client)
+ src.client.screen -= main_hud.g_dither
+ if (istype(src.wear_mask, /obj/item/weapon/clothing/mask/gasmask))
+ src.client.screen += main_hud.g_dither
+ if (src.mach)
+ if (src.machine)
+ src.mach.icon_state = "mach1"
+ else
+ src.mach.icon_state = "blank"
+ if (src.sleep)
+ src.sleep.icon_state = text("sleep[]", src.sleeping)
+ if (src.rest)
+ src.rest.icon_state = text("rest[]", src.resting)
+ if (src.healths)
+ if (src.stat < 2)
+ if (src.health >= 100)
+ src.healths.icon_state = "health0"
+ else
+ if (src.health >= 75)
+ src.healths.icon_state = "health1"
+ else
+ if (src.health >= 50)
+ src.healths.icon_state = "health2"
+ else
+ if (src.health > 20)
+ src.healths.icon_state = "health3"
+ else
+ src.healths.icon_state = "health4"
+ else
+ src.healths.icon_state = "health5"
+ if (src.pullin)
+ if (src.pulling)
+ src.pullin.icon_state = "pull1"
+ else
+ src.pullin.icon_state = "pull0"
+ if (src.fire)
+ if (ficheck)
+ src.fire.icon_state = "fire1"
+ else
+ src.fire.icon_state = "fire0"
+ if (src.toxin)
+ if (plcheck)
+ src.toxin.icon_state = "toxin1"
+ else
+ src.toxin.icon_state = "toxin0"
+ if (src.oxygen)
+ if (oxcheck)
+ src.oxygen.icon_state = "oxy1"
+ else
+ src.oxygen.icon_state = "oxy0"
+ src.client.screen -= src.hud_used.blurry
+ src.client.screen -= src.hud_used.vimpaired
+ if ((src.blind && src.stat != 2))
+ if (src.blinded)
+ src.blind.layer = 18
+ else
+ src.blind.layer = 0
+ if (src.eye_blurry)
+ src.client.screen -= src.hud_used.blurry
+ src.client.screen += src.hud_used.blurry
+ else
+ src.client.screen -= src.hud_used.blurry
+ if (src.stat != 2)
+ if (src.machine)
+ if (!( src.machine.check_eye(src) ))
+ src.reset_view(null)
+ else
+ reset_view(null)
+ else
+ if ((src.canmove && (prob(10) && isturf(src.loc))))
+ step(src, pick(NORTH, SOUTH, EAST, WEST))
+ if (prob(10))
+ src.emote(pick("drool", "chimper", "scratch", "tail", "sit", "jump"))
+ else
+ if (prob(10))
+ var/H = locate(/mob/human, oview(1, null))
+ if (istype(H, /mob/human))
+ src.a_intent = "hurt"
+ spawn( 0 )
+ H.attack_paw(src)
+ return
+ if (src.primary)
+ src.primary.cleanup()
+ src.UpdateClothing()
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ return
+
+/mob/monkey/verb/removeinternal()
+
+ src.internal = null
+ return
+
+/mob/monkey/proc/aircheck(G as obj)
+
+ src.t_oxygen = 0
+ src.t_plasma = 0
+ if (G)
+ var/a_oxygen = G.oxygen * 0.7
+ var/a_plasma = G.plasma
+ var/a_sl_gas = G.sl_gas * 0.7
+ G.oxygen -= a_oxygen
+ G.plasma -= a_plasma
+ G.sl_gas -= a_sl_gas
+ if (a_oxygen < 67.032)
+ src.t_oxygen = round((67.032 - a_oxygen) / 5)
+ if (G.co2 > 5)
+ var/t = round((G.co2 - 5) / 5)
+ if (G.co2 > 25)
+ src.paralysis = max(src.paralysis, 3)
+ if (G.co2 > 50)
+ t = 50
+ src.t_oxygen = max(src.t_oxygen, t)
+ if (a_plasma > 5)
+ src.t_plasma = (round((src.t_plasma - 5) / 10)) + 1
+ if (a_sl_gas > 10)
+ src.weakened = max(src.weakened, 3)
+ if (G.co2 > 40)
+ src.paralysis = max(src.paralysis, 3)
+ G.co2 += a_oxygen * 0.6
+ return
+
+/mob/monkey/proc/firecheck(T as turf)
+
+ if (T.firelevel < 900000.0)
+ return 0
+ var/total = 0
+ if (src.wear_mask)
+ if (T.firelevel > src.wear_mask.s_fire)
+ total += 0.25
+ else
+ total += 0.25
+ return total
+ return
+
+/mob/monkey/proc/emote(act)
+
+ var/param = null
+ if (findtext(act, "-", 1, null))
+ var/t1 = findtext(act, "-", 1, null)
+ param = copytext(act, t1 + 1, length(act) + 1)
+ act = copytext(act, 1, t1)
+ var/muzzled = istype(src.wear_mask, /obj/item/weapon/clothing/mask/muzzle)
+ var/m_type = 1
+ switch(act)
+ if("sign")
+ if (!( restrained() ))
+ var/message = text("The monkey signs[].", (text2num(param) ? text(" the number []", text2num(param)) : null))
+ m_type = 1
+ if("scratch")
+ if (!( restrained() ))
+ message = "The monkey scratches."
+ m_type = 1
+ if("whimper")
+ if (!( muzzled ))
+ message = "The monkey whimpers."
+ m_type = 2
+ if("roar")
+ if (!( muzzled ))
+ message = "The monkey roars."
+ m_type = 2
+ if("tail")
+ message = "The monkey waves his tail."
+ m_type = 1
+ if("gasp")
+ message = "The monkey gasps."
+ m_type = 2
+ if("drool")
+ message = "The monkey drools."
+ m_type = 1
+ if("paw")
+ if (!( restrained() ))
+ message = "The monkey flails his paw."
+ m_type = 1
+ if("scretch")
+ if (!( muzzled ))
+ message = "The monkey scretches."
+ m_type = 2
+ if("choke")
+ message = "The monkey chokes."
+ m_type = 2
+ if("moan")
+ message = "The monkey moans!"
+ m_type = 2
+ if("nod")
+ message = "The monkey nods his head."
+ m_type = 1
+ if("sit")
+ message = "The monkey sits down."
+ m_type = 1
+ if("sway")
+ message = "The monkey sways around dizzily."
+ m_type = 1
+ if("sulk")
+ message = "The monkey sulks down sadly."
+ m_type = 1
+ if("twitch")
+ message = "The monkey twitches violently."
+ m_type = 1
+ if("dance")
+ if (!( restrained() ))
+ message = "The monkey dances around happily."
+ m_type = 1
+ if("roll")
+ if (!( restrained() ))
+ message = "The monkey rolls."
+ m_type = 1
+ if("shake")
+ message = "The monkey shakes his head."
+ m_type = 1
+ if("gnarl")
+ if (!( muzzled ))
+ message = "The monkey gnarls and shows his teeth.."
+ m_type = 2
+ if("jump")
+ message = "The monkey jumps!"
+ m_type = 1
+ if("help")
+ src << "choke, dance, drool, gasp, gnarl, jump, paw, moan, nod, roar, roll, scratch,\nscretch, shake, sign-#, sit, sulk, sway, tail, twitch, whimper"
+ else
+ src << text("Invalid Emote: []", act)
+ if ((message && src.stat == 0))
+ if (m_type & 1)
+ for(var/O as mob in viewers(src, null))
+ O.show_message(message, m_type)
+ //Foreach goto(703)
+ else
+ for(var/O as mob in hearers(src, null))
+ O.show_message(message, m_type)
+ //Foreach goto(746)
+ return
+
+/mob/monkey/say(message as text)
+
+ if (src.muted)
+ return
+ message = copytext(message, 1, 128)
+ if (src.stat == 2)
+ for(var/M as mob in world)
+ if (M.stat == 2)
+ M << text("[] []: []", src, (src.stat > 1 ? "\[dead \]" : ""), message)
+ //Foreach goto(50)
+ return
+ if ((copytext(message, 1, 2) == "*" && !( src.stat )))
+ src.emote(copytext(message, 2, length(message) + 1))
+ return
+ if ((!( message ) || istype(src.wear_mask, /obj/item/weapon/clothing/mask/muzzle)))
+ return
+ if (src.stat < 2)
+ var/list/L = list( )
+ var/pre = copytext(message, 1, 4)
+ var/italics = 0
+ var/obj_range = null
+ if (pre == "\[r\]")
+ message = copytext(message, 4, length(message) + 1)
+ if (src.r_hand)
+ src.r_hand.talk_into(usr, message)
+ L += hearers(1, null)
+ italics = 1
+ obj_range = 1
+ else
+ if (pre == "\[l\]")
+ message = copytext(message, 4, length(message) + 1)
+ if (src.l_hand)
+ src.l_hand.talk_into(usr, message)
+ L += hearers(1, null)
+ italics = 1
+ obj_range = 1
+ else
+ if (pre == "\[w\]")
+ message = copytext(message, 4, length(message) + 1)
+ L += hearers(1, null)
+ italics = 1
+ obj_range = 1
+ else
+ L += hearers(null, null)
+ pre = null
+ L -= src
+ L += src
+ if (italics)
+ message = text("[]", message)
+ for(var/M as mob in L)
+ if (istype(M, src.type))
+ M.show_message(text("[]: []", src, message), 2)
+ else
+ M.show_message(text("[] chimpers.", src), 2)
+ //Foreach goto(503)
+ for(var/obj/O as obj in view(obj_range, null))
+ spawn( 0 )
+ if (O)
+ O.hear_talk(usr, message)
+ return
+ //Foreach goto(580)
+ for(var/M as mob in world)
+ if (M.stat > 1)
+ M << text("[] []: []", src, (src.stat > 1 ? "\[dead \]" : ""), message)
+ //Foreach goto(637)
+ return
+
+/mob/monkey/examine()
+ set src in oview()
+
+ usr << "\blue *---------*"
+ usr << text("\blue This is \icon[] []!", src, src.name)
+ if (src.handcuffed)
+ usr << text("\blue \t[] is handcuffed! \icon[]", src.name, src.handcuffed)
+ if (src.wear_mask)
+ usr << text("\blue \t[] has a \icon[] [] on \his[] head!", src.name, src.wear_mask, src.wear_mask.name, src)
+ if (src.l_hand)
+ usr << text("\blue \t[] has a \icon[] [] in \his[] left hand!", src.name, src.l_hand, src.l_hand.name, src)
+ if (src.r_hand)
+ usr << text("\blue [] has a \icon[] [] in \his[] right hand!", src.name, src.r_hand, src.r_hand.name, src)
+ if (src.back)
+ usr << text("\blue [] has a \icon[] [] on \his[] back!", src.name, src.back, src.back.name, src)
+ if (src.bruteloss)
+ if (src.bruteloss < 30)
+ usr << text("\red [] looks slightly bruised!", src.name)
+ else
+ usr << text("\red [] looks severely bruised!", src.name)
+ if (src.fireloss)
+ if (src.fireloss < 30)
+ usr << text("\red [] looks slightly burnt!", src.name)
+ else
+ usr << text("\red [] looks severely burnt!", src.name)
+ return
+
+/mob/monkey/ex_act(severity)
+
+ flick("flash", src.flash)
+ switch(severity)
+ if(1.0)
+ if (src.stat != 2)
+ src.bruteloss += 200
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ if(2.0)
+ if (src.stat != 2)
+ src.bruteloss += 60
+ src.fireloss += 60
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ if(3.0)
+ if (src.stat != 2)
+ src.bruteloss += 30
+ src.health = (((100 - src.oxyloss) - src.toxloss) - src.fireloss) - src.bruteloss
+ if (prob(50))
+ src.paralysis += 10
+ else
+ return
+
+/atom/movable/Move(NewLoc, direct)
+
+ if (direct & (direct - 1))
+ if (direct & 1)
+ if (direct & 4)
+ if (step(src, NORTH))
+ step(src, EAST)
+ else
+ if (step(src, EAST))
+ step(src, NORTH)
+ else
+ if (direct & 8)
+ if (step(src, NORTH))
+ step(src, WEST)
+ else
+ if (step(src, WEST))
+ step(src, NORTH)
+ else
+ if (direct & 2)
+ if (direct & 4)
+ if (step(src, SOUTH))
+ step(src, EAST)
+ else
+ if (step(src, EAST))
+ step(src, SOUTH)
+ else
+ if (direct & 8)
+ if (step(src, SOUTH))
+ step(src, WEST)
+ else
+ if (step(src, WEST))
+ step(src, SOUTH)
+ else
+ ..()
+ return
+
+/atom/movable/verb/pull()
+ set src in oview(1)
+
+ if (!( usr ))
+ return
+ if (!( src.anchored ))
+ usr.pulling = src
+ return
+
+/atom/verb/examine()
+ set src in oview(1)
+
+ if (!( usr ))
+ return
+ usr << src.desc
+ return
+
+/client/Northeast()
+
+ src.mob.swap_hand()
+ return
+
+/client/Southeast()
+
+ var/W = src.mob.equipped()
+ if (W)
+ W.attack_self(src.mob)
+ return
+
+/client/Northwest()
+
+ src.mob.drop_item_v()
+ return
+
+/client/Southwest()
+
+ src.mob.throw_item_v()
+ return
+
+/client/Center()
+
+ if (isobj(src.mob.loc))
+ var/O = src.loc
+ if (src.canmove)
+ return O.relaymove(src.mob, 16)
+ return
+
+/client/Move(n, direct)
+
+ if (src.moving)
+ return 0
+ if (world.time < src.move_delay)
+ return
+ if (!( src.mob ))
+ return
+ if (src.mob.stat == 2)
+ return
+ if (src.mob.monkeyizing)
+ return
+ var/is_monkey = istype(src.mob, /mob/monkey)
+ if (locate(/obj/item/weapon/grab, locate(/obj/item/weapon/grab, src.mob.grabbed_by.len)))
+ var/list/grabbing = list( )
+ if (istype(src.mob.l_hand, /obj/item/weapon/grab))
+ var/G = src.l_hand
+ grabbing += G.affecting
+ if (istype(src.mob.r_hand, /obj/item/weapon/grab))
+ var/G = src.r_hand
+ grabbing += G.affecting
+ for(var/obj/item/weapon/grab/G as obj in src.mob.grabbed_by)
+ if (G.state == 1)
+ if (!( grabbing.Find(G.assailant) ))
+ G = null
+ del(G)
+ else
+ if (grabbing.state == 2)
+ src.move_delay = world.time + 10
+ if ((prob(25) && (!( is_monkey ) || prob(25))))
+ for(var/O as mob in viewers(src.mob, null))
+ O.show_message(text("\red [] has broken free of []'s grip!", src.mob, G.assailant), 1)
+ //Foreach goto(309)
+ G = null
+ del(G)
+ else
+ return
+ else
+ if (O.state == 2)
+ src.move_delay = world.time + 10
+ if ((prob(5) && (!( is_monkey ) || prob(25))))
+ for(var/O as mob in viewers(src.mob, null))
+ O.show_message(text("\red [] has broken free of []'s headlock!", src.mob, G.assailant), 1)
+ //Foreach goto(423)
+ G = null
+ del(G)
+ else
+ return
+ //Foreach goto(189)
+ if (src.mob.canmove)
+ var/j_pack = 0
+ if ((istype(src.loc, /turf/space) && !( locate(/obj/move, src.loc) )))
+ if (!( src.mob.restrained() ))
+ if (!( (locate(/obj/grille, oview(1, src.mob)) || locate(/turf/station, oview(1, src.mob))) ))
+ if (istype(src.mob.back, /obj/item/weapon/tank/jetpack))
+ var/J = src.back
+ j_pack = J.allow_thrust(100, src.mob)
+ var/obj/effects/sparks/ion_trails/I = new /obj/effects/sparks/ion_trails( src.mob.loc )
+ flick("ion_fade", I)
+ I.icon_state = "blank"
+ spawn( 20 )
+ I = null
+ del(I)
+ return
+ if (!( j_pack ))
+ return 0
+ else
+ return 0
+ else
+ return 0
+ if (isturf(src.mob.loc))
+ src.move_delay = world.time
+ if ((j_pack && j_pack < 1))
+ src.move_delay += 5
+ switch(src.mob.m_intent)
+ if("run")
+ if (src.drowsyness > 0)
+ src.move_delay += 6
+ src.move_delay += 1
+ if("face")
+ src.dir = direct
+ return
+ if("walk")
+ src.move_delay += 7
+ else
+ src.move_delay += src.mob.m_delay()
+ src.move_delay += round((100 - src.mob.health) / 20)
+ if (src.mob.restrained())
+ for(var/M as mob in range(src.mob, 1))
+ if (((M.pulling == src.mob && (!( M.restrained() ) && M.stat == 0)) || locate(/obj/item/weapon/grab, src.mob.grabbed_by.len)))
+ src << "\blue You're restrained! You can't move!"
+ return 0
+ //Foreach goto(853)
+ src.moving = 1
+ if (locate(/obj/item/weapon/grab, src.mob))
+ src.move_delay = max(src.move_delay, world.time + 7)
+ var/L = src.mob.ret_grab()
+ if (istype(L, (List:0)))
+ if (L.len == 2)
+ L -= src.mob
+ var/M = L[1]
+ if ((get_dist(src.mob, M) <= 1 || M.loc == src.mob.loc))
+ var/T = src.mob.loc
+ . = ..()
+ if (isturf(M.loc))
+ var/diag = get_dir(src.mob, M)
+ if ((diag - 1) & diag)
+ else
+ diag = null
+ if ((get_dist(src.mob, M) > 1 || diag))
+ step(M, get_dir(M.loc, T))
+ else
+ for(var/M as mob in L)
+ M.other_mobs = 1
+ if (src.mob != M)
+ M.animate_movement = 3
+ //Foreach goto(1163)
+ for(var/M as mob in L)
+ spawn( 0 )
+ step(M, direct)
+ return
+ spawn( 1 )
+ M.other_mobs = null
+ M.animate_movement = 1
+ return
+ //Foreach goto(1214)
+ else
+ . = ..()
+ src.moving = null
+ return .
+ else
+ if (isobj(src.loc))
+ var/O = src.loc
+ if (src.canmove)
+ return O.relaymove(src.mob, direct)
+ else
+ return
+ return
+
+/client/proc/show_panel()
+
+ if (src.holder)
+ src.holder.update()
+ return
+
+/client/New()
+
+ if (banned.Find(src.ckey))
+ src = null
+ del(src)
+ return
+ return
+ world << text("[] has logged in!", src)
+ if (((world.address == src.address || !( src.address )) && !( host )))
+ host = src.key
+ world.update_stat()
+ ..()
+ spawn( 50 )
+ if (admins.Find(src.ckey))
+ src.holder = new /obj/admins( src )
+ src.holder.rank = admins[text("[]", src.ckey)]
+ switch(admins[text("[]", src.ckey)])
+ if("Primary Administrator")
+ src.holder.level = 5
+ if("Master Administrator")
+ src.holder.level = 4
+ if("Administrator")
+ src.holder.level = 3
+ if("Supervisor")
+ src.holder.level = 2
+ if("Moderator")
+ src.holder.level = 1
+ if("Game Master")
+ src.holder.level = 0
+ if("Banned")
+ src = null
+ del(src)
+ return
+ else
+ src.holder = null
+ del(src.holder)
+ if (src.holder)
+ src.holder.owner = src
+ src.verbs += /client/proc/show_panel
+ return
+ return
+
+/client/Del()
+
+ if (banned.Find(src.ckey))
+ ..()
+ return
+ world << text("[] has logged out!", src)
+ ..()
+ src.holder = null
+ del(src.holder)
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/mob.dmi b/ss13-40.93.2-decomp/spacestation13/mob.dmi
new file mode 100644
index 0000000..c3c2b25
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/mob.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/monkey.dmi b/ss13-40.93.2-decomp/spacestation13/monkey.dmi
new file mode 100644
index 0000000..7a1507c
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/monkey.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/pipes.dmi b/ss13-40.93.2-decomp/spacestation13/pipes.dmi
new file mode 100644
index 0000000..b61dd6b
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/pipes.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/plasma.dmi b/ss13-40.93.2-decomp/spacestation13/plasma.dmi
new file mode 100644
index 0000000..7a58107
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/plasma.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/r_items.dmi b/ss13-40.93.2-decomp/spacestation13/r_items.dmi
new file mode 100644
index 0000000..7a34610
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/r_items.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/reg_pipe.dmi b/ss13-40.93.2-decomp/spacestation13/reg_pipe.dmi
new file mode 100644
index 0000000..0857633
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/reg_pipe.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/screen.dmi b/ss13-40.93.2-decomp/spacestation13/screen.dmi
new file mode 100644
index 0000000..cadfe1f
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/screen.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/screen1.dmi b/ss13-40.93.2-decomp/spacestation13/screen1.dmi
new file mode 100644
index 0000000..3f38319
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/screen1.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/security.dmi b/ss13-40.93.2-decomp/spacestation13/security.dmi
new file mode 100644
index 0000000..93c4aba
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/security.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/shards.dmi b/ss13-40.93.2-decomp/spacestation13/shards.dmi
new file mode 100644
index 0000000..fa5140b
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/shards.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/shuttle.dm b/ss13-40.93.2-decomp/spacestation13/shuttle.dm
new file mode 100644
index 0000000..9f912af
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/shuttle.dm
@@ -0,0 +1,327 @@
+
+/obj/machinery/computer/prison_shuttle/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(58)
+ src.icon_state = "broken"
+ if(3.0)
+ if (prob(25))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(109)
+ src.icon_state = "broken"
+ else
+ return
+
+/obj/machinery/computer/prison_shuttle/verb/take_off()
+ set src in oview(1)
+
+ if ((usr.stat || usr.restrained()))
+ return
+ src.add_fingerprint(usr)
+ if (prison_entered)
+ var/A = locate(/area/shuttle)
+ for(var/T as turf in A)
+ if (T.z == 1)
+ for(var/atom/movable/AM as mob|obj in T)
+ AM.z = 12
+ //Foreach goto(96)
+ var/U = locate(T.x, T.y, 12)
+ U.oxygen = T.oxygen
+ U.oldoxy = T.oldoxy
+ U.tmpoxy = T.tmpoxy
+ U.poison = T.poison
+ U.oldpoison = T.oldpoison
+ U.tmppoison = T.tmppoison
+ U.co2 = T.co2
+ U.oldco2 = T.oldco2
+ U.tmpco2 = T.tmpco2
+ T = null
+ del(T)
+ //Foreach goto(62)
+ prison_entered = null
+ else
+ if (!( prison_entered ))
+ if (ticker.shuttle_location != 1)
+ var/A = locate(/area/shuttle_prison)
+ for(var/T as turf in A)
+ if (T.z == 12)
+ for(var/atom/movable/AM as mob|obj in T)
+ AM.z = 1
+ //Foreach goto(346)
+ var/U = locate(T.x, T.y, 1)
+ U.oxygen = T.oxygen
+ U.oldoxy = T.oldoxy
+ U.tmpoxy = T.tmpoxy
+ U.poison = T.poison
+ U.oldpoison = T.oldpoison
+ U.tmppoison = T.tmppoison
+ U.co2 = T.co2
+ U.oldco2 = T.oldco2
+ U.tmpco2 = T.tmpco2
+ T = null
+ del(T)
+ //Foreach goto(312)
+ prison_entered = 1
+ else
+ usr << "\blue There is an obstructing shuttle!"
+ return
+ return
+
+/obj/machinery/computer/prison_shuttle/verb/restabalize()
+ set src in oview(1)
+
+ viewers(null, null) << "\red Restabalizing prison shuttle atmosphere!"
+ var/A = locate(/area/shuttle_prison)
+ for(var/obj/move/T as obj in A)
+ T.firelevel = 0
+ T.oxygen = 756000.0
+ T.oldoxy = 756000.0
+ T.tmpoxy = 756000.0
+ T.poison = 0
+ T.oldpoison = 0
+ T.tmppoison = 0
+ T.co2 = 0
+ T.oldco2 = 0
+ T.tmpco2 = 0
+ T.sl_gas = 0
+ T.osl_gas = 0
+ T.tsl_gas = 0
+ T.n2 = 2844000.0
+ T.on2 = 2844000.0
+ T.tn2 = 2844000.0
+ T.heat = 9.8892006E8
+ T.oheat = 9.8892006E8
+ T.theat = 9.8892006E8
+ //Foreach goto(40)
+ viewers(null, null) << "\red Prison shuttle Restabalized!"
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/computer/shuttle/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(58)
+ src.icon_state = "broken"
+ if(3.0)
+ if (prob(25))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(109)
+ src.icon_state = "broken"
+ else
+ return
+
+/obj/machinery/computer/shuttle/verb/restabalize()
+ set src in oview(1)
+
+ world << "\red Restabalizing shuttle atmosphere!"
+ var/A = locate(/area/shuttle)
+ for(var/obj/move/T as obj in A)
+ T.firelevel = 0
+ T.oxygen = 756000.0
+ T.oldoxy = 756000.0
+ T.tmpoxy = 756000.0
+ T.poison = 0
+ T.oldpoison = 0
+ T.tmppoison = 0
+ T.co2 = 0
+ T.oldco2 = 0
+ T.tmpco2 = 0
+ T.sl_gas = 0
+ T.osl_gas = 0
+ T.tsl_gas = 0
+ T.n2 = 2844000.0
+ T.on2 = 2844000.0
+ T.tn2 = 2844000.0
+ T.heat = 9.8892006E8
+ T.oheat = 9.8892006E8
+ T.theat = 9.8892006E8
+ //Foreach goto(35)
+ world << "\red Shuttle Restabalized!"
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/computer/shuttle/verb/hijack()
+ set src in oview(1)
+
+ if ((!( ticker ) || ticker.shuttle_location != 10))
+ return
+ if (usr != ticker.killer)
+ return
+ world << "\blue Alert: The shuttle is has been hijacked prematurely by the traitor!"
+ ticker.timing = 0
+ ticker.check_win()
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/computer/shuttle/attackby(W as obj, user as mob)
+
+ if ((!( istype(W, /obj/item/weapon/card/id) ) || (!( ticker ) || (ticker.shuttle_location == 10 || !( user )))))
+ return
+ if (W.access_level < 1)
+ user << text("The access level ([]) of [] card is not high enough. (It must be at least level 1.)", W.access_level, W.registered)
+ return
+ var/choice = alert(user, text("Would you like to (un)authorize a shortened launch time? [] authorization\s are still needed. Use abort to cancel all authorizations.", src.auth_need - src.authorized.len), "Shuttle Launch", "Authorize", "Repeal", "Abort")
+ switch(choice)
+ if("Authorize")
+ src.authorized -= W.registered
+ src.authorized += W.registered
+ if ((src.auth_need - src.authorized.len) > 0)
+ world << text("\blue Alert: [] authorizations needed until shuttle is launched early", src.auth_need - src.authorized.len)
+ else
+ world << "\blue Alert: Shuttle launch time shortened to 10 seconds!"
+ ticker.timeleft = 100
+ src.authorized = null
+ del(src.authorized)
+ src.authorized = list( )
+ if("Repeal")
+ src.authorized -= W.registered
+ world << text("\blue Alert: [] authorizations needed until shuttle is launched early", src.auth_need - src.authorized.len)
+ if("Abort")
+ world << "\blue All authorizations to shorting time for shuttle launch have been revoked!"
+ src.len = 0
+ src.authorized = list( )
+ else
+ return
+
+/obj/shut_controller/proc/rotate(direct)
+
+ var/SE_X = 1
+ var/SE_Y = 1
+ var/SW_X = 1
+ var/SW_Y = 1
+ var/NE_X = 1
+ var/NE_Y = 1
+ var/NW_X = 1
+ var/NW_Y = 1
+ for(var/obj/move/M as obj in src.parts)
+ if (M.x < SW_X)
+ SW_X = M.x
+ if (M.x > SE_X)
+ SE_X = M.x
+ if (M.y < SW_Y)
+ SW_Y = M.y
+ if (M.y > NW_Y)
+ NW_Y = M.y
+ if (M.y > NE_Y)
+ NE_Y = M.y
+ if (M.y < SE_Y)
+ SE_Y = M.y
+ if (M.x > NE_X)
+ NE_X = M.x
+ if (M.x < NW_X)
+ NW_X = M.y
+ //Foreach goto(75)
+ var/length = abs(NE_X - NW_X)
+ var/width = abs(NE_Y - SE_Y)
+ var/random = pick(src.parts)
+ var/s_direct = null
+ switch(s_direct)
+ if(1.0)
+ switch(direct)
+ if(90.0)
+ var/tx = SE_X
+ var/ty = SE_Y
+ var/t_z = random.z
+ for(var/obj/move/M as obj in src.parts)
+ M.ty = -M.x - tx
+ M.tx = -M.y - ty
+ var/T = locate(M.x, M.y, 11)
+ relocate(T)
+ M.ty = -M.ty
+ M.tx += length
+ //Foreach goto(374)
+ for(var/obj/move/M as obj in src.parts)
+ M.tx += tx
+ M.ty += ty
+ var/T = locate(M.tx, M.ty, t_z)
+ relocate(T, 90)
+ //Foreach goto(468)
+ if(-90.0)
+ var/tx = SE_X
+ var/ty = SE_Y
+ var/t_z = random.z
+ for(var/obj/move/M as obj in src.parts)
+ M.ty = M.x - tx
+ M.tx = M.y - ty
+ var/T = locate(M.x, M.y, 11)
+ relocate(T)
+ M.ty = -M.ty
+ M.ty += width
+ //Foreach goto(571)
+ for(var/obj/move/M as obj in src.parts)
+ M.tx += tx
+ M.ty += ty
+ var/T = locate(M.tx, M.ty, t_z)
+ relocate(T, -90.0)
+ //Foreach goto(663)
+ else
+ else
+ return
+
+/obj/shuttle/door/verb/open()
+ set src in oview(1)
+
+ src.add_fingerprint(usr)
+ if (src.operating)
+ return
+ src.operating = 1
+ flick("doorc0", src)
+ src.icon_state = "door0"
+ sleep(15)
+ src.density = 0
+ src.opacity = 0
+ src.verbs -= /obj/shuttle/door/verb/open
+ src.verbs += /obj/shuttle/door/proc/close
+ src.operating = 0
+ return
+
+/obj/shuttle/door/proc/close()
+ set src in oview(1)
+
+ src.add_fingerprint(usr)
+ if (src.operating)
+ return
+ src.operating = 1
+ flick("doorc1", src)
+ src.icon_state = "door1"
+ src.density = 1
+ if (src.visible)
+ src.opacity = 1
+ sleep(15)
+ src.verbs += /obj/shuttle/door/verb/open
+ src.verbs -= /obj/shuttle/door/proc/close
+ src.operating = 0
+ return
+
+/turf/station/shuttle/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ src = null
+ del(src)
+ return
+ else
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/shuttle.dmi b/ss13-40.93.2-decomp/spacestation13/shuttle.dmi
new file mode 100644
index 0000000..c2f18bc
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/shuttle.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/ss13.dmp b/ss13-40.93.2-decomp/spacestation13/ss13.dmp
new file mode 100644
index 0000000..012d55a
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/ss13.dmp
@@ -0,0 +1,2460 @@
+"aa" = (/turf/space,/area)
+"ab" = (/obj/item/weapon/tank/oxygentank,/turf/space,/area)
+"ac" = (/turf/station/wall,/area/engine_access)
+"ad" = (/obj/window{dir = 1},/obj/window,/turf/station/floor,/area/engine_access)
+"ae" = (/turf/station/r_wall,/area/engine)
+"af" = (/obj/move/airtunnel/connector/wall,/turf/space,/area/airtunnel1)
+"ag" = (/obj/machinery/camera{dir = 4; c_tag = "Northern Airlock"},/obj/machinery/at_indicator{pixel_x = -32; pixel_y = 0},/turf/station/floor,/area/engine_access)
+"ah" = (/turf/station/floor,/area/engine_access)
+"ai" = (/obj/machinery/door/airlock{r_access = 3},/turf/station/floor,/area/engine_access)
+"aj" = (/obj/move/airtunnel/connector,/obj/machinery/alarm/indicator,/turf/space,/area/airtunnel1)
+"ak" = (/obj/window{dir = 8},/obj/window{dir = 4},/turf/station/floor,/area/engine_access)
+"al" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/engine_access)
+"am" = (/obj/machinery/firealarm{pixel_y = -32},/turf/station/floor,/area/engine_access)
+"an" = (/obj/window{dir = 4},/turf/station/floor,/area/engine_access)
+"ao" = (/obj/window{dir = 4},/obj/window{dir = 8},/obj/grille,/turf/station/floor,/area/engine_access)
+"ap" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/at_indicator{pixel_y = 32},/turf/station/floor,/area/engine)
+"aq" = (/obj/machinery/door/airlock{r_access = 2},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/engine)
+"ar" = (/obj/move/airtunnel/connector,/turf/space,/area/airtunnel1)
+"as" = (/obj/machinery/door/airlock,/turf/station/floor,/area/engine_access)
+"at" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/engine_access)
+"au" = (/obj/window{dir = 10},/obj/item/weapon/extinguisher,/turf/station/floor,/area/engine_access)
+"av" = (/obj/grille,/turf/station/floor,/area)
+"aw" = (/turf/station/floor,/area/engine)
+"ax" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/turf/station/floor,/area/engine_access)
+"ay" = (/turf/station/r_wall,/area/airtunnel1)
+"az" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/turf/station/floor,/area/airtunnel1)
+"aA" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/floor,/area/airtunnel1)
+"aB" = (/turf/station/wall,/area)
+"aC" = (/obj/machinery/door/false_wall,/turf/station/floor,/area)
+"aD" = (/turf/station/wall,/area/airtunnel1)
+"aE" = (/turf/station/r_wall,/area)
+"aF" = (/turf/station/floor,/area)
+"aG" = (/obj/machinery/at_indicator{pixel_y = 32},/turf/station/floor,/area)
+"aH" = (/turf/station/wall,/area/control_room)
+"aI" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/engine_access)
+"aJ" = (/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/engine)
+"aK" = (/obj/machinery/atmoalter/canister/poisoncanister,/obj/machinery/firealarm,/turf/station/floor,/area/engine)
+"aL" = (/obj/machinery/atmoalter/heater,/turf/station/floor,/area/engine)
+"aM" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/turf/station/floor,/area)
+"aN" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/floor,/area)
+"aO" = (/obj/item/weapon/gun/revolver,/turf/station/floor,/area)
+"aP" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/dispenser,/turf/station/floor,/area/control_room)
+"aQ" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/dispenser,/turf/station/floor,/area/control_room)
+"aR" = (/obj/rack,/obj/item/weapon/clothing/suit/sp_suit,/obj/item/weapon/clothing/head/s_helmet,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/tank/jetpack,/turf/station/floor,/area/control_room)
+"aS" = (/obj/grille,/obj/window,/turf/station/floor,/area)
+"aT" = (/obj/grille,/turf/space,/area)
+"aU" = (/obj/machinery/door/airlock{r_access = 2},/turf/station/floor,/area/engine)
+"aV" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/engine)
+"aW" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/engine)
+"aX" = (/obj/machinery/camera{dir = 8; c_tag = "Plasma Storage"},/turf/station/floor,/area/engine)
+"aY" = (/turf/station/r_wall,/area/testlab4)
+"aZ" = (/turf/station/r_wall,/area/control_room)
+"ba" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/control_room)
+"bb" = (/turf/station/floor,/area/control_room)
+"bc" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/control_room)
+"bd" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/at_indicator{pixel_y = 32},/turf/station/floor,/area/engine_access)
+"be" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area)
+"bf" = (/obj/machinery/door/window{dir = 2},/turf/station/floor,/area)
+"bg" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/engine/floor,/area)
+"bh" = (/obj/machinery/mass_driver{dir = 4; id = "x1"},/obj/machinery/pod{dir = 4; id = "x1"},/turf/station/engine/floor,/area)
+"bi" = (/obj/machinery/door/poddoor{id = "x1"},/turf/station/engine/floor,/area)
+"bj" = (/obj/machinery/firealarm{pixel_x = -32},/turf/station/floor,/area/engine)
+"bk" = (/obj/machinery/atmoalter/canister/poisoncanister,/obj/item/weapon/extinguisher,/turf/station/floor,/area/engine)
+"bl" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/engine/floor,/area/testlab4)
+"bm" = (/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/engine/floor,/area/testlab4)
+"bn" = (/turf/station/engine/floor,/area/testlab4)
+"bo" = (/obj/machinery/door/window,/turf/station/engine/floor,/area/testlab4)
+"bp" = (/obj/machinery/igniter,/turf/station/engine/floor{poison = 756000; n2 = 0},/area/testlab4)
+"bq" = (/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/clothing/mask/m_mask,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/control_room)
+"br" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/control_room)
+"bs" = (/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/engine_access)
+"bt" = (/obj/machinery/computer/pod{id = "x1"},/turf/station/floor,/area)
+"bu" = (/obj/grille,/obj/window{dir = 1},/turf/station/floor,/area)
+"bv" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/engine)
+"bw" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; r_engine = 3; r_access = 2; r_lab = 0},/turf/station/floor,/area/engine)
+"bx" = (/obj/window{dir = 10},/turf/station/engine/floor,/area/testlab4)
+"by" = (/obj/window,/turf/station/engine/floor,/area/testlab4)
+"bz" = (/obj/grille,/obj/window,/obj/window{dir = 1},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/control_room)
+"bA" = (/obj/grille,/obj/window,/obj/window{dir = 1},/obj/window{dir = 4},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/control_room)
+"bB" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; r_engine = 0; r_access = 2; r_lab = 1},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/control_room)
+"bC" = (/obj/landmark/alterations{name = "barrier"},/turf/station/wall,/area/control_room)
+"bD" = (/obj/machinery/firealarm{pixel_x = 32},/turf/station/floor,/area/engine_access)
+"bE" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/engine_access)
+"bF" = (/turf/station/wall,/area/engine)
+"bG" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/landmark/alterations{name = "id computer"},/turf/station/floor,/area/engine)
+"bH" = (/obj/machinery/firealarm{pixel_x = 32},/turf/station/floor,/area/engine)
+"bI" = (/obj/machinery/computer/engine,/turf/station/floor,/area/engine)
+"bJ" = (/obj/closet/emcloset,/turf/station/floor,/area/engine)
+"bK" = (/obj/table,/obj/item/weapon/storage/firstaid/fire,/turf/station/floor,/area/engine)
+"bL" = (/obj/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/pill_canister/antitoxin,/turf/station/floor,/area/engine)
+"bM" = (/obj/table,/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/obj/item/weapon/clothing/glasses/sunglasses,/turf/station/floor,/area/engine)
+"bN" = (/obj/rack,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/radio/headset,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/sunglasses,/turf/station/floor,/area/engine)
+"bO" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/floor,/area/engine)
+"bP" = (/turf/station/floor,/area/testlab4)
+"bQ" = (/obj/machinery/camera{dir = 4; c_tag = "CR- Prep Room"},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/control_room)
+"bR" = (/obj/machinery/door,/turf/station/floor,/area/engine)
+"bS" = (/obj/window{dir = 8},/turf/station/floor,/area/testlab4)
+"bT" = (/obj/machinery/door/airlock{r_engine = 3; r_access = 2; r_lab = 0},/turf/station/floor,/area/control_room)
+"bU" = (/obj/machinery/firealarm{pixel_x = -32},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/control_room)
+"bV" = (/obj/machinery/door/firedoor,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/control_room)
+"bW" = (/obj/machinery/door,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/engine_access)
+"bX" = (/obj/landmark{name = "CTF-base-Engine"},/turf/station/floor,/area/engine)
+"bY" = (/obj/machinery/door/window,/turf/station/floor,/area/engine)
+"bZ" = (/obj/item/weapon/radio,/turf/station/floor,/area/engine)
+"ca" = (/obj/window{dir = 4},/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/engine/floor,/area/testlab4)
+"cb" = (/obj/machinery/door/firedoor,/turf/station/engine/floor,/area/testlab4)
+"cc" = (/obj/machinery/computer/atmosphere/siphonswitch,/turf/station/floor,/area/testlab4)
+"cd" = (/obj/window,/turf/station/floor,/area/control_room)
+"ce" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/control_room)
+"cf" = (/obj/window{dir = 4},/turf/station/wall,/area)
+"cg" = (/obj/window{dir = 8},/obj/window{dir = 4},/obj/grille,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area)
+"ch" = (/obj/machinery/door/airlock,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/engine)
+"ci" = (/obj/machinery/door/airlock{r_engine = 3; r_access = 2; r_lab = 0},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/testlab4)
+"cj" = (/obj/window{dir = 1},/turf/station/floor,/area/testlab4)
+"ck" = (/obj/window{dir = 10},/turf/station/floor,/area/testlab4)
+"cl" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/testlab4)
+"cm" = (/obj/grille,/turf/station/floor,/area/testlab4)
+"cn" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark{name = "CTF-wardrobe-CR"},/turf/station/floor,/area/control_room)
+"co" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/control_room)
+"cp" = (/obj/machinery/computer/secure_data,/turf/station/floor,/area/control_room)
+"cq" = (/obj/machinery/computer/card,/turf/station/floor,/area/control_room)
+"cr" = (/obj/table,/obj/item/weapon/paper/Map,/obj/item/weapon/radio/intercom,/turf/station/floor,/area/control_room)
+"cs" = (/obj/machinery/computer/communications,/turf/station/floor,/area/control_room)
+"ct" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/paper/jobs,/obj/item/weapon/infra_sensor,/obj/machinery/camera{c_tag = "Control Room"},/turf/station/floor,/area/control_room)
+"cu" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/paper/jobs,/obj/item/weapon/infra_sensor,/turf/station/floor,/area/control_room)
+"cv" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/radio,/turf/station/floor,/area/control_room)
+"cw" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/paper_bin,/turf/station/floor,/area/control_room)
+"cx" = (/obj/table{icon_state = "corners"; dir = 5},/obj/window{dir = 4},/turf/station/floor,/area/control_room)
+"cy" = (/obj/window{dir = 4},/obj/window{dir = 8},/obj/grille,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/control_room)
+"cz" = (/obj/machinery/door/window{dir = 8},/turf/station/floor,/area/engine)
+"cA" = (/obj/watertank,/turf/station/floor,/area/engine)
+"cB" = (/obj/landmark/alterations{name = "Experimental Technology"},/turf/station/floor,/area/engine)
+"cC" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark/alterations{name = "Experimental Technology"},/turf/station/floor,/area/engine)
+"cD" = (/obj/item/weapon/extinguisher,/turf/station/floor,/area/engine)
+"cE" = (/obj/landmark{name = "CTF-wardrobe-Engine"},/turf/station/floor,/area/engine)
+"cF" = (/obj/weldfueltank,/turf/station/floor,/area/engine)
+"cG" = (/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor,/area/engine)
+"cH" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor,/area/engine)
+"cI" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark{name = "CTF-wardrobe-Engine"},/turf/station/floor,/area/engine)
+"cJ" = (/obj/item/weapon/radio/intercom{pixel_x = -32},/turf/station/floor,/area/testlab4)
+"cK" = (/obj/machinery/door/window,/turf/station/floor,/area/testlab4)
+"cL" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/floor,/area/testlab4)
+"cM" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/landmark{name = "CTF-wardrobe-CR"},/turf/station/floor,/area/control_room)
+"cN" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/control_room)
+"cO" = (/obj/stool/chair{dir = 1},/turf/station/floor,/area/control_room)
+"cP" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/pill_canister/antitoxin,/turf/station/floor,/area/control_room)
+"cQ" = (/obj/table{icon_state = "corners"; dir = 6},/obj/window{dir = 4},/obj/item/weapon/pen,/turf/station/floor,/area/control_room)
+"cR" = (/obj/rack,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/radio/headset,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/meson,/obj/item/weapon/clothing/glasses/sunglasses,/turf/station/floor,/area/engine)
+"cS" = (/obj/landmark{name = "CTF-supply-Engine"},/turf/station/floor,/area/engine)
+"cT" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/floor,/area/engine)
+"cU" = (/obj/table,/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/turf/station/floor,/area/testlab4)
+"cV" = (/obj/window{dir = 4},/obj/item/weapon/extinguisher,/turf/station/floor,/area/testlab4)
+"cW" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/turf/station/floor,/area/testlab4)
+"cX" = (/obj/machinery/door/window{dir = 8},/turf/station/floor,/area/control_room)
+"cY" = (/obj/window{dir = 10},/obj/item/weapon/extinguisher,/turf/station/floor,/area/control_room)
+"cZ" = (/obj/stool/chair{dir = 4},/obj/start{name = "Head of Research"},/turf/station/floor,/area/control_room)
+"da" = (/obj/table,/obj/window{dir = 4},/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/clipboard,/turf/station/floor,/area/control_room)
+"db" = (/obj/machinery/door/window{icon = 'security.dmi'; r_engine = 2; r_access = 2},/turf/station/floor,/area/engine)
+"dc" = (/obj/item/weapon/radio/intercom{pixel_y = 32},/turf/station/floor,/area/engine)
+"dd" = (/obj/machinery/injector{dir = 8},/turf/station/wall,/area/engine)
+"de" = (/turf/station/engine/floor{poison = 756000; n2 = 0},/area/engine)
+"df" = (/obj/machinery/firealarm{pixel_y = -32},/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/testlab4)
+"dg" = (/obj/weldfueltank,/turf/station/floor,/area/testlab4)
+"dh" = (/obj/machinery/door/window,/turf/station/floor,/area/control_room)
+"di" = (/obj/landmark{name = "CTF-base-CR"},/turf/station/floor,/area/control_room)
+"dj" = (/obj/table,/obj/item/weapon/paper/jobs,/obj/item/weapon/storage/id_kit,/turf/station/floor,/area/control_room)
+"dk" = (/obj/table,/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/obj/item/weapon/clothing/glasses/sunglasses,/turf/station/floor,/area/control_room)
+"dl" = (/obj/table,/turf/station/floor,/area/control_room)
+"dm" = (/obj/stool/chair{dir = 4},/obj/start{name = "Captain"},/turf/station/floor,/area/control_room)
+"dn" = (/obj/table,/obj/window{dir = 4},/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/beacon,/obj/item/weapon/clipboard,/turf/station/floor,/area/control_room)
+"do" = (/obj/item/weapon/radio/intercom{pixel_x = -32},/turf/station/floor,/area/engine)
+"dp" = (/obj/start{name = "Engineer"},/turf/station/floor,/area/engine)
+"dq" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/engine)
+"dr" = (/turf/station/r_wall,/area/medicalstorage)
+"ds" = (/obj/watertank,/turf/station/floor,/area/control_room)
+"dt" = (/obj/window{dir = 4},/turf/station/floor,/area/control_room)
+"du" = (/obj/stool/chair{dir = 4},/obj/start{name = "Head of Personnel"},/turf/station/floor,/area/control_room)
+"dv" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/engine)
+"dw" = (/obj/machinery/camera{dir = 4; c_tag = "Engine Hallway"},/turf/station/floor,/area/engine)
+"dx" = (/obj/window{dir = 4},/turf/station/floor,/area/engine)
+"dy" = (/turf/station/wall,/area/medicalstorage)
+"dz" = (/obj/closet/emcloset,/turf/station/floor,/area/medicalstorage)
+"dA" = (/obj/closet/wardrobe/yellow,/turf/station/floor,/area/medicalstorage)
+"dB" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/storage/toolbox,/obj/item/weapon/clothing/glasses/meson,/turf/station/floor,/area/medicalstorage)
+"dC" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/toolbox,/obj/item/weapon/clothing/glasses/meson,/turf/station/floor,/area/medicalstorage)
+"dD" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/sunglasses,/obj/item/weapon/clothing/ears/earmuffs,/turf/station/floor,/area/medicalstorage)
+"dE" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/sunglasses,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/clothing/ears/earmuffs,/turf/station/floor,/area/medicalstorage)
+"dF" = (/obj/machinery/alarm{pixel_y = -32},/turf/station/floor,/area/control_room)
+"dG" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/paper/sop,/obj/item/weapon/paper/Internal,/obj/item/weapon/infra,/turf/station/floor,/area/control_room)
+"dH" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/paper/Internal,/obj/item/weapon/radio/signaler,/turf/station/floor,/area/control_room)
+"dI" = (/obj/stool/chair,/turf/station/floor,/area/control_room)
+"dJ" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/syringe,/turf/station/floor,/area/control_room)
+"dK" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/bottle/s_tox,/obj/window{dir = 4},/turf/station/floor,/area/control_room)
+"dL" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/weldfueltank,/turf/station/floor,/area/engine)
+"dM" = (/obj/item/weapon/storage/backpack,/turf/station/floor,/area/engine)
+"dN" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/engine)
+"dO" = (/obj/machinery/dispenser,/turf/station/floor,/area/engine)
+"dP" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/engine)
+"dQ" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/camera{dir = 4; c_tag = "Technician Office"},/turf/station/floor,/area/medicalstorage)
+"dR" = (/obj/start{name = "Station Technician"},/turf/station/floor,/area/medicalstorage)
+"dS" = (/turf/station/floor,/area/medicalstorage)
+"dT" = (/obj/stool,/turf/station/floor,/area/medicalstorage)
+"dU" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/radio/intercom{pixel_x = 32},/turf/station/floor,/area/medicalstorage)
+"dV" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/paper/courtroom,/turf/station/floor,/area/control_room)
+"dW" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/paper/Toxin,/obj/item/weapon/paper/Map,/obj/item/weapon/timer,/turf/station/floor,/area/control_room)
+"dX" = (/obj/landmark{name = "CTF-supply-CR"},/turf/station/floor,/area/control_room)
+"dY" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/paper/jobs,/obj/manifest,/turf/station/floor,/area/control_room)
+"dZ" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/card/id,/obj/machinery/firealarm{pixel_y = -32},/turf/station/floor,/area/control_room)
+"ea" = (/obj/machinery/computer/airtunnel,/turf/station/floor,/area/control_room)
+"eb" = (/obj/machinery/computer/engine,/turf/station/floor,/area/control_room)
+"ec" = (/obj/table{icon_state = "corners"; dir = 10},/obj/machinery/recharger,/turf/station/floor,/area/control_room)
+"ed" = (/obj/table{icon_state = "corners"; dir = 6},/obj/window{dir = 4},/turf/station/floor,/area/control_room)
+"ee" = (/turf/station/wall,/area/escapezone)
+"ef" = (/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/storage/toolbox,/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/crowbar,/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/engine)
+"eg" = (/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/storage/toolbox,/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/crowbar,/turf/station/floor,/area/engine)
+"eh" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/storage/toolbox,/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/crowbar,/obj/item/weapon/clipboard,/turf/station/floor,/area/engine)
+"ei" = (/obj/machinery/alarm{pixel_y = -32},/obj/item/weapon/paper_bin{pixel_y = -32},/turf/station/floor,/area/engine)
+"ej" = (/obj/item/weapon/clipboard,/turf/station/floor,/area/engine)
+"ek" = (/obj/item/weapon/radio,/obj/machinery/firealarm{pixel_y = -32},/turf/station/floor,/area/engine)
+"el" = (/obj/closet/wardrobe/yellow,/turf/station/floor,/area/engine)
+"em" = (/obj/machinery/door{r_engine = 3; r_access = 2},/obj/window,/obj/machinery/firealarm,/obj/window{dir = 8},/turf/station/floor,/area/engine)
+"en" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/medicalstorage)
+"eo" = (/obj/start{name = "Technical Assistant"},/turf/station/floor,/area/medicalstorage)
+"ep" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/medicalstorage)
+"eq" = (/obj/weldfueltank,/turf/station/floor,/area/medicalstorage)
+"er" = (/turf/station/wall,/area/controlaccess)
+"es" = (/obj/machinery/door/window{dir = 4},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/controlaccess)
+"et" = (/turf/station/r_wall,/area/controlaccess)
+"eu" = (/turf/station/r_wall,/area/testlab2)
+"ev" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; r_engine = 0; r_access = 4; r_lab = 4},/turf/station/floor,/area/testlab2)
+"ew" = (/obj/grille,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area)
+"ex" = (/obj/machinery/door/poddoor,/turf/station/engine/floor,/area/escapezone)
+"ey" = (/obj/machinery/mass_driver,/obj/item/weapon/tank/oxygentank,/turf/station/engine/floor,/area/escapezone)
+"ez" = (/obj/machinery/door/window,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/engine/floor,/area/escapezone)
+"eA" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/escapezone)
+"eB" = (/obj/machinery/computer/pod{name = "Mass Driver"},/turf/station/floor,/area/escapezone)
+"eC" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/engine/floor,/area/engine)
+"eD" = (/obj/window{dir = 10},/turf/station/floor,/area/engine)
+"eE" = (/obj/machinery/injector,/turf/station/wall,/area/engine)
+"eF" = (/obj/window{dir = 10},/obj/item/weapon/extinguisher,/turf/station/floor,/area/engine)
+"eG" = (/obj/machinery/igniter,/turf/station/engine/floor{poison = 756000; n2 = 0},/area/engine)
+"eH" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/medicalstorage)
+"eI" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/floor,/area/medicalstorage)
+"eJ" = (/obj/machinery/alarm{pixel_y = 32},/turf/station/floor,/area/controlaccess)
+"eK" = (/turf/station/floor,/area/controlaccess)
+"eL" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/controlaccess)
+"eM" = (/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area)
+"eN" = (/turf/station/floor,/area/escapezone)
+"eO" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/escapezone)
+"eP" = (/obj/grille,/turf/station/engine/floor,/area/engine)
+"eQ" = (/obj/machinery/alarm,/turf/station/floor,/area/controlaccess)
+"eR" = (/obj/machinery/door/window,/turf/station/floor,/area/controlaccess)
+"eS" = (/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/controlaccess)
+"eT" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/computer/security,/turf/station/floor,/area/testlab2)
+"eU" = (/turf/station/floor,/area/testlab2)
+"eV" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/stool/bed,/obj/item/weapon/bedsheet,/turf/station/floor,/area/testlab2)
+"eW" = (/obj/item/weapon/ammo/a357,/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area)
+"eX" = (/obj/machinery/door/poddoor{id = 2},/turf/station/engine/floor,/area/escapezone)
+"eY" = (/obj/machinery/mass_driver{dir = 8; id = 2},/obj/machinery/pod,/turf/station/engine/floor,/area/escapezone)
+"eZ" = (/obj/machinery/computer/pod{id = 2},/turf/station/floor,/area/escapezone)
+"fa" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area)
+"fb" = (/obj/machinery/computer/engine,/turf/station/floor,/area)
+"fc" = (/obj/machinery/computer/communications,/turf/station/floor,/area)
+"fd" = (/obj/item/weapon/hand_tele,/turf/station/engine/floor,/area/engine)
+"fe" = (/turf/station/engine/floor,/area/engine)
+"ff" = (/obj/machinery/alarm{pixel_y = 32},/turf/station/engine/floor,/area/engine)
+"fg" = (/obj/machinery/door{r_engine = 3; r_access = 2},/turf/station/floor,/area/engine)
+"fh" = (/turf/station/wall,/area/hallways/labaccess)
+"fi" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/controlaccess)
+"fj" = (/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor,/area/testlab2)
+"fk" = (/obj/secloset/highsec,/turf/station/floor,/area/testlab2)
+"fl" = (/obj/machinery/camera{dir = 4; c_tag = "Escape Pod Bay"},/turf/station/floor,/area/escapezone)
+"fm" = (/obj/machinery/door/window,/turf/station/floor,/area/escapezone)
+"fn" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area)
+"fo" = (/obj/machinery/door/airlock,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area)
+"fp" = (/obj/watertank,/turf/station/floor,/area/hallways/labaccess)
+"fq" = (/turf/station/floor,/area/hallways/labaccess)
+"fr" = (/obj/machinery/door/window,/turf/station/floor,/area/hallways/labaccess)
+"fs" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/controlaccess)
+"ft" = (/obj/machinery/camera{dir = 4; c_tag = "Emergency Room"},/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor,/area/testlab2)
+"fu" = (/obj/landmark{name = "Nuclear-Disk"},/turf/station/floor,/area/testlab2)
+"fv" = (/obj/machinery/door/poddoor{id = 3},/turf/station/engine/floor,/area/escapezone)
+"fw" = (/obj/machinery/mass_driver{dir = 8; id = 3},/obj/machinery/pod,/turf/station/engine/floor,/area/escapezone)
+"fx" = (/obj/machinery/computer/pod{id = 3},/turf/station/floor,/area/escapezone)
+"fy" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/radio/intercom{pixel_x = -32},/turf/station/floor,/area)
+"fz" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/turf/station/engine/floor,/area/engine)
+"fA" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/hallways/labaccess)
+"fB" = (/obj/machinery/firealarm{pixel_x = 32},/turf/station/floor,/area/hallways/labaccess)
+"fC" = (/obj/weldfueltank,/turf/station/floor,/area/toolstorage)
+"fD" = (/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/storage/backpack,/obj/item/weapon/crowbar,/obj/item/weapon/clothing/gloves/black,/turf/station/floor,/area/toolstorage)
+"fE" = (/obj/item/weapon/infra,/obj/item/weapon/timer,/turf/station/floor,/area/toolstorage)
+"fF" = (/turf/station/wall,/area/toolstorage)
+"fG" = (/obj/table{icon_state = "sides"; dir = 2},/obj/bedsheetbin,/turf/station/floor,/area/toolstorage)
+"fH" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/paper_bin{amount = 50},/obj/item/weapon/wrapping_paper,/turf/station/floor,/area/toolstorage)
+"fI" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/storage/gl_kit,/turf/station/floor,/area/toolstorage)
+"fJ" = (/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/turf/station/floor,/area/toolstorage)
+"fK" = (/obj/item/weapon/sheet/metal{amount = 5},/turf/station/floor,/area/toolstorage)
+"fL" = (/obj/item/weapon/radio/intercom{pixel_x = -32},/turf/station/floor,/area/testlab2)
+"fM" = (/obj/item/weapon/storage/handcuff_kit,/turf/station/floor,/area/testlab2)
+"fN" = (/obj/machinery/atmoalter/canister/poisoncanister,/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area)
+"fO" = (/obj/machinery/door/poddoor{id = 4},/turf/station/engine/floor,/area/escapezone)
+"fP" = (/obj/machinery/mass_driver{dir = 8; id = 4},/obj/machinery/pod,/turf/station/engine/floor,/area/escapezone)
+"fQ" = (/obj/machinery/computer/pod{id = 4},/turf/station/floor,/area/escapezone)
+"fR" = (/obj/item/weapon/extinguisher,/turf/station/floor,/area)
+"fS" = (/obj/machinery/computer/atmosphere/siphonswitch,/turf/station/floor,/area/engine)
+"fT" = (/obj/table,/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/obj/item/weapon/clothing/glasses/meson,/obj/item/weapon/clothing/glasses/sunglasses,/obj/item/weapon/clothing/ears/earmuffs,/turf/station/floor,/area/toolstorage)
+"fU" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/infra_sensor,/turf/station/floor,/area/toolstorage)
+"fV" = (/obj/item/weapon/timer,/obj/item/weapon/radio/beacon,/turf/station/floor,/area/toolstorage)
+"fW" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/camera{c_tag = "Supply Room"},/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/toolstorage)
+"fX" = (/obj/item/weapon/timer,/obj/item/weapon/crowbar,/turf/station/floor,/area/toolstorage)
+"fY" = (/obj/item/weapon/radio/signaler,/turf/station/floor,/area/toolstorage)
+"fZ" = (/obj/item/weapon/crowbar,/turf/station/floor,/area/toolstorage)
+"ga" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/infra,/obj/item/weapon/radio/signaler,/turf/station/floor,/area/toolstorage)
+"gb" = (/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/turf/station/floor,/area/toolstorage)
+"gc" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/turf/station/floor,/area/toolstorage)
+"gd" = (/obj/item/weapon/igniter,/obj/item/weapon/crowbar,/turf/station/floor,/area/toolstorage)
+"ge" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/infra,/obj/item/weapon/radio/beacon,/turf/station/floor,/area/toolstorage)
+"gf" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/closet/emcloset,/turf/station/floor,/area/testlab2)
+"gg" = (/obj/closet/emcloset,/turf/station/floor,/area/testlab2)
+"gh" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/closet/emcloset,/turf/station/floor,/area/testlab2)
+"gi" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/hallways/labaccess)
+"gj" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/toolstorage)
+"gk" = (/obj/item/weapon/infra_sensor,/turf/station/floor,/area/toolstorage)
+"gl" = (/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/obj/item/weapon/igniter,/obj/item/weapon/storage/backpack,/turf/station/floor,/area/toolstorage)
+"gm" = (/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/turf/station/floor,/area/toolstorage)
+"gn" = (/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/beacon,/turf/station/floor,/area/toolstorage)
+"go" = (/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/turf/station/floor,/area/toolstorage)
+"gp" = (/obj/item/weapon/sheet/metal,/obj/item/weapon/sheet/metal,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/timer,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/turf/station/floor,/area/toolstorage)
+"gq" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/toolstorage)
+"gr" = (/turf/station/wall,/area/oxygen_storage)
+"gs" = (/turf/station/wall,/area/hallways/eastairlock)
+"gt" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table{icon_state = "corners"; dir = 5},/turf/station/floor,/area/hallways/eastairlock)
+"gu" = (/obj/stool/chair,/turf/station/floor,/area/hallways/eastairlock)
+"gv" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/hallways/eastairlock)
+"gw" = (/turf/station/floor,/area/hallways/eastairlock)
+"gx" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/hallways/eastairlock)
+"gy" = (/obj/stool/chair{dir = 8},/turf/station/floor,/area/hallways/eastairlock)
+"gz" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/stool/chair{dir = 8},/turf/station/floor,/area/hallways/eastairlock)
+"gA" = (/obj/grille,/turf/station/floor{oxygen = 0; poison = 3e+006; n2 = 0},/area)
+"gB" = (/turf/station/wall,/area/medical)
+"gC" = (/obj/window{dir = 1},/obj/window,/obj/grille,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/medical)
+"gD" = (/turf/station/wall,/area/toxinlab)
+"gE" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/hallways/labaccess)
+"gF" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/hallways/centralhall)
+"gG" = (/turf/station/floor,/area/hallways/centralhall)
+"gH" = (/obj/machinery/alarm{pixel_y = 32},/turf/station/floor,/area/hallways/centralhall)
+"gI" = (/turf/station/wall,/area/hallways/centralhall)
+"gJ" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/hallways/centralhall)
+"gK" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/hallways/eastairlock)
+"gL" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/paper/courtroom,/turf/station/floor,/area/hallways/eastairlock)
+"gM" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/radio,/turf/station/floor,/area/hallways/eastairlock)
+"gN" = (/obj/landmark/alterations{name = "Experimental Technology"},/turf/station/floor,/area/medical)
+"gO" = (/obj/item/weapon/flasks/coolant,/obj/item/weapon/flasks/oxygen,/obj/item/weapon/flasks/plasma,/turf/station/floor,/area/medical)
+"gP" = (/obj/window{dir = 4},/obj/closet/wardrobe/white,/turf/station/floor,/area/medical)
+"gQ" = (/obj/secloset/medical1,/turf/station/floor,/area/medical)
+"gR" = (/obj/machinery/computer/med_data,/turf/station/floor,/area/medical)
+"gS" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/paper/Toxin,/obj/item/weapon/pen,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/dropper,/obj/item/weapon/pill_canister/cough,/obj/item/weapon/pill_canister/epilepsy,/turf/station/floor,/area/medical)
+"gT" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/syringe,/obj/item/weapon/clipboard,/turf/station/floor,/area/medical)
+"gU" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/syringe,/obj/item/weapon/bottle/rejuvenators,/obj/machinery/camera{c_tag = "Medical Bay"},/turf/station/floor,/area/medical)
+"gV" = (/obj/table{icon_state = "alone"},/obj/item/weapon/healthanalyzer,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/bottle/antitoxins,/turf/station/floor,/area/medical)
+"gW" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/storage/firstaid/toxin,/turf/station/floor,/area/medical)
+"gX" = (/obj/table{icon_state = "sides"},/obj/item/weapon/storage/firstaid/fire,/turf/station/floor,/area/medical)
+"gY" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/medical)
+"gZ" = (/obj/machinery/alarm{pixel_y = 32},/obj/closet/wardrobe/white,/turf/station/floor,/area/toxinlab)
+"ha" = (/obj/closet/l3closet,/turf/station/floor,/area/toxinlab)
+"hb" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/toxinlab)
+"hc" = (/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area/toxinlab)
+"hd" = (/obj/machinery/computer/med_data,/turf/station/floor,/area/toxinlab)
+"he" = (/obj/machinery/firealarm{pixel_y = 32},/turf/station/floor,/area/toxinlab)
+"hf" = (/obj/machinery/computer/atmosphere/siphonswitch,/obj/machinery/camera{c_tag = "Medical Lab"},/turf/station/floor,/area/toxinlab)
+"hg" = (/obj/secloset/medical1,/turf/station/floor,/area/toxinlab)
+"hh" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/paper/Toxin,/obj/item/weapon/clothing/gloves/latex,/obj/item/weapon/clothing/mask/surgical,/obj/item/weapon/pen,/obj/item/weapon/clipboard,/turf/station/floor,/area/toxinlab)
+"hi" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/bottle/s_tox,/obj/item/weapon/bottle/r_epil,/obj/item/weapon/bottle/r_ch_cough,/obj/item/weapon/dropper,/turf/station/floor,/area/toxinlab)
+"hj" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/syringe,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/bottle/s_tox,/obj/item/weapon/pill_canister/Tourette,/obj/item/weapon/pill_canister/epilepsy,/turf/station/floor,/area/toxinlab)
+"hk" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/firstaid/toxin,/turf/station/floor,/area/toxinlab)
+"hl" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/toxinlab)
+"hm" = (/obj/machinery/alarm,/turf/station/floor,/area/hallways/labaccess)
+"hn" = (/obj/machinery/door/window,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/hallways/labaccess)
+"ho" = (/obj/machinery/door/window,/turf/station/floor,/area/hallways/centralhall)
+"hp" = (/obj/machinery/door/firedoor,/obj/machinery/door/window,/turf/station/floor,/area/hallways/eastairlock)
+"hq" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/stool/chair{dir = 8},/turf/station/floor,/area/hallways/eastairlock)
+"hr" = (/obj/morgue,/turf/station/floor,/area)
+"hs" = (/obj/machinery/freezer,/turf/station/floor,/area/medical)
+"ht" = (/obj/machinery/pipes/flexipipe,/turf/station/floor,/area/medical)
+"hu" = (/obj/machinery/cryo_cell,/turf/station/floor,/area/medical)
+"hv" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor,/area/medical)
+"hw" = (/obj/landmark/alterations{name = "recharger"},/turf/station/floor,/area/medical)
+"hx" = (/turf/station/floor,/area/medical)
+"hy" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/medical)
+"hz" = (/obj/stool/chair,/turf/station/floor,/area/medical)
+"hA" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/medical)
+"hB" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/turf/station/floor,/area/toxinlab)
+"hC" = (/turf/station/floor,/area/toxinlab)
+"hD" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/toxinlab)
+"hE" = (/obj/stool/chair,/turf/station/floor,/area/toxinlab)
+"hF" = (/obj/machinery/camera{dir = 4; c_tag = "Central Hallway"},/turf/station/floor,/area/hallways/labaccess)
+"hG" = (/turf/station/r_wall,/area/hallways/centralhall)
+"hH" = (/turf/station/r_wall,/area/hallways/eastairlock)
+"hI" = (/obj/machinery/camera{dir = 8; c_tag = "Assembly Room"},/obj/item/weapon/radio/intercom{pixel_x = 32},/turf/station/floor,/area/hallways/eastairlock)
+"hJ" = (/obj/window{dir = 4},/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor,/area/medical)
+"hK" = (/obj/item/weapon/radio,/turf/station/floor,/area/medical)
+"hL" = (/obj/item/weapon/ointment,/turf/station/floor,/area/medical)
+"hM" = (/obj/stool/chair{dir = 8},/turf/station/floor,/area/medical)
+"hN" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/hallways/centralhall)
+"hO" = (/obj/machinery/alarm{pixel_y = 32},/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/oxygen_storage)
+"hP" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/oxygen_storage)
+"hQ" = (/obj/machinery/dispenser,/turf/station/floor,/area/oxygen_storage)
+"hR" = (/obj/machinery/dispenser,/obj/machinery/camera{c_tag = "Toxin Gas Storage"},/turf/station/floor,/area/oxygen_storage)
+"hS" = (/turf/station/floor,/area/oxygen_storage)
+"hT" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/oxygen_storage)
+"hU" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/oxygen_storage)
+"hV" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table{icon_state = "corners"; dir = 9},/turf/station/floor,/area/hallways/eastairlock)
+"hW" = (/obj/table{icon_state = "corners"; dir = 5},/turf/station/floor,/area/hallways/eastairlock)
+"hX" = (/obj/table{icon_state = "corners"; dir = 9},/turf/station/floor,/area/hallways/eastairlock)
+"hY" = (/obj/window{dir = 8},/turf/station/floor,/area/hallways/eastairlock)
+"hZ" = (/obj/machinery/sleeper,/turf/station/floor,/area/medical)
+"ia" = (/obj/machinery/computer/sleep_console,/turf/station/floor,/area/medical)
+"ib" = (/obj/start{name = "Medical Doctor"},/turf/station/floor,/area/medical)
+"ic" = (/obj/item/weapon/brutepack,/turf/station/floor,/area/medical)
+"id" = (/obj/machinery/firealarm{pixel_x = 32},/obj/stool/chair{dir = 8},/turf/station/floor,/area/medical)
+"ie" = (/obj/machinery/firealarm{pixel_y = -32},/turf/station/floor,/area/toxinlab)
+"if" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/radio/intercom{pixel_y = -32},/turf/station/floor,/area/toxinlab)
+"ig" = (/obj/window,/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/toxinlab)
+"ih" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/toxinlab)
+"ii" = (/obj/machinery/door/window{dir = 8},/turf/station/floor,/area/toxinlab)
+"ij" = (/obj/window,/obj/secloset/medical2,/turf/station/floor,/area/toxinlab)
+"ik" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/window,/turf/station/floor,/area/toxinlab)
+"il" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/turf/station/floor,/area/toxinlab)
+"im" = (/obj/item/weapon/paper_bin,/turf/station/floor,/area/toxinlab)
+"in" = (/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/oxygen_storage)
+"io" = (/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area/oxygen_storage)
+"ip" = (/obj/stool/chair{dir = 1},/obj/machinery/firealarm{pixel_x = -32},/turf/station/floor,/area/hallways/eastairlock)
+"iq" = (/obj/stool/chair{dir = 1},/turf/station/floor,/area/hallways/eastairlock)
+"ir" = (/obj/landmark{name = "CTF-supply-Medical"},/turf/station/floor,/area/medical)
+"is" = (/obj/machinery/door/window,/turf/station/floor,/area/medical)
+"it" = (/obj/landmark{name = "CTF-base-Medical"},/turf/station/floor,/area/medical)
+"iu" = (/obj/window{dir = 1},/turf/station/floor,/area/toxinlab)
+"iv" = (/obj/window{dir = 4},/obj/secloset/animal,/turf/station/floor,/area/toxinlab)
+"iw" = (/obj/window{dir = 1},/obj/window{dir = 8},/obj/machinery/dna_scanner,/turf/station/floor,/area/toxinlab)
+"ix" = (/obj/window{dir = 1},/obj/machinery/scan_console,/turf/station/floor,/area/toxinlab)
+"iy" = (/obj/window{dir = 1},/obj/machinery/computer/dna,/turf/station/floor,/area/toxinlab)
+"iz" = (/obj/window{dir = 1},/obj/machinery/restruct,/turf/station/floor,/area/toxinlab)
+"iA" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/card/data{name = "SE-Scan"; function = "dna_scan"; special = "SE"},/obj/item/weapon/card/data{name = "SI-Scan"; function = "dna_scan"; special = "SI"},/obj/item/weapon/card/data{name = "UE-Scan"; function = "dna_scan"; special = "UE"},/obj/item/weapon/card/data{name = "UI-Scan"; function = "dna_scan"; special = "UI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Scan"},/obj/window{dir = 1},/turf/station/floor,/area/toxinlab)
+"iB" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area/oxygen_storage)
+"iC" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area/oxygen_storage)
+"iD" = (/obj/table{icon_state = "corners"; dir = 9},/obj/window{dir = 8},/turf/station/floor,/area/hallways/eastairlock)
+"iE" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table{icon_state = "sides"; dir = 1},/turf/station/floor,/area/hallways/eastairlock)
+"iF" = (/obj/landmark/alterations{name = "Experimental Technology"},/obj/window{dir = 4},/turf/station/floor,/area/medical)
+"iG" = (/obj/start{name = "Medical Assistant"},/turf/station/floor,/area/medical)
+"iH" = (/obj/item/weapon/storage/toolbox,/turf/station/floor,/area/medical)
+"iI" = (/obj/machinery/door/window{icon = 'security.dmi'; r_access = 1; r_lab = 3},/turf/station/floor,/area/medical)
+"iJ" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/door/window{icon = 'security.dmi'; r_access = 1; r_lab = 3},/turf/station/floor,/area/toxinlab)
+"iK" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/toxinlab)
+"iL" = (/obj/window,/turf/station/floor,/area/toxinlab)
+"iM" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; r_engine = 0; r_access = 1; r_lab = 1},/turf/station/floor,/area/toxinlab)
+"iN" = (/obj/start{name = "Medical Researcher"},/obj/window,/turf/station/floor,/area/toxinlab)
+"iO" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/window,/turf/station/floor,/area/toxinlab)
+"iP" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/toxinlab)
+"iQ" = (/obj/machinery/door/window,/turf/station/floor,/area/toxinlab)
+"iR" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/card/data{name = "Data-Trunicate"; function = "data_trun"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Add"; function = "data_add"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Scramble"; function = "data_scramble"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Input"; function = "data_input"; data = "12"; special = null},/obj/item/weapon/storage/disk_kit/disks2{name = "Data-Controllers"},/turf/station/floor,/area/toxinlab)
+"iS" = (/obj/machinery/firealarm{pixel_x = 32},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/hallways/labaccess)
+"iT" = (/obj/watertank,/turf/station/floor,/area/oxygen_storage)
+"iU" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/hallways/eastairlock)
+"iV" = (/obj/machinery/door/window{dir = 8},/turf/station/floor,/area/hallways/eastairlock)
+"iW" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/medical)
+"iX" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/landmark/alterations{name = "id computer"},/turf/station/floor,/area/medical)
+"iY" = (/obj/machinery/alarm{pixel_y = -32},/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area/medical)
+"iZ" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/medical)
+"ja" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/floor,/area/toxinlab)
+"jb" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/mob/monkey,/turf/station/floor,/area/toxinlab)
+"jc" = (/obj/window{dir = 8},/obj/window{dir = 1},/obj/machinery/atmoalter/canister/anesthcanister,/turf/station/floor,/area/toxinlab)
+"jd" = (/obj/item/weapon/card/data{name = "M-conv-H"; function = "worthless"; data = "SBSWAVVWFWVAZSFBS"; special = "human"},/obj/item/weapon/card/data{name = "H-conv-M"; function = "worthless"; data = "CDAFNSDHE"; special = "monkey"},/obj/window{dir = 1},/turf/station/floor,/area/toxinlab)
+"je" = (/obj/item/weapon/storage/disk_kit/disks,/turf/station/floor,/area/toxinlab)
+"jf" = (/obj/machinery/firealarm{pixel_x = -32},/turf/station/floor,/area/hallways/centralhall)
+"jg" = (/obj/start{name = "Research Technician"},/turf/station/floor,/area/hallways/centralhall)
+"jh" = (/obj/machinery/door/airlock,/turf/station/floor,/area)
+"ji" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/hallways/eastairlock)
+"jj" = (/obj/closet,/turf/station/floor,/area/hallways/eastairlock)
+"jk" = (/obj/landmark{name = "CTF-wardrobe-Medical"},/turf/station/floor,/area/medical)
+"jl" = (/obj/window{dir = 4},/turf/station/floor,/area/medical)
+"jm" = (/obj/stool/bed,/turf/station/floor,/area/medical)
+"jn" = (/obj/stool/bed,/obj/item/weapon/radio/intercom{pixel_y = -32},/turf/station/floor,/area/medical)
+"jo" = (/obj/machinery/atmoalter/siphs/scrubbers/port,/turf/station/floor,/area/medical)
+"jp" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/medical)
+"jq" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/sp_start{name = "gooddoggytreat"; desc = "Monkey in Med. Lab."; special = 3},/turf/station/floor,/area/toxinlab)
+"jr" = (/obj/window{dir = 8},/obj/machinery/firealarm{pixel_y = -32},/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/toxinlab)
+"js" = (/obj/item/weapon/card/data{name = "DNA-help"; function = "dna_seq"},/turf/station/floor,/area/toxinlab)
+"jt" = (/obj/item/weapon/card/data{name = "C-Help"; function = "dna_help"},/turf/station/floor,/area/toxinlab)
+"ju" = (/obj/item/weapon/card/data{name = "M-Mutate"; function = "data_mutate"; data = "14A"; special = ""},/obj/item/weapon/card/data{name = "S-Mutate"; function = "data_mutate"; data = "CDE"; special = ""},/obj/item/weapon/card/data{name = "A-Mutate"; function = "data_mutate"; data = "AEC"; special = ""},/turf/station/floor,/area/toxinlab)
+"jv" = (/obj/start{name = "Research Assistant"},/turf/station/floor,/area/hallways/centralhall)
+"jw" = (/turf/station/wall,/area/testlab1)
+"jx" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/closet/l3closet,/turf/station/floor,/area/testlab1)
+"jy" = (/turf/station/floor,/area/testlab1)
+"jz" = (/obj/table,/obj/item/weapon/storage/toolbox,/obj/item/weapon/clothing/glasses/sunglasses,/turf/station/floor,/area/testlab1)
+"jA" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/pen,/turf/station/floor,/area/testlab1)
+"jB" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/pill_canister/antitoxin,/turf/station/floor,/area/testlab1)
+"jC" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/atmoalter/heater,/turf/station/floor,/area/testlab1)
+"jD" = (/obj/landmark/alterations{name = "barrier"},/turf/station/wall,/area)
+"jE" = (/obj/machinery/door/window{dir = 4},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/medical)
+"jF" = (/obj/machinery/door/window{dir = 8},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/medical)
+"jG" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "UI-Replace"; function = "dna_replace"; special = "UI"},/obj/item/weapon/card/data{name = "UE-Replace"; function = "dna_replace"; special = "UE"},/obj/item/weapon/card/data{name = "SE-Replace"; function = "dna_replace"; special = "SE"},/obj/item/weapon/card/data{name = "SI-Replace"; function = "dna_replace"; special = "SI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Replace"},/turf/station/floor,/area/toxinlab)
+"jH" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "Disk-Display"; function = "disk_dis"; data = ""; special = null},/obj/item/weapon/card/data{name = "Disk-Erase"; function = "disk_erase"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Disk-Copy"; function = "disk_copy"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Clear"; function = "data_clear"; data = "12"; special = null},/obj/item/weapon/storage/disk_kit/disks2{name = "Disk-Controllers"},/turf/station/floor,/area/toxinlab)
+"jI" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "UE-Human"; data = "493DB249EB6D13236100A37000800AB71"},/obj/item/weapon/card/data{name = "SI-Human"; data = "5BDFE293BA5500F9FFFD500AAFFE"},/obj/item/weapon/card/data{name = "SE-Human"; data = "CDE375C9A6C25A7DBDA50EC05AC6CEB63"},/obj/item/weapon/storage/disk_kit/disks2{name = "Human DNA"},/turf/station/floor,/area/toxinlab)
+"jJ" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "SE-Monkey"; data = "CDEAF5B90AADBC6BA8033DB0A7FD613FA"},/obj/item/weapon/card/data{name = "SI-Monkey"; data = "2B6696D2B127E5A4"},/obj/item/weapon/card/data{name = "UE-Monkey"; data = "C8FFFE7EC09D80AEDEDB9A5A0B4085B61"},/obj/item/weapon/storage/disk_kit/disks2{name = "Monkey DNA"},/turf/station/floor,/area/toxinlab)
+"jK" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "SE-Add"; function = "dna_add"; special = "SE"},/obj/item/weapon/card/data{name = "SI-Add"; function = "dna_add"; special = "SI"},/obj/item/weapon/card/data{name = "UE-Add"; function = "dna_add"; special = "UE"},/obj/item/weapon/card/data{name = "UI-Add"; function = "dna_add"; special = "UI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Add"},/turf/station/floor,/area/toxinlab)
+"jL" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "UE-Trunicate"; function = "dna_trun"; data = "32"; special = "UE"},/obj/item/weapon/card/data{name = "SI-Trunicate"; function = "dna_trun"; data = "16"; special = "SI"},/obj/item/weapon/card/data{name = "SE-Trunicate"; function = "dna_trun"; data = "32"; special = "SE"},/obj/item/weapon/card/data{name = "UI-Trunicate"; function = "dna_trun"; data = "12"; special = "UI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Trunicate"},/turf/station/floor,/area/toxinlab)
+"jM" = (/obj/machinery/door/window,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/hallways/centralhall)
+"jN" = (/obj/machinery/door/airlock{r_access = 1; r_lab = 3},/turf/station/floor,/area/hallways/centralhall)
+"jO" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/testlab1)
+"jP" = (/obj/item/weapon/clipboard,/turf/station/floor,/area/testlab1)
+"jQ" = (/obj/machinery/firealarm{pixel_x = -32},/turf/station/floor,/area/hallways/eastairlock)
+"jR" = (/obj/secloset/personal,/turf/station/floor,/area/crew_quarters)
+"jS" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/secloset/personal,/turf/station/floor,/area/crew_quarters)
+"jT" = (/obj/machinery/alarm{pixel_y = 32},/obj/secloset/personal,/turf/station/floor,/area/crew_quarters)
+"jU" = (/obj/machinery/computer/card,/turf/station/floor,/area/hallways/loungehall)
+"jV" = (/turf/station/floor,/area/hallways/loungehall)
+"jW" = (/obj/closet/emcloset,/turf/station/floor,/area/hallways/loungehall)
+"jX" = (/turf/station/wall,/area/hallways/loungehall)
+"jY" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/floor,/area/hallways/loungehall)
+"jZ" = (/obj/machinery/alarm{pixel_y = 32},/turf/station/floor,/area/hallways/loungehall)
+"ka" = (/obj/machinery/firealarm{pixel_x = -32},/turf/station/floor,/area/testlab1)
+"kb" = (/obj/item/weapon/radio/intercom{pixel_x = 32},/turf/station/floor,/area/testlab1)
+"kc" = (/obj/machinery/atmoalter/siphs/scrubbers/port,/turf/station/floor,/area/hallways/eastairlock)
+"kd" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/crew_quarters)
+"ke" = (/turf/station/floor,/area/crew_quarters)
+"kf" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/crew_quarters)
+"kg" = (/obj/machinery/firealarm{pixel_x = 32},/turf/station/floor,/area/crew_quarters)
+"kh" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/hallways/loungehall)
+"ki" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/hallways/loungehall)
+"kj" = (/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area/hallways/loungehall)
+"kk" = (/obj/machinery/firealarm{pixel_y = 32},/turf/station/floor,/area/hallways/loungehall)
+"kl" = (/obj/item/weapon/storage/toolbox,/turf/station/floor,/area/hallways/loungehall)
+"km" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/turf/station/floor,/area/hallways/loungehall)
+"kn" = (/obj/machinery/atmoalter/siphs/fullairsiphon/port,/turf/station/floor,/area/hallways/loungehall)
+"ko" = (/obj/machinery/firealarm{pixel_x = 0; pixel_y = 32},/turf/station/floor,/area/hallways/loungehall)
+"kp" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/hallways/loungehall)
+"kq" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/testlab1)
+"kr" = (/obj/start{name = "Toxin Researcher"},/turf/station/floor,/area/testlab1)
+"ks" = (/obj/machinery/door/airlock{r_access = 1; r_lab = 3},/turf/station/floor,/area/hallways/eastairlock)
+"kt" = (/obj/machinery/door/firedoor,/obj/machinery/door/window,/turf/station/floor,/area/crew_quarters)
+"ku" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/hallways/loungehall)
+"kv" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/atmoalter/siphs/scrubbers/port,/turf/station/floor,/area/hallways/loungehall)
+"kw" = (/turf/station/floor,/area/transport_tube)
+"kx" = (/obj/machinery/camera{dir = 8; c_tag = "Toxin Research Lab"},/turf/station/floor,/area/testlab1)
+"ky" = (/obj/machinery/atmoalter/siphs/fullairsiphon/port,/turf/station/floor,/area/hallways/eastairlock)
+"kz" = (/turf/station/wall,/area/crew_quarters)
+"kA" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; r_engine = 0; r_access = 4; r_lab = 4},/turf/station/floor,/area/crew_quarters)
+"kB" = (/obj/machinery/door/window,/turf/station/floor,/area/hallways/loungehall)
+"kC" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/hallways/labaccess)
+"kD" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/transport_tube)
+"kE" = (/turf/station/floor{icon_state = "Floor1"; intact = 0},/area/transport_tube)
+"kF" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/watertank,/turf/station/floor,/area/testlab1)
+"kG" = (/obj/stool/bed,/obj/item/weapon/bedsheet,/turf/station/floor,/area/crew_quarters)
+"kH" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/floor,/area/hallways/loungehall)
+"kI" = (/turf/station/r_wall,/area/hallways/labaccess)
+"kJ" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/security)
+"kK" = (/obj/item/weapon/extinguisher,/turf/station/floor,/area/testlab1)
+"kL" = (/obj/machinery/computer/atmosphere/siphonswitch,/turf/station/floor,/area/testlab1)
+"kM" = (/turf/station/r_wall,/area/testlab1)
+"kN" = (/obj/table{icon_state = "alone"},/turf/station/floor,/area/crew_quarters)
+"kO" = (/obj/rack,/obj/item/weapon/clothing/under/blue,/obj/item/weapon/radio/headset,/turf/station/floor,/area/crew_quarters)
+"kP" = (/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor,/area/lounge)
+"kQ" = (/turf/station/floor,/area/lounge)
+"kR" = (/obj/watertank,/turf/station/floor,/area/lounge)
+"kS" = (/obj/secloset/security1,/turf/station/floor,/area/security)
+"kT" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/clipboard,/obj/item/weapon/paper/courtroom,/turf/station/floor,/area/security)
+"kU" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/table,/obj/machinery/recharger,/obj/item/weapon/clothing/glasses/thermal,/turf/station/floor,/area/security)
+"kV" = (/obj/secloset/security2,/turf/station/floor,/area/security)
+"kW" = (/obj/window{dir = 4},/turf/station/floor,/area/security)
+"kX" = (/turf/station/floor,/area/security)
+"kY" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/security)
+"kZ" = (/obj/machinery/firealarm{pixel_x = 32},/obj/window{dir = 4},/turf/station/floor,/area/security)
+"la" = (/turf/station/r_wall,/area/security)
+"lb" = (/obj/machinery/injector{dir = 1},/turf/station/wall,/area/testlab1)
+"lc" = (/obj/grille,/obj/window{dir = 8},/obj/window,/obj/window{dir = 1},/turf/station/floor,/area/testlab1)
+"ld" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/floor,/area/testlab1)
+"le" = (/obj/closet/emcloset,/turf/station/floor,/area/shuttle_airlock)
+"lf" = (/turf/station/floor,/area/shuttle_airlock)
+"lg" = (/obj/landmark{name = "Nuclear-Closet"},/turf/station/floor,/area/shuttle_airlock)
+"lh" = (/obj/landmark/alterations{name = "prison shuttle"},/turf/station/floor,/area/shuttle_airlock)
+"li" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area/crew_quarters)
+"lj" = (/obj/machinery/door/window{dir = 8},/turf/station/floor,/area/crew_quarters)
+"lk" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/lounge)
+"ll" = (/obj/stool,/turf/station/floor,/area/lounge)
+"lm" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/lounge)
+"ln" = (/obj/landmark{name = "CTF-wardrobe-Lounge"},/turf/station/floor,/area/lounge)
+"lo" = (/turf/station/wall,/area/aircontrol)
+"lp" = (/obj/machinery/door/airlock{r_air = 1},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/aircontrol)
+"lq" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/secloset/security1,/turf/station/floor,/area/security)
+"lr" = (/obj/machinery/firealarm{pixel_y = 32},/turf/station/floor,/area/security)
+"ls" = (/obj/start{name = "Forensic Technician"},/turf/station/floor,/area/security)
+"lt" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/security)
+"lu" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/security)
+"lv" = (/obj/table,/obj/item/weapon/game_kit,/turf/station/floor,/area/security)
+"lw" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/closet/wardrobe/orange,/turf/station/floor,/area/security)
+"lx" = (/obj/machinery/door/airlock{r_access = 1; r_lab = 2},/turf/station/floor,/area/testlab1)
+"ly" = (/obj/landmark/alterations{name = "Experimental Technology"},/turf/station/floor,/area/testlab1)
+"lz" = (/obj/machinery/alarm{pixel_x = 32},/obj/landmark/alterations{name = "Experimental Technology"},/turf/station/floor,/area/testlab1)
+"lA" = (/obj/item/weapon/radio/intercom{pixel_x = -32},/turf/station/floor,/area/shuttle_airlock)
+"lB" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/shuttle_airlock)
+"lC" = (/obj/stool/bed,/turf/station/floor,/area/sleep_area/annexe)
+"lD" = (/obj/closet/wardrobe,/turf/station/floor,/area/crew_quarters)
+"lE" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/closet/wardrobe/mixed,/turf/station/floor,/area/crew_quarters)
+"lF" = (/obj/closet/wardrobe/mixed,/turf/station/floor,/area/crew_quarters)
+"lG" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/table{icon_state = "alone"},/obj/bedsheetbin,/turf/station/floor,/area/crew_quarters)
+"lH" = (/obj/closet,/turf/station/floor,/area/crew_quarters)
+"lI" = (/obj/machinery/firealarm{pixel_x = 32},/obj/landmark/alterations{name = "id computer"},/turf/station/floor,/area/crew_quarters)
+"lJ" = (/obj/machinery/camera{dir = 4; c_tag = "Lounge/Meeting Area"},/turf/station/floor,/area/lounge)
+"lK" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/paper/Internal,/obj/item/weapon/paper/sop,/obj/item/weapon/wirecutters,/obj/item/weapon/wrapping_paper,/turf/station/floor,/area/lounge)
+"lL" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/paper/Toxin,/obj/item/weapon/paper/sop,/obj/item/weapon/paper/jobs,/obj/item/weapon/pen,/obj/landmark/alterations{name = "recharger"},/turf/station/floor,/area/lounge)
+"lM" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/turf/station/floor,/area/airintake)
+"lN" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/obj/window{dir = 4},/turf/station/floor,/area/airintake)
+"lO" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/landmark{name = "CTF-wardrobe-Atmo"},/turf/station/floor,/area/aircontrol)
+"lP" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark{name = "CTF-wardrobe-Atmo"},/turf/station/floor,/area/aircontrol)
+"lQ" = (/turf/station/floor,/area/aircontrol)
+"lR" = (/obj/machinery/atmoalter/siphs/fullairsiphon,/turf/station/floor,/area/aircontrol)
+"lS" = (/turf/station/r_wall,/area/aircontrol)
+"lT" = (/obj/start{name = "Security Officer"},/turf/station/floor,/area/security)
+"lU" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; r_engine = 0; r_access = 3; r_lab = 0},/turf/station/floor,/area/security)
+"lV" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; r_engine = 0; r_access = 3; r_lab = 0},/turf/station/floor,/area/security)
+"lW" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/turf/station/floor,/area/security)
+"lX" = (/obj/item/weapon/bedsheet,/turf/station/floor,/area/security)
+"lY" = (/obj/stool/bed,/turf/station/floor,/area/security)
+"lZ" = (/obj/machinery/atmoalter/siphs/scrubbers/port,/turf/station/floor,/area/testlab1)
+"ma" = (/obj/machinery/door/airlock,/turf/station/floor,/area/testlab1)
+"mb" = (/obj/machinery/firealarm{pixel_x = -32},/turf/station/floor,/area/shuttle_airlock)
+"mc" = (/obj/landmark{name = "CTF-rogue"},/turf/station/floor,/area/shuttle_airlock)
+"md" = (/obj/landmark{name = "Nuclear-Bomb"},/turf/station/floor,/area/shuttle_airlock)
+"me" = (/obj/grille,/obj/window{dir = 8},/turf/station/floor,/area)
+"mf" = (/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/sleep_area/annexe)
+"mg" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/sleep_area/annexe)
+"mh" = (/turf/station/floor,/area/sleep_area/annexe)
+"mi" = (/obj/machinery/camera{dir = 4; c_tag = "Crew Sleeping Area"},/turf/station/floor,/area/sleep_area)
+"mj" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/sleep_area)
+"mk" = (/turf/station/floor,/area/sleep_area)
+"ml" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/sleep_area)
+"mm" = (/obj/item/weapon/radio/intercom{pixel_x = 32},/turf/station/floor,/area/sleep_area)
+"mn" = (/obj/item/weapon/radio/intercom{pixel_x = -32},/turf/station/floor,/area/lounge)
+"mo" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/paper_bin,/obj/item/weapon/paper/Internal,/obj/item/weapon/paper/Map,/obj/item/weapon/paper/jobs,/obj/item/weapon/paper/sop,/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/turf/station/floor,/area/lounge)
+"mp" = (/obj/table{icon_state = "sides"; dir = 4},/obj/item/weapon/paper/Map,/obj/item/weapon/paper/sop,/obj/item/weapon/radio/signaler,/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/lounge)
+"mq" = (/turf/station/floor{oxygen = 0; poison = 3e+006; n2 = 0},/area/airintake)
+"mr" = (/obj/window{dir = 4},/turf/station/floor{oxygen = 0; poison = 3e+006; n2 = 0},/area/airintake)
+"ms" = (/obj/machinery/door/airlock{r_air = 1},/turf/station/floor,/area/aircontrol)
+"mt" = (/obj/start{name = "Staff Assistant"},/turf/station/floor,/area/security)
+"mu" = (/obj/window{dir = 1},/turf/station/floor,/area/security)
+"mv" = (/obj/machinery/camera{dir = 4; c_tag = "Prison"},/turf/station/floor,/area/security)
+"mw" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/stool/bed,/turf/station/floor,/area/security)
+"mx" = (/obj/machinery/camera{dir = 4; c_tag = "Shuttle Bay"},/turf/station/floor,/area/shuttle_airlock)
+"my" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/shuttle_airlock)
+"mz" = (/obj/stool/bed,/obj/machinery/camera{dir = 4; c_tag = "Sleeping Area Annex"},/turf/station/floor,/area/sleep_area/annexe)
+"mA" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/sleep_area/annexe)
+"mB" = (/obj/stool/bed,/turf/station/floor,/area/sleep_area)
+"mC" = (/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/weldingtool,/obj/item/weapon/tank/oxygentank,/turf/station/floor,/area/sleep_area)
+"mD" = (/obj/item/weapon/clothing/suit/firesuit,/turf/station/floor,/area/sleep_area)
+"mE" = (/obj/landmark{name = "CTF-supply-Lounge"},/turf/station/floor,/area/lounge)
+"mF" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/paper/Toxin,/obj/item/weapon/paper/sop,/obj/manifest,/turf/station/floor,/area/lounge)
+"mG" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/paper/Internal,/obj/item/weapon/paper/sop,/obj/item/weapon/paper/jobs,/obj/item/weapon/game_kit,/turf/station/floor,/area/lounge)
+"mH" = (/obj/landmark/alterations{name = "Experimental Technology"},/turf/station/floor,/area/lounge)
+"mI" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/floor,/area/airintake)
+"mJ" = (/obj/machinery/atmoalter/siphs/scrubbers,/obj/window{dir = 4},/turf/station/floor,/area/airintake)
+"mK" = (/obj/machinery/atmoalter/siphs/scrubbers,/turf/station/floor,/area/aircontrol)
+"mL" = (/obj/machinery/computer/secure_data,/turf/station/floor,/area/security)
+"mM" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/turf/station/floor,/area/security)
+"mN" = (/obj/item/weapon/storage/trackimp_kit,/turf/station/floor,/area/security)
+"mO" = (/obj/item/weapon/paper_bin,/turf/station/floor,/area/security)
+"mP" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/storage/toolbox,/obj/item/weapon/clothing/ears/earmuffs,/turf/station/floor,/area/security)
+"mQ" = (/obj/machinery/sec_lock{pixel_x = 32},/obj/window{dir = 4},/turf/station/floor,/area/security)
+"mR" = (/obj/machinery/atmoalter/siphs/fullairsiphon/port,/turf/station/floor,/area/testlab1)
+"mS" = (/obj/grille,/turf/station/floor,/area/testlab1)
+"mT" = (/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor,/area/testlab1)
+"mU" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/landmark/alterations{name = "Prisoners Wardrobe"},/turf/station/floor,/area/shuttle_airlock)
+"mV" = (/obj/landmark/alterations{name = "Prisoners Wardrobe"},/turf/station/floor,/area/shuttle_airlock)
+"mW" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/sleep_area/annexe)
+"mX" = (/obj/item/weapon/storage/backpack,/turf/station/floor,/area/lounge)
+"mY" = (/turf/station/floor,/area/airintake)
+"mZ" = (/obj/window{dir = 4},/obj/window{dir = 8},/obj/machinery/alarm,/turf/station/floor,/area/airintake)
+"na" = (/obj/machinery/alarm,/turf/station/floor,/area/airintake)
+"nb" = (/obj/window{dir = 4},/turf/station/floor,/area/airintake)
+"nc" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/infra,/obj/item/weapon/infra,/obj/item/weapon/radio/signaler,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/prox_sensor,/obj/item/weapon/prox_sensor,/obj/item/weapon/clipboard,/turf/station/floor,/area/security)
+"nd" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/infra,/obj/item/weapon/infra,/obj/item/weapon/radio/signaler,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/prox_sensor,/obj/item/weapon/prox_sensor,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/dropper,/turf/station/floor,/area/security)
+"ne" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/infra,/obj/item/weapon/infra,/obj/item/weapon/radio/signaler,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/prox_sensor,/obj/item/weapon/prox_sensor,/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/security)
+"nf" = (/obj/machinery/computer/security,/turf/station/floor,/area/security)
+"ng" = (/obj/machinery/computer/card,/turf/station/floor,/area/security)
+"nh" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/closet/wardrobe/red,/turf/station/floor,/area/security)
+"ni" = (/obj/closet/wardrobe/orange,/turf/station/floor,/area/security)
+"nj" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; r_engine = 0; r_access = 4; r_lab = 4},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/security)
+"nk" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; r_engine = 0; r_access = 4; r_lab = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/security)
+"nl" = (/obj/window{dir = 10},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/shuttle_airlock)
+"nm" = (/obj/machinery/door/airlock,/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/shuttle_airlock)
+"nn" = (/obj/grille,/obj/window,/obj/window{dir = 1},/obj/landmark/alterations{name = "barrier"},/turf/station/floor,/area/shuttle_airlock)
+"no" = (/obj/stool/bed,/obj/machinery/firealarm{pixel_x = -32},/turf/station/floor,/area/sleep_area/annexe)
+"np" = (/obj/machinery/door/window,/turf/station/floor,/area)
+"nq" = (/obj/landmark{name = "CTF-base-Lounge"},/turf/station/floor,/area/lounge)
+"nr" = (/obj/grille,/turf/station/floor{oxygen = 0; poison = 3e+006; n2 = 0},/area/airintake)
+"ns" = (/obj/window{dir = 4},/obj/grille,/turf/station/floor{oxygen = 0; poison = 3e+006; n2 = 0},/area/airintake)
+"nt" = (/obj/machinery/door/firedoor,/turf/station/floor,/area/aircontrol)
+"nu" = (/obj/window{dir = 4},/turf/station/floor,/area)
+"nv" = (/obj/machinery/door/firedoor,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/shuttle_airlock)
+"nw" = (/obj/window{dir = 8},/turf/station/floor,/area)
+"nx" = (/obj/machinery/door/window{dir = 4},/turf/station/floor,/area)
+"ny" = (/obj/window,/turf/station/floor{oxygen = 0; poison = 3e+006; n2 = 0},/area/airintake)
+"nz" = (/obj/window{dir = 4},/obj/window,/turf/station/floor{oxygen = 0; poison = 3e+006; n2 = 0},/area/airintake)
+"nA" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/aircontrol)
+"nB" = (/obj/landmark/alterations{name = "Experimental Technology"},/turf/station/floor,/area/aircontrol)
+"nC" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark/alterations{name = "Experimental Technology"},/turf/station/floor,/area/aircontrol)
+"nD" = (/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/floor,/area/aircontrol)
+"nE" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/aircontrol)
+"nF" = (/obj/window{dir = 10},/turf/station/floor,/area/shuttle_airlock)
+"nG" = (/obj/machinery/door/airlock,/turf/station/floor,/area/shuttle_airlock)
+"nH" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/extinguisher,/turf/station/floor,/area)
+"nI" = (/obj/machinery/computer/atmosphere/siphonswitch,/obj/window{dir = 4},/turf/station/floor,/area/airintake)
+"nJ" = (/obj/machinery/camera{dir = 8; c_tag = "Atmo. Gas Storage"},/turf/station/floor,/area/aircontrol)
+"nK" = (/turf/space,/area/shuttle)
+"nL" = (/obj/machinery/camera{dir = 4; c_tag = "Disaster Response Center"},/turf/station/floor,/area)
+"nM" = (/obj/stool/chair{dir = 1},/turf/station/floor,/area/aircontrol)
+"nN" = (/obj/landmark{name = "CTF-base-Atmo"},/turf/station/floor,/area/aircontrol)
+"nO" = (/obj/landmark{name = "CTF-supply-Atmo"},/turf/station/floor,/area/aircontrol)
+"nP" = (/obj/machinery/door/airlock,/turf/station/floor,/area/aircontrol)
+"nQ" = (/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area/aircontrol)
+"nR" = (/obj/machinery/camera{dir = 4; c_tag = "Atmospheric Control Room"},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/radio/intercom{pixel_x = -32},/turf/station/floor,/area/aircontrol)
+"nS" = (/obj/start{name = "Atmospheric Technician"},/turf/station/floor,/area/aircontrol)
+"nT" = (/obj/window{dir = 1},/obj/window{dir = 8},/obj/watertank,/turf/station/floor,/area/aircontrol)
+"nU" = (/obj/window{dir = 1},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/aircontrol)
+"nV" = (/obj/window{dir = 1},/obj/item/weapon/clothing/mask/gasmask,/turf/station/floor,/area/aircontrol)
+"nW" = (/obj/window{dir = 1},/obj/machinery/dispenser,/turf/station/floor,/area/aircontrol)
+"nX" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area/aircontrol)
+"nY" = (/obj/machinery/door/window,/turf/station/floor,/area/transport_tube)
+"nZ" = (/obj/machinery/camera{dir = 8; c_tag = "Food Preparation Area"},/turf/station/floor,/area)
+"oa" = (/obj/window{dir = 1},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area/aircontrol)
+"ob" = (/obj/window{dir = 1},/turf/station/floor,/area/aircontrol)
+"oc" = (/obj/window{dir = 1},/obj/weldfueltank,/turf/station/floor,/area/aircontrol)
+"od" = (/obj/window{dir = 4},/obj/window{dir = 1},/obj/weldfueltank,/turf/station/floor,/area/aircontrol)
+"oe" = (/obj/window{dir = 8},/turf/station/floor,/area/aircontrol)
+"of" = (/obj/item/weapon/clothing/under/yellow,/obj/item/weapon/clothing/shoes/orange,/turf/station/floor,/area/aircontrol)
+"og" = (/obj/machinery/door/airlock{r_access = null; r_engine = null; r_air = null},/turf/station/floor,/area)
+"oh" = (/obj/machinery/door/window,/turf/station/floor,/area/aircontrol)
+"oi" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/paper_bin,/turf/station/floor,/area/aircontrol)
+"oj" = (/obj/item/weapon/clipboard,/turf/station/floor,/area/aircontrol)
+"ok" = (/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/turf/station/floor,/area/aircontrol)
+"ol" = (/obj/machinery/atmoalter/siphs/scrubbers/port,/turf/station/floor,/area/aircontrol)
+"om" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/storage/firstaid/toxin,/turf/station/floor,/area)
+"on" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area/aircontrol)
+"oo" = (/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor,/area/aircontrol)
+"op" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/landmark/alterations{name = "Security Locker"},/turf/station/floor,/area/aircontrol)
+"oq" = (/obj/window{dir = 8},/obj/landmark/alterations{name = "id computer"},/turf/station/floor,/area/aircontrol)
+"or" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/wrench,/obj/item/weapon/analyzer,/obj/item/weapon/radio,/obj/item/weapon/screwdriver,/obj/item/weapon/crowbar,/obj/landmark/alterations{name = "recharger"},/turf/station/floor,/area/aircontrol)
+"os" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/wrench,/obj/item/weapon/analyzer,/obj/item/weapon/screwdriver,/obj/item/weapon/extinguisher,/obj/item/weapon/crowbar,/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area/aircontrol)
+"ot" = (/obj/weldfueltank,/turf/station/floor,/area/aircontrol)
+"ou" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/wrench,/obj/item/weapon/analyzer,/obj/item/weapon/radio,/obj/item/weapon/screwdriver,/turf/station/floor,/area/aircontrol)
+"ov" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/wrench,/obj/item/weapon/analyzer,/obj/item/weapon/screwdriver,/obj/item/weapon/extinguisher,/turf/station/floor,/area/aircontrol)
+"ow" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area)
+"ox" = (/obj/machinery/atmoalter/siphs/fullairsiphon/port,/turf/station/floor,/area/aircontrol)
+"oy" = (/obj/rack,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/radio/headset,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/meson,/obj/item/weapon/clothing/glasses/sunglasses,/turf/station/floor,/area)
+"oz" = (/obj/rack,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/radio/headset,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/sunglasses,/turf/station/floor,/area)
+"oA" = (/obj/machinery/dispenser{o2tanks = 20; pltanks = 0},/turf/station/floor,/area)
+"oB" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/storage/toolbox,/turf/station/floor,/area)
+"oC" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/storage/toolbox,/obj/item/weapon/hand_tele,/turf/station/floor,/area)
+"oD" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/storage/firstaid/fire,/turf/station/floor,/area)
+"oE" = (/obj/machinery/computer/pod{name = "Transit system"; id = "t1"},/turf/station/floor,/area/transport_tube)
+"oF" = (/obj/machinery/mass_driver{dir = 4; id = "t1"},/turf/station/floor{icon_state = "Floor1"; intact = 0},/area/transport_tube)
+"oG" = (/obj/machinery/dispenser,/turf/station/floor,/area)
+"oH" = (/obj/closet/emcloset,/turf/station/floor,/area)
+"oI" = (/turf/station/floor{oxygen = 0; poison = 3e+006; n2 = 0},/area)
+"oJ" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/mob/monkey,/turf/station/floor,/area)
+"oK" = (/obj/table{icon_state = "sides"; dir = 4},/obj/item/weapon/card/data{name = "SE-Scan"; function = "dna_scan"; special = "SE"},/obj/item/weapon/card/data{name = "SI-Scan"; function = "dna_scan"; special = "SI"},/obj/item/weapon/card/data{name = "UE-Scan"; function = "dna_scan"; special = "UE"},/obj/item/weapon/card/data{name = "UI-Scan"; function = "dna_scan"; special = "UI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Scan"},/turf/station/floor,/area)
+"oL" = (/obj/item/weapon/storage/disk_kit/disks,/turf/station/floor,/area)
+"oM" = (/obj/machinery/dna_scanner,/turf/station/floor,/area)
+"oN" = (/obj/machinery/scan_console,/turf/station/floor,/area)
+"oO" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/secloset/animal,/turf/station/floor,/area)
+"oP" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/card/data{name = "Data-Trunicate"; function = "data_trun"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Add"; function = "data_add"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Scramble"; function = "data_scramble"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Input"; function = "data_input"; data = "12"; special = null},/obj/item/weapon/storage/disk_kit/disks2{name = "Data-Controllers"},/turf/station/floor,/area)
+"oQ" = (/obj/item/weapon/game_kit,/turf/station/floor,/area)
+"oR" = (/obj/machinery/computer/pod{name = "Mass Driver"; dir = 4; id = 5},/turf/station/floor{oxygen = 0; poison = 3e+006; n2 = 0},/area)
+"oS" = (/obj/grille,/obj/window{dir = 8},/obj/window{dir = 4},/turf/station/floor,/area)
+"oT" = (/obj/machinery/computer/dna,/turf/station/floor,/area)
+"oU" = (/obj/machinery/door/window{icon = 'security.dmi'; r_engine = 0; r_access = 1; r_lab = 1},/turf/station/floor,/area)
+"oV" = (/obj/item/weapon/flasks/oxygen,/obj/item/weapon/flasks/oxygen,/obj/item/weapon/flasks/oxygen,/turf/station/floor,/area)
+"oW" = (/obj/item/weapon/flasks/coolant,/obj/item/weapon/flasks/coolant,/obj/item/weapon/flasks/coolant,/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area)
+"oX" = (/obj/machinery/mass_driver{dir = 4; id = 5},/obj/closet,/turf/station/floor{oxygen = 0; poison = 3e+006; n2 = 0},/area)
+"oY" = (/mob/monkey,/turf/station/floor,/area)
+"oZ" = (/obj/grille,/obj/window{dir = 8},/obj/window{dir = 4},/obj/window,/turf/station/floor,/area)
+"pa" = (/obj/item/weapon/card/data{name = "M-Mutate"; function = "data_mutate"; data = "14A"; special = ""},/obj/item/weapon/card/data{name = "S-Mutate"; function = "data_mutate"; data = "CDE"; special = ""},/obj/item/weapon/card/data{name = "A-Mutate"; function = "data_mutate"; data = "AEC"; special = ""},/turf/station/floor,/area)
+"pb" = (/obj/machinery/restruct,/turf/station/floor,/area)
+"pc" = (/obj/item/weapon/flasks/plasma,/obj/item/weapon/flasks/plasma,/obj/item/weapon/flasks/plasma,/turf/station/floor,/area)
+"pd" = (/obj/item/weapon/card/data{name = "DNA-help"; function = "dna_seq"},/turf/station/floor,/area)
+"pe" = (/obj/machinery/sleeper,/turf/station/floor,/area)
+"pf" = (/obj/machinery/computer/sleep_console,/turf/station/floor,/area)
+"pg" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/syringe,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/s_tox,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/card/id{name = "Zach Licton's ID Card (1>1-0-0)"; access_level = 1; lab_access = 1; engine_access = 0; air_access = 0; registered = "Zach Licton"; assignment = "DNA Researcher"},/obj/item/weapon/pen,/turf/station/floor,/area)
+"ph" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/syringe,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/s_tox,/obj/item/weapon/bottle/antitoxins,/turf/station/floor,/area)
+"pi" = (/obj/machinery/freezer,/turf/station/floor,/area)
+"pj" = (/obj/machinery/pipes/flexipipe,/obj/item/weapon/tank/anesthetic,/turf/station/floor,/area)
+"pk" = (/obj/machinery/cryo_cell,/turf/station/floor,/area)
+"pl" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/rack,/obj/item/weapon/clothing/under/white,/obj/item/weapon/clothing/mask/surgical,/obj/item/weapon/clothing/gloves/latex,/obj/item/weapon/clothing/shoes/white,/turf/station/floor,/area)
+"pm" = (/obj/grille,/obj/window{dir = 8},/obj/window{dir = 4},/obj/window{dir = 1},/turf/station/floor,/area)
+"pn" = (/obj/item/weapon/card/data{name = "M-conv-H"; function = "worthless"; data = "SBSWAVVWFWVAZSFBS"; special = "human"},/obj/item/weapon/card/data{name = "H-conv-M"; function = "worthless"; data = "CDAFNSDHE"; special = "monkey"},/turf/station/floor,/area)
+"po" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/card/data{name = "C-Help"; function = "dna_help"},/turf/station/floor,/area)
+"pp" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/syringe,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/s_tox,/obj/item/weapon/bottle/antitoxins,/turf/station/floor,/area)
+"pq" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/healthanalyzer,/obj/item/weapon/bottle/r_ch_cough,/obj/item/weapon/bottle/r_epil,/turf/station/floor,/area)
+"pr" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/mob/monkey,/turf/station/floor,/area)
+"ps" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/clothing/glasses/regular,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/mask/m_mask,/turf/station/floor,/area)
+"pt" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "UI-Replace"; function = "dna_replace"; special = "UI"},/obj/item/weapon/card/data{name = "UE-Replace"; function = "dna_replace"; special = "UE"},/obj/item/weapon/card/data{name = "SE-Replace"; function = "dna_replace"; special = "SE"},/obj/item/weapon/card/data{name = "SI-Replace"; function = "dna_replace"; special = "SI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Replace"},/turf/station/floor,/area)
+"pu" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "Disk-Display"; function = "disk_dis"; data = ""; special = null},/obj/item/weapon/card/data{name = "Disk-Erase"; function = "disk_erase"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Disk-Copy"; function = "disk_copy"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Clear"; function = "data_clear"; data = "12"; special = null},/obj/item/weapon/storage/disk_kit/disks2{name = "Disk-Controllers"},/turf/station/floor,/area)
+"pv" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "UE-Human"; data = "493DB249EB6D13236100A37000800AB71"},/obj/item/weapon/card/data{name = "SI-Human"; data = "5BDFE293BA5500F9FFFD500AAFFE"},/obj/item/weapon/card/data{name = "SE-Human"; data = "CDE375C9A6C25A7DBDA50EC05AC6CEB63"},/obj/item/weapon/storage/disk_kit/disks2{name = "Human DNA"},/turf/station/floor,/area)
+"pw" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "SE-Monkey"; data = "CDEAF5B90AADBC6BA8033DB0A7FD613FA"},/obj/item/weapon/card/data{name = "SI-Monkey"; data = "2B6696D2B127E5A4"},/obj/item/weapon/card/data{name = "UE-Monkey"; data = "C8FFFE7EC09D80AEDEDB9A5A0B4085B61"},/obj/item/weapon/storage/disk_kit/disks2{name = "Monkey DNA"},/turf/station/floor,/area)
+"px" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "SE-Add"; function = "dna_add"; special = "SE"},/obj/item/weapon/card/data{name = "SI-Add"; function = "dna_add"; special = "SI"},/obj/item/weapon/card/data{name = "UE-Add"; function = "dna_add"; special = "UE"},/obj/item/weapon/card/data{name = "UI-Add"; function = "dna_add"; special = "UI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Add"},/turf/station/floor,/area)
+"py" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/card/data{name = "UE-Trunicate"; function = "dna_trun"; data = "32"; special = "UE"},/obj/item/weapon/card/data{name = "SI-Trunicate"; function = "dna_trun"; data = "16"; special = "SI"},/obj/item/weapon/card/data{name = "SE-Trunicate"; function = "dna_trun"; data = "32"; special = "SE"},/obj/item/weapon/card/data{name = "UI-Trunicate"; function = "dna_trun"; data = "12"; special = "UI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Trunicate"},/turf/station/floor,/area)
+"pz" = (/obj/sp_start{name = "zjm7891"; desc = "Researcher on Med. Sat."; special = null},/turf/station/floor,/area)
+"pA" = (/obj/item/weapon/radio/beacon,/obj/sp_start{name = "phoenixman"; desc = "Researcher on Med. Sat."},/turf/station/floor,/area)
+"pB" = (/obj/machinery/pipes/flexipipe,/turf/station/floor,/area)
+"pC" = (/obj/sp_start{name = "exadv1"; desc = "Researcher on Med. Sat."; special = null},/turf/station/floor,/area)
+"pD" = (/obj/sp_start{name = "ryanfs"; desc = "Researcher on Med. Sat."; special = null},/turf/station/floor,/area)
+"pE" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area)
+"pF" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/storage/firstaid/toxin,/turf/station/floor,/area)
+"pG" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/storage/firstaid/fire,/turf/station/floor,/area)
+"pH" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/bottle/s_tox,/turf/station/floor,/area)
+"pI" = (/obj/grille,/obj/window{dir = 8},/obj/window{dir = 1},/turf/station/floor,/area)
+"pJ" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/floor,/area)
+"pK" = (/obj/grille,/obj/window{dir = 4},/obj/window{dir = 1},/turf/station/floor,/area)
+"pL" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/extinguisher,/obj/stool/bed,/turf/station/floor,/area)
+"pM" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/bedsheetbin,/turf/station/floor,/area)
+"pN" = (/obj/secloset/personal,/obj/window{dir = 8},/turf/station/floor,/area)
+"pO" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/secloset/security1{allowed = "Prison Security,Prison Warden,Security Officer,Captain,Head of Personnel,Head of Research,Secret Base"},/turf/station/floor,/area)
+"pP" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/secloset/highsec{allowed = "Captain,Head of Personnel,Head of Research,Secret Base"},/turf/station/floor,/area)
+"pQ" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/closet/l3closet,/turf/station/floor,/area)
+"pR" = (/obj/closet/l3closet,/turf/station/floor,/area)
+"pS" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/card/data{name = "UI-Replace"; function = "dna_replace"; special = "UI"},/obj/item/weapon/card/data{name = "UE-Replace"; function = "dna_replace"; special = "UE"},/obj/item/weapon/card/data{name = "SE-Replace"; function = "dna_replace"; special = "SE"},/obj/item/weapon/card/data{name = "SI-Replace"; function = "dna_replace"; special = "SI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Replace"},/turf/station/floor,/area)
+"pT" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/card/data{name = "Disk-Display"; function = "disk_dis"; data = ""; special = null},/obj/item/weapon/card/data{name = "Disk-Erase"; function = "disk_erase"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Disk-Copy"; function = "disk_copy"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Clear"; function = "data_clear"; data = "12"; special = null},/obj/item/weapon/storage/disk_kit/disks2{name = "Disk-Controllers"},/turf/station/floor,/area)
+"pU" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/card/data{name = "UE-Human"; data = "493DB249EB6D13236100A37000800AB71"},/obj/item/weapon/card/data{name = "SI-Human"; data = "5BDFE293BA5500F9FFFD500AAFFE"},/obj/item/weapon/card/data{name = "SE-Human"; data = "CDE375C9A6C25A7DBDA50EC05AC6CEB63"},/obj/item/weapon/storage/disk_kit/disks2{name = "Human DNA"},/turf/station/floor,/area)
+"pV" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/card/data{name = "SE-Monkey"; data = "CDEAF5B90AADBC6BA8033DB0A7FD613FA"},/obj/item/weapon/card/data{name = "SI-Monkey"; data = "2B6696D2B127E5A4"},/obj/item/weapon/card/data{name = "UE-Monkey"; data = "C8FFFE7EC09D80AEDEDB9A5A0B4085B61"},/obj/item/weapon/storage/disk_kit/disks2{name = "Monkey DNA"},/turf/station/floor,/area)
+"pW" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/card/data{name = "SE-Add"; function = "dna_add"; special = "SE"},/obj/item/weapon/card/data{name = "SI-Add"; function = "dna_add"; special = "SI"},/obj/item/weapon/card/data{name = "UE-Add"; function = "dna_add"; special = "UE"},/obj/item/weapon/card/data{name = "UI-Add"; function = "dna_add"; special = "UI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Add"},/turf/station/floor,/area)
+"pX" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/card/data{name = "UE-Trunicate"; function = "dna_trun"; data = "32"; special = "UE"},/obj/item/weapon/card/data{name = "SI-Trunicate"; function = "dna_trun"; data = "16"; special = "SI"},/obj/item/weapon/card/data{name = "SE-Trunicate"; function = "dna_trun"; data = "32"; special = "SE"},/obj/item/weapon/card/data{name = "UI-Trunicate"; function = "dna_trun"; data = "12"; special = "UI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Trunicate"},/turf/station/floor,/area)
+"pY" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/locator,/turf/station/floor,/area)
+"pZ" = (/obj/stool/bed,/turf/station/floor,/area)
+"qa" = (/obj/item/weapon/paper_bin,/turf/station/floor,/area)
+"qb" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/window{dir = 8},/turf/station/floor,/area)
+"qc" = (/obj/item/weapon/storage/handcuff_kit,/turf/station/floor,/area)
+"qd" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/storage/handcuff_kit,/turf/station/floor,/area)
+"qe" = (/obj/machinery/door/window{dir = 8},/turf/station/floor,/area)
+"qf" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/computer/dna,/turf/station/floor,/area)
+"qg" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/closet/wardrobe/mixed,/obj/window,/turf/station/floor,/area)
+"qh" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/door/window{dir = 4},/turf/station/floor,/area)
+"qi" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table,/obj/item/weapon/pen,/obj/window,/turf/station/floor,/area)
+"qj" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/clothing/mask/m_mask,/turf/station/floor,/area)
+"qk" = (/obj/item/weapon/clothing/mask/m_mask,/turf/station/floor,/area)
+"ql" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/storage/backpack,/obj/item/weapon/storage/flashbang_kit,/turf/station/floor,/area)
+"qm" = (/obj/item/weapon/storage/backpack,/obj/item/weapon/storage/flashbang_kit,/turf/station/floor,/area)
+"qn" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/card/data{name = "SE-Scan"; function = "dna_scan"; special = "SE"},/obj/item/weapon/card/data{name = "SI-Scan"; function = "dna_scan"; special = "SI"},/obj/item/weapon/card/data{name = "UE-Scan"; function = "dna_scan"; special = "UE"},/obj/item/weapon/card/data{name = "UI-Scan"; function = "dna_scan"; special = "UI"},/obj/item/weapon/storage/disk_kit/disks2{name = "DNA-Scan"},/turf/station/floor,/area)
+"qo" = (/obj/item/weapon/infra_sensor,/turf/station/floor,/area)
+"qp" = (/obj/item/weapon/wrapping_paper,/turf/station/floor,/area)
+"qq" = (/obj/rack,/obj/item/weapon/clothing/suit/sp_suit,/obj/item/weapon/clothing/head/s_helmet,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/sunglasses,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/under/black,/obj/item/weapon/tank/jetpack,/obj/item/weapon/radio/headset,/turf/station/floor,/area)
+"qr" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/rack,/obj/item/weapon/clothing/suit/sp_suit,/obj/item/weapon/clothing/head/s_helmet,/obj/item/weapon/clothing/gloves/black,/obj/item/weapon/clothing/glasses/sunglasses,/obj/item/weapon/clothing/mask/gasmask,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/under/black,/obj/item/weapon/tank/jetpack,/obj/item/weapon/radio/headset,/turf/station/floor,/area)
+"qs" = (/obj/rack,/obj/item/weapon/clothing/suit/swat_suit,/obj/item/weapon/clothing/head/swat_hel,/obj/item/weapon/clothing/shoes/swat,/obj/item/weapon/clothing/gloves/swat,/obj/item/weapon/gun/energy/taser_gun,/obj/item/weapon/clothing/mask/robot/swat,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/glasses/thermal,/obj/item/weapon/radio/headset,/turf/station/floor,/area)
+"qt" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/card/data{name = "Data-Trunicate"; function = "data_trun"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Add"; function = "data_add"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Scramble"; function = "data_scramble"; data = "12"; special = null},/obj/item/weapon/card/data{name = "Data-Input"; function = "data_input"; data = "12"; special = null},/obj/item/weapon/storage/disk_kit/disks2{name = "Data-Controllers"},/turf/station/floor,/area)
+"qu" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/dropper,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/pill_canister/epilepsy,/obj/item/weapon/pill_canister/cough,/turf/station/floor,/area)
+"qv" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/clipboard,/obj/item/weapon/pen,/obj/item/weapon/m_pill/superpill,/turf/station/floor,/area)
+"qw" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/syringe,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/pill_canister/Tourette,/turf/station/floor,/area)
+"qx" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/syndicate_uplink,/turf/station/floor,/area)
+"qy" = (/obj/machinery/recharger,/turf/station/floor,/area)
+"qz" = (/obj/closet/wardrobe/white,/turf/station/floor,/area)
+"qA" = (/obj/secloset/animal,/turf/station/floor,/area)
+"qB" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/sleeper,/turf/station/floor,/area)
+"qC" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/paper_bin,/turf/station/floor,/area)
+"qD" = (/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/turf/station/floor,/area)
+"qE" = (/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/turf/station/floor,/area)
+"qF" = (/obj/item/weapon/sheet/r_metal,/obj/item/weapon/sheet/r_metal,/turf/station/floor,/area)
+"qG" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/suit/firesuit,/turf/station/floor,/area)
+"qH" = (/obj/item/weapon/clothing/suit/straight_jacket,/turf/station/floor,/area)
+"qI" = (/obj/item/weapon/clothing/glasses/meson,/obj/item/weapon/clothing/glasses/thermal,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/ears/earmuffs,/obj/item/weapon/clothing/ears/earmuffs,/turf/station/floor,/area)
+"qJ" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/clothing/glasses/meson,/obj/item/weapon/clothing/glasses/thermal,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/ears/earmuffs,/obj/item/weapon/clothing/ears/earmuffs,/turf/station/floor,/area)
+"qK" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/dispenser,/turf/station/floor,/area)
+"qL" = (/obj/item/weapon/extinguisher,/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area)
+"qM" = (/obj/item/weapon/brutepack,/turf/station/floor,/area)
+"qN" = (/obj/item/weapon/clothing/under/yellow,/obj/item/weapon/clothing/under/orange,/turf/station/floor,/area)
+"qO" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/dispenser,/turf/station/floor,/area)
+"qP" = (/obj/machinery/atmoalter/heater,/turf/station/floor,/area)
+"qQ" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/sleeper,/turf/station/floor,/area)
+"qR" = (/obj/item/weapon/card/id{name = "Secret Base Locker Access"; access_level = 0; lab_access = 0; engine_access = 0; air_access = 0; registered = "Secret Base Use Only"; assignment = "Secret Base"},/turf/station/floor,/area)
+"qS" = (/obj/secloset/security2{allowed = "Prison Security,Prison Warden,Forensic Technician,Security Officer,Captain,Head of Personnel,Head of Research,Secret Base"},/turf/station/floor,/area)
+"qT" = (/obj/sp_start{name = "hobnob"; desc = "Secret Base"; special = null},/turf/station/floor,/area)
+"qU" = (/obj/machinery/atmoalter/canister/n2canister,/turf/station/floor,/area)
+"qV" = (/obj/item/weapon/flasks/coolant,/obj/item/weapon/flasks/oxygen,/obj/item/weapon/flasks/plasma,/turf/station/floor,/area)
+"qW" = (/obj/item/weapon/ointment,/turf/station/floor,/area)
+"qX" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/computer/med_data,/turf/station/floor,/area)
+"qY" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/sp_start{name = "exadv1"; desc = "Secret Base"; special = null},/turf/station/floor,/area)
+"qZ" = (/obj/sp_start{name = "soraku"; desc = "Secret Base"; special = null},/turf/station/floor,/area)
+"ra" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area)
+"rb" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/brutepack,/turf/station/floor,/area)
+"rc" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/pipes/flexipipe,/turf/station/floor,/area)
+"rd" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/machinery/cryo_cell,/turf/station/floor,/area)
+"re" = (/obj/item/weapon/disk/nuclear,/turf/station/floor,/area)
+"rf" = (/obj/machinery/nuclearbomb{icon_state = "nuclearbomb1"; anchored = 1; extended = 1},/turf/station/floor,/area)
+"rg" = (/obj/sp_start{name = "epox"; desc = "Secret Base"; special = null},/turf/station/floor,/area)
+"rh" = (/obj/item/weapon/radio/beacon,/turf/station/floor,/area)
+"ri" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/floor,/area)
+"rj" = (/obj/item/weapon/storage/firstaid/syringes,/turf/station/floor,/area)
+"rk" = (/obj/machinery/computer/security,/turf/station/floor,/area)
+"rl" = (/obj/sp_start{name = "thiefjack"; desc = "Secret Base"; special = null},/turf/station/floor,/area)
+"rm" = (/obj/sp_start{name = "expertadvisor"; desc = "Secret Base"; special = null},/turf/station/floor,/area)
+"rn" = (/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/turf/station/floor,/area)
+"ro" = (/obj/machinery/computer/teleporter,/turf/station/floor,/area)
+"rp" = (/obj/machinery/teleport/station,/turf/station/floor,/area)
+"rq" = (/obj/machinery/teleport/hub,/turf/station/floor,/area)
+"rr" = (/obj/machinery/atmoalter/canister/anesthcanister,/turf/station/floor,/area)
+"rs" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/table,/obj/item/weapon/storage/firstaid/regular,/turf/station/floor,/area)
+"rt" = (/obj/item/weapon/radio,/turf/station/floor,/area)
+"ru" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/ointment,/turf/station/floor,/area)
+"rv" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/hand_tele,/turf/station/floor,/area)
+"rw" = (/obj/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/bottle/rejuvenators,/turf/station/floor,/area)
+"rx" = (/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/obj/window,/turf/station/floor,/area)
+"ry" = (/obj/item/weapon/storage/toolbox,/obj/item/weapon/crowbar,/turf/station/floor,/area)
+"rz" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/storage/trackimp_kit,/turf/station/floor,/area)
+"rA" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/bottle/r_epil,/obj/item/weapon/bottle/r_ch_cough,/turf/station/floor,/area)
+"rB" = (/obj/machinery/atmoalter/siphs/fullairsiphon/port,/turf/station/floor,/area)
+"rC" = (/obj/machinery/atmoalter/siphs/scrubbers/port,/turf/station/floor,/area)
+"rD" = (/obj/watertank,/turf/station/floor,/area)
+"rE" = (/obj/weldfueltank,/turf/station/floor,/area)
+"rF" = (/obj/secloset/medical1{allowed = "Medical Researcher,Prison Doctor,Medical Doctor,Captain,Head of Research,Secret Base"},/turf/station/floor,/area)
+"rG" = (/obj/secloset/medical2{allowed = "Medical Researcher,Prison Doctor,Medical Doctor,Captain,Head of Research,Secret Base"},/turf/station/floor,/area)
+"rH" = (/obj/table,/obj/item/weapon/healthanalyzer,/obj/item/weapon/syringe,/obj/item/weapon/bottle/antitoxins,/turf/station/floor,/area)
+"rI" = (/obj/window,/obj/item/weapon/infra_sensor,/turf/station/floor,/area)
+"rJ" = (/obj/window,/obj/item/weapon/wrapping_paper,/turf/station/floor,/area)
+"rK" = (/obj/machinery/computer/pod{id = "sb1"},/turf/station/floor,/area)
+"rL" = (/obj/machinery/mass_driver{dir = 4; id = "sb1"},/obj/machinery/pod{dir = 4},/turf/station/engine/floor,/area)
+"rM" = (/obj/machinery/door/poddoor{id = "sb1"},/turf/station/engine/floor,/area)
+"rN" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/closet/wardrobe/mixed,/turf/station/floor,/area)
+"rO" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/table,/obj/item/weapon/pen,/turf/station/floor,/area)
+"rP" = (/obj/machinery/computer/pod{id = "sb2"},/turf/station/floor,/area)
+"rQ" = (/obj/machinery/door/window,/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/floor,/area)
+"rR" = (/obj/machinery/mass_driver{dir = 4; id = "sb2"},/obj/machinery/recon{dir = 4},/turf/station/engine/floor,/area)
+"rS" = (/obj/machinery/door/poddoor{id = "sb2"},/turf/station/engine/floor,/area)
+"rT" = (/obj/machinery/computer/pod{id = "sb3"},/turf/station/floor,/area)
+"rU" = (/obj/machinery/door/window,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/floor,/area)
+"rV" = (/obj/machinery/mass_driver{dir = 4; id = "sb3"},/obj/machinery/recon{dir = 4},/turf/station/engine/floor,/area)
+"rW" = (/obj/machinery/door/poddoor{id = "sb3"},/turf/station/engine/floor,/area)
+"rX" = (/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/obj/window{dir = 1},/turf/station/floor,/area)
+"rY" = (/obj/machinery/computer/pod{id = "sb4"},/turf/station/floor,/area)
+"rZ" = (/obj/machinery/mass_driver{dir = 4; id = "sb4"},/obj/machinery/recon{dir = 4},/turf/station/engine/floor,/area)
+"sa" = (/obj/machinery/door/poddoor{id = "sb4"},/turf/station/engine/floor,/area)
+"sb" = (/obj/item/weapon/radio/beacon,/turf/space,/area)
+"sc" = (/obj/machinery/computer/pod{id = "sb5"},/turf/station/floor,/area)
+"sd" = (/obj/machinery/mass_driver{dir = 4; id = "sb5"},/turf/station/engine/floor,/area)
+"se" = (/obj/machinery/door/poddoor{id = "sb5"},/turf/station/engine/floor,/area)
+"sf" = (/turf/station/command/wall,/area/supply_station)
+"sg" = (/obj/item/weapon/storage/handcuff_kit,/obj/item/weapon/storage/handcuff_kit,/obj/item/weapon/storage/handcuff_kit,/obj/item/weapon/storage/handcuff_kit,/obj/item/weapon/storage/handcuff_kit,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station)
+"sh" = (/obj/item/weapon/storage/flashbang_kit,/obj/item/weapon/storage/flashbang_kit,/obj/item/weapon/storage/flashbang_kit,/obj/item/weapon/storage/flashbang_kit,/obj/item/weapon/storage/flashbang_kit,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station)
+"si" = (/obj/rack,/obj/item/weapon/clothing/suit/swat_suit,/obj/item/weapon/clothing/head/swat_hel,/obj/item/weapon/clothing/shoes/swat,/obj/item/weapon/clothing/gloves/swat,/obj/item/weapon/gun/energy/taser_gun,/obj/item/weapon/clothing/mask/robot/swat,/obj/item/weapon/clothing/under/black,/obj/item/weapon/clothing/glasses/thermal,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station)
+"sj" = (/turf/station/command/floor,/area/supply_station)
+"sk" = (/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station)
+"sl" = (/obj/item/weapon/storage/backpack,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station)
+"sm" = (/obj/machinery/atmoalter/canister/n2canister,/turf/station/command/floor,/area/supply_station)
+"sn" = (/obj/machinery/firealarm{pixel_x = -32},/turf/station/command/floor,/area/supply_station)
+"so" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/item/weapon/extinguisher,/turf/station/floor,/area)
+"sp" = (/obj/grille,/obj/window{dir = 8},/obj/window,/turf/station/floor,/area)
+"sq" = (/obj/grille,/obj/window{dir = 1},/obj/window,/turf/station/floor,/area)
+"sr" = (/obj/grille,/obj/window{dir = 4},/obj/window,/turf/station/floor,/area)
+"ss" = (/obj/bedsheetbin,/turf/station/command/floor,/area/supply_station)
+"st" = (/obj/item/weapon/storage/trackimp_kit,/turf/station/command/floor,/area/supply_station)
+"su" = (/obj/item/weapon/paper_bin,/obj/item/weapon/game_kit,/turf/station/command/floor,/area/supply_station)
+"sv" = (/obj/machinery/firealarm{pixel_y = 32},/turf/station/command/floor,/area/supply_station)
+"sw" = (/obj/watertank,/turf/station/command/floor,/area/supply_station)
+"sx" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; r_engine = 0; r_access = 4; r_lab = 4},/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station)
+"sy" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 8; r_engine = 0; r_access = 4; r_lab = 4},/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station)
+"sz" = (/obj/closet/l3closet,/turf/station/command/floor,/area/supply_station)
+"sA" = (/obj/machinery/atmoalter/canister/oxygencanister,/turf/station/command/floor,/area/supply_station)
+"sB" = (/obj/item/weapon/storage/toolbox,/obj/item/weapon/storage/backpack,/obj/item/weapon/clothing/glasses/sunglasses,/obj/item/weapon/clothing/ears/earmuffs,/turf/station/command/floor,/area/supply_station)
+"sC" = (/obj/item/weapon/tile,/obj/item/weapon/rods,/turf/station/command/floor,/area/supply_station)
+"sD" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/clothing/mask/surgical,/obj/item/weapon/clothing/mask/surgical,/obj/item/weapon/clothing/mask/surgical,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/radio/electropack,/obj/item/weapon/radio/electropack,/turf/station/command/floor,/area/supply_station)
+"sE" = (/obj/machinery/atmoalter/canister/poisoncanister,/turf/station/command/floor,/area/supply_station)
+"sF" = (/obj/machinery/firealarm{pixel_x = 32},/turf/station/command/floor,/area/supply_station)
+"sG" = (/obj/item/weapon/flasks/coolant,/obj/item/weapon/flasks/oxygen,/obj/item/weapon/flasks/plasma,/turf/station/command/floor,/area/supply_station)
+"sH" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/infra,/obj/item/weapon/infra,/obj/item/weapon/infra_sensor,/obj/item/weapon/locator,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/timer,/turf/station/command/floor,/area/supply_station)
+"sI" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/infra,/obj/item/weapon/infra,/obj/item/weapon/infra_sensor,/obj/item/weapon/locator,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/timer,/turf/station/command/floor,/area/supply_station)
+"sJ" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/igniter,/obj/item/weapon/igniter,/obj/item/weapon/infra,/obj/item/weapon/infra,/obj/item/weapon/infra_sensor,/obj/item/weapon/locator,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/radio/signaler,/obj/item/weapon/timer,/obj/item/weapon/timer,/turf/station/command/floor,/area/supply_station)
+"sK" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/clothing/mask/surgical,/obj/item/weapon/clothing/mask/surgical,/obj/item/weapon/clothing/mask/surgical,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/clothing/mask/m_mask,/obj/item/weapon/radio/electropack,/obj/item/weapon/radio/electropack,/turf/station/command/floor,/area/supply_station)
+"sL" = (/obj/machinery/atmoalter/canister/anesthcanister,/turf/station/command/floor,/area/supply_station)
+"sM" = (/obj/item/weapon/table_parts,/obj/item/weapon/rack_parts,/turf/station/command/floor,/area/supply_station)
+"sN" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/obj/item/weapon/pen,/obj/item/weapon/pen,/obj/item/weapon/pen,/turf/station/command/floor,/area/supply_station)
+"sO" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/disk_kit,/obj/item/weapon/storage/id_kit,/turf/station/command/floor,/area/supply_station)
+"sP" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/storage/gl_kit,/obj/item/weapon/storage/lglo_kit,/obj/item/weapon/storage/stma_kit,/turf/station/command/floor,/area/supply_station)
+"sQ" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/head/helmet,/obj/item/weapon/clothing/suit/armor,/obj/item/weapon/flash,/turf/station/command/floor,/area/supply_station)
+"sR" = (/obj/machinery/dispenser,/turf/station/command/floor,/area/supply_station)
+"sS" = (/obj/weldfueltank,/turf/station/command/floor,/area/supply_station)
+"sT" = (/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/toxin,/turf/station/command/floor,/area/supply_station)
+"sU" = (/obj/table,/obj/item/weapon/storage/firstaid/syringes,/obj/item/weapon/bottle/toxins,/obj/item/weapon/bottle/s_tox,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/r_epil,/obj/item/weapon/bottle/r_ch_cough,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/dropper,/turf/station/command/floor,/area/supply_station)
+"sV" = (/obj/item/weapon/camera,/turf/station/command/floor,/area/supply_station)
+"sW" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/head/helmet,/obj/item/weapon/clothing/suit/armor,/obj/item/weapon/flash,/turf/station/command/floor,/area/supply_station)
+"sX" = (/obj/item/weapon/sheet/metal{amount = 5},/turf/station/command/floor,/area/supply_station)
+"sY" = (/obj/machinery/door/window{dir = 4},/turf/station/command/floor,/area/supply_station)
+"sZ" = (/obj/move/wall,/turf/space,/area/vehicles/shuttle1)
+"ta" = (/obj/move/floor,/obj/window,/obj/window{dir = 1},/obj/grille,/turf/space,/area/vehicles/shuttle1)
+"tb" = (/obj/closet/emcloset,/turf/station/command/floor,/area/supply_station)
+"tc" = (/obj/move/floor,/obj/window{dir = 1},/turf/space,/area/vehicles/shuttle1)
+"td" = (/obj/machinery/door/window,/turf/station/command/floor,/area/supply_station)
+"te" = (/obj/move/floor,/obj/window{dir = 4},/obj/window{dir = 8},/obj/grille,/turf/space,/area/vehicles/shuttle1)
+"tf" = (/obj/move/floor,/obj/window{dir = 8},/turf/space,/area/vehicles/shuttle1)
+"tg" = (/obj/move/floor,/turf/space,/area/vehicles/shuttle1)
+"th" = (/obj/move/floor,/obj/window{dir = 4},/turf/space,/area/vehicles/shuttle1)
+"ti" = (/obj/move/floor,/obj/window{dir = 4},/obj/grille,/turf/space,/area/vehicles/shuttle1)
+"tj" = (/obj/item/weapon/sheet/glass,/obj/item/weapon/sheet/glass,/turf/station/command/floor,/area/supply_station)
+"tk" = (/turf/station/command/wall{icon_state = "CCWall2"},/area/supply_station)
+"tl" = (/obj/move/floor,/obj/shuttle/door,/turf/space,/area/vehicles/shuttle1)
+"tm" = (/obj/machinery/door/airlock,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station)
+"tn" = (/obj/grille,/obj/window{dir = 8},/obj/window{dir = 4},/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station)
+"to" = (/obj/machinery/computer/teleporter,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station)
+"tp" = (/obj/machinery/teleport/station,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station)
+"tq" = (/obj/machinery/teleport/hub,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station)
+"tr" = (/obj/item/weapon/hand_tele,/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station)
+"ts" = (/obj/move/floor,/obj/machinery/connector{dir = 4},/obj/window{dir = 4},/obj/window,/obj/machinery/atmoalter/canister/oxygencanister,/turf/space,/area/vehicles/shuttle1)
+"tt" = (/obj/move/floor,/obj/window{dir = 1},/obj/machinery/shuttle/engine/heater,/turf/space,/area/vehicles/shuttle1)
+"tu" = (/obj/move/floor,/obj/machinery/connector{dir = 8},/obj/window{dir = 8},/obj/window,/obj/machinery/atmoalter/canister/poisoncanister,/turf/space,/area/vehicles/shuttle1)
+"tv" = (/obj/move/floor,/obj/machinery/shuttle/engine/platform,/obj/machinery/pipes/high_capacity{icon_state = "6"; dir = 6; p_dir = 6},/turf/space,/area/vehicles/shuttle1)
+"tw" = (/obj/move/floor,/obj/machinery/shuttle/engine/platform,/obj/machinery/shuttle/engine/router,/turf/space,/area/vehicles/shuttle1)
+"tx" = (/obj/move/floor,/obj/machinery/shuttle/engine/platform,/obj/machinery/pipes/high_capacity{icon_state = "10"; dir = 10; p_dir = 10},/turf/space,/area/vehicles/shuttle1)
+"ty" = (/obj/machinery/computer/pod{name = "Mass Driver"; id = 50},/turf/station/command/floor,/area/supply_station)
+"tz" = (/obj/machinery/mass_driver{dir = 4; id = 50},/obj/machinery/recon{dir = 4},/turf/station/command/floor,/area/supply_station)
+"tA" = (/obj/machinery/door/poddoor{id = 50},/turf/station/command/floor,/area/supply_station)
+"tB" = (/obj/move/wall{icon_state = ""},/obj/machinery/shuttle/engine/platform{dir = 5},/obj/machinery/shuttle/engine/propulsion/burst/left,/turf/space,/area/vehicles/shuttle1)
+"tC" = (/obj/move/wall{icon_state = ""},/obj/machinery/shuttle/engine/platform{dir = 1},/obj/machinery/shuttle/engine/propulsion,/turf/space,/area/vehicles/shuttle1)
+"tD" = (/obj/move/wall{icon_state = ""},/obj/machinery/shuttle/engine/platform{dir = 9},/obj/machinery/shuttle/engine/propulsion/burst/right,/turf/space,/area/vehicles/shuttle1)
+"tE" = (/obj/machinery/firealarm{pixel_x = 32},/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station)
+"tF" = (/turf/station/command/wall{icon_state = "CCWall2"},/area)
+"tG" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/command/floor{density = 1},/area)
+"tH" = (/obj/begin,/turf/station/command/floor{icon_state = "Floor2"},/area)
+"tI" = (/obj/machinery/door/window{dir = 4},/turf/station/command/floor{icon_state = "Floor2"},/area/supply_station)
+"tJ" = (/obj/machinery/hologram_proj,/turf/station/command/floor{icon_state = "Floor2"},/area)
+"tK" = (/turf/station/command/floor{icon_state = "Floor2"},/area)
+"tL" = (/turf/station/command/floor{icon_state = "Floor2"},/area/start)
+"tM" = (/obj/machinery/computer/hologram_comp,/turf/station/command/floor{icon_state = "Floor2"},/area)
+"tN" = (/obj/machinery/door/airlock,/turf/station/command/floor,/area/supply_station)
+"tO" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/command/floor,/area/supply_station)
+"tP" = (/obj/move/wall,/turf/space,/area/shuttle)
+"tQ" = (/obj/move/floor,/obj/window{dir = 1},/obj/window,/obj/grille,/turf/space,/area/shuttle)
+"tR" = (/obj/move/floor,/obj/shuttle/door,/turf/space,/area/shuttle)
+"tS" = (/obj/move/floor,/obj/machinery/sleeper,/turf/space,/area/shuttle)
+"tT" = (/obj/move/floor,/obj/machinery/computer/sleep_console,/turf/space,/area/shuttle)
+"tU" = (/obj/move/floor,/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle)
+"tV" = (/obj/move/floor,/obj/move/wall,/turf/space,/area/shuttle)
+"tW" = (/obj/move/floor,/obj/window{dir = 1},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/space,/area/shuttle)
+"tX" = (/obj/move/floor,/obj/rack,/obj/item/weapon/tank/oxygentank,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/mask/gasmask,/turf/space,/area/shuttle)
+"tY" = (/obj/move/floor,/obj/rack,/obj/item/weapon/tank/oxygentank,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/mask/gasmask,/obj/window{dir = 4},/turf/space,/area/shuttle)
+"tZ" = (/obj/move/floor,/turf/space,/area/shuttle)
+"ua" = (/obj/move/floor,/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle)
+"ub" = (/obj/move/floor,/obj/table,/obj/item/weapon/storage/firstaid/regular,/turf/space,/area/shuttle)
+"uc" = (/obj/move/floor,/obj/window{dir = 1},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/game_kit,/turf/space,/area/shuttle)
+"ud" = (/obj/move/floor,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/space,/area/shuttle)
+"ue" = (/obj/move/floor,/obj/machinery/door/window,/turf/space,/area/shuttle)
+"uf" = (/obj/move/floor,/obj/stool/chair{dir = 4},/turf/space,/area/shuttle)
+"ug" = (/obj/move/floor,/obj/table,/obj/window{dir = 4},/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/syringe,/turf/space,/area/shuttle)
+"uh" = (/obj/move/floor,/obj/window{dir = 4},/obj/window{dir = 8},/obj/grille,/turf/space,/area/shuttle)
+"ui" = (/obj/move/floor,/obj/window{dir = 4},/turf/space,/area/shuttle)
+"uj" = (/obj/move/floor,/obj/machinery/computer/shuttle,/obj/window{dir = 4},/turf/space,/area/shuttle)
+"uk" = (/obj/move/floor,/obj/machinery/door/window{dir = 1},/turf/space,/area/shuttle)
+"ul" = (/obj/move/floor,/obj/table,/obj/window{dir = 4},/obj/item/weapon/radio,/turf/space,/area/shuttle)
+"um" = (/obj/move/floor,/obj/window,/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle)
+"un" = (/obj/move/floor,/obj/window,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/window{dir = 4},/turf/space,/area/shuttle)
+"uo" = (/obj/move/floor,/obj/window,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/space,/area/shuttle)
+"up" = (/turf/station/shuttle/wall,/area)
+"uq" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/shuttle/floor,/area)
+"ur" = (/obj/move/floor,/obj/shuttle/door,/turf/station/shuttle/floor,/area)
+"us" = (/obj/machinery/sleeper,/turf/station/shuttle/floor,/area)
+"ut" = (/obj/machinery/computer/sleep_console,/turf/station/shuttle/floor,/area)
+"uu" = (/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/shuttle/floor,/area)
+"uv" = (/obj/window{dir = 1},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/shuttle/floor,/area)
+"uw" = (/obj/rack,/obj/item/weapon/tank/oxygentank,/obj/item/weapon/clothing/suit/firesuit,/obj/item/weapon/clothing/mask/gasmask,/turf/station/shuttle/floor,/area)
+"ux" = (/turf/station/shuttle/floor,/area)
+"uy" = (/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/shuttle/floor,/area)
+"uz" = (/obj/table,/obj/item/weapon/storage/firstaid/regular,/turf/station/shuttle/floor,/area)
+"uA" = (/obj/window{dir = 1},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/game_kit,/turf/station/shuttle/floor,/area)
+"uB" = (/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/shuttle/floor,/area)
+"uC" = (/obj/machinery/door/window,/turf/station/shuttle/floor,/area)
+"uD" = (/obj/stool/chair{dir = 4},/turf/station/shuttle/floor,/area)
+"uE" = (/obj/table,/obj/item/weapon/syringe,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/bottle/rejuvenators,/obj/window{dir = 4},/turf/station/shuttle/floor,/area)
+"uF" = (/obj/window{dir = 4},/obj/window{dir = 8},/obj/grille,/turf/station/shuttle/floor,/area)
+"uG" = (/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/turf/station/shuttle/floor,/area)
+"uH" = (/obj/window{dir = 4},/turf/station/shuttle/floor,/area)
+"uI" = (/obj/window{dir = 4},/obj/item/weapon/a_gift,/turf/station/shuttle/floor,/area)
+"uJ" = (/obj/machinery/door/window{dir = 1},/turf/station/shuttle/floor,/area)
+"uK" = (/obj/table,/obj/item/weapon/radio,/obj/window{dir = 4},/turf/station/shuttle/floor,/area)
+"uL" = (/obj/window,/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/station/shuttle/floor,/area)
+"uM" = (/obj/window,/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/shuttle/floor,/area)
+"uN" = (/obj/window,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/station/shuttle/floor,/area)
+"uO" = (/turf/station/command/wall/other,/area)
+"uP" = (/obj/secloset/medical1,/turf/station/command/floor/other,/area)
+"uQ" = (/obj/secloset/medical2,/turf/station/command/floor/other,/area)
+"uR" = (/obj/secloset/animal,/turf/station/command/floor,/area)
+"uS" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/storage/firstaid/regular,/turf/station/command/floor,/area)
+"uT" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/firstaid/regular,/turf/station/command/floor,/area)
+"uU" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/firstaid/toxin,/turf/station/command/floor,/area)
+"uV" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/firstaid/toxin,/turf/station/command/floor/other,/area)
+"uW" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/healthanalyzer,/obj/item/weapon/dropper,/turf/station/command/floor/other,/area)
+"uX" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/syringe,/obj/item/weapon/pill_canister/Tourette,/obj/item/weapon/pill_canister/cough,/obj/item/weapon/pill_canister/epilepsy,/turf/station/command/floor/other,/area)
+"uY" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/storage/firstaid/syringes,/turf/station/command/floor/other,/area)
+"uZ" = (/turf/station/command/floor/other,/area)
+"va" = (/turf/station/command/floor,/area)
+"vb" = (/obj/stool/chair,/turf/station/command/floor/other,/area)
+"vc" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/obj/window{dir = 1},/turf/station/command/floor/other,/area)
+"vd" = (/obj/morgue,/turf/station/command/floor/other,/area)
+"ve" = (/obj/machinery/sleeper,/turf/station/command/floor,/area)
+"vf" = (/obj/machinery/computer/sleep_console,/turf/station/command/floor{icon_state = "Floor2"},/area)
+"vg" = (/obj/stool/chair{dir = 4},/turf/station/command/floor/other,/area)
+"vh" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/clipboard,/obj/item/weapon/pen,/turf/station/command/floor/other,/area)
+"vi" = (/obj/machinery/camera{dir = 4; network = "PS13"; c_tag = "Infirmary"},/turf/station/command/floor,/area)
+"vj" = (/obj/start{name = "Prison Doctor"},/turf/station/command/floor{icon_state = "Floor2"},/area)
+"vk" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/paper_bin,/turf/station/command/floor/other,/area)
+"vl" = (/obj/machinery/computer/sleep_console,/turf/station/command/floor,/area)
+"vm" = (/obj/table{icon_state = "sides"; dir = 8},/turf/station/command/floor/other,/area)
+"vn" = (/obj/table{icon_state = "corners"; dir = 9},/turf/station/command/floor/other,/area)
+"vo" = (/obj/table{icon_state = "corners"; dir = 5},/turf/station/command/floor/other,/area)
+"vp" = (/obj/stool/chair{dir = 8},/turf/station/command/floor/other,/area)
+"vq" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/storage/stma_kit,/turf/station/command/floor/other,/area)
+"vr" = (/obj/table{icon_state = "corners"; dir = 10},/turf/station/command/floor/other,/area)
+"vs" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/game_kit,/turf/station/command/floor/other,/area)
+"vt" = (/obj/stool/bed,/obj/item/weapon/bedsheet,/turf/station/command/floor/other,/area)
+"vu" = (/obj/closet/wardrobe/white,/turf/station/command/floor,/area)
+"vv" = (/obj/closet/wardrobe/white,/turf/station/command/floor/other,/area)
+"vw" = (/obj/item/weapon/storage/trackimp_kit,/turf/station/command/floor/other,/area)
+"vx" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/storage/lglo_kit,/turf/station/command/floor/other,/area)
+"vy" = (/obj/machinery/camera{dir = 4; network = "PS13"; c_tag = "Recreation Area (West)"},/turf/station/command/floor/other,/area)
+"vz" = (/obj/stool/chair{dir = 1},/turf/station/command/floor/other,/area)
+"vA" = (/obj/machinery/camera{dir = 8; network = "PS13"; c_tag = "Recreation Area (East)"},/turf/station/command/floor/other,/area)
+"vB" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/turf/station/command/floor/other,/area)
+"vC" = (/obj/grille,/obj/window,/obj/window{dir = 1},/turf/station/command/floor/other,/area)
+"vD" = (/obj/grille,/obj/window,/obj/window{dir = 1},/obj/window{dir = 4},/turf/station/command/floor/other,/area)
+"vE" = (/obj/machinery/door/window{dir = 4},/turf/station/command/floor/other,/area)
+"vF" = (/obj/machinery/door/window{dir = 8},/turf/station/command/floor/other,/area)
+"vG" = (/obj/grille,/obj/window,/obj/window{dir = 1},/obj/window{dir = 8},/turf/station/command/floor/other,/area)
+"vH" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/paper_bin,/turf/station/command/floor/other,/area)
+"vI" = (/obj/machinery/door/firedoor,/obj/grille,/obj/window{dir = 4},/obj/window{dir = 8},/obj/window,/turf/station/command/floor/other,/area)
+"vJ" = (/obj/secloset/security1,/turf/station/command/floor/other,/area)
+"vK" = (/obj/machinery/computer/security{name = "security- PS13"; network = "PS13"},/turf/station/command/floor/other,/area)
+"vL" = (/obj/secloset/security2,/obj/machinery/camera{network = "PS13"; c_tag = "Security Office"},/turf/station/command/floor/other,/area)
+"vM" = (/obj/secloset/security2,/turf/station/command/floor/other,/area)
+"vN" = (/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/storage/toolbox,/turf/station/command/floor/other,/area)
+"vO" = (/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/obj/item/weapon/sheet/metal{amount = 5},/turf/station/command/floor/other,/area)
+"vP" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/storage/firstaid/regular,/turf/station/command/floor/other,/area)
+"vQ" = (/obj/table{icon_state = "sides"; dir = 4},/obj/item/weapon/pen,/turf/station/command/floor/other,/area)
+"vR" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; r_engine = 0; r_access = 3; r_lab = 0},/turf/station/command/floor/other,/area)
+"vS" = (/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/obj/item/weapon/sheet/glass{amount = 5},/turf/station/command/floor/other,/area)
+"vT" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/dropper,/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/s_tox,/turf/station/command/floor/other,/area)
+"vU" = (/obj/table{icon_state = "sides"; dir = 4},/obj/item/weapon/clipboard,/turf/station/command/floor/other,/area)
+"vV" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 1; r_engine = 0; r_access = 3; r_lab = 0},/turf/station/command/floor/other,/area)
+"vW" = (/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/turf/station/command/floor/other,/area)
+"vX" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/clothing/glasses/blindfold,/obj/item/weapon/handcuffs,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/mask/muzzle,/obj/item/weapon/clothing/ears/earmuffs,/turf/station/command/floor/other,/area)
+"vY" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/wrapping_paper,/obj/item/weapon/wirecutters,/turf/station/command/floor/other,/area)
+"vZ" = (/obj/start{name = "Prison Security"},/turf/station/command/floor/other,/area)
+"wa" = (/obj/table{icon_state = "alone"},/obj/item/weapon/wrapping_paper,/obj/item/weapon/wirecutters,/turf/station/command/floor/other,/area)
+"wb" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/storage/firstaid/regular,/turf/station/command/floor/other,/area)
+"wc" = (/obj/table{icon_state = "sides"; dir = 1},/turf/station/command/floor/other,/area)
+"wd" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/pen,/turf/station/command/floor/other,/area)
+"we" = (/obj/item/weapon/clipboard,/obj/item/weapon/clipboard,/turf/station/command/floor/other,/area)
+"wf" = (/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/obj/item/weapon/clothing/suit/straight_jacket,/turf/station/command/floor/other,/area)
+"wg" = (/obj/secloset/animal,/turf/station/command/floor/other,/area)
+"wh" = (/obj/bedsheetbin,/turf/station/command/floor/other,/area)
+"wi" = (/obj/secloset/personal,/turf/station/command/floor/other,/area)
+"wj" = (/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/station/command/floor/other,/area)
+"wk" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 2; r_engine = 0; r_access = 4; r_lab = 4},/turf/station/command/floor/other,/area)
+"wl" = (/obj/closet,/turf/station/command/floor/other,/area)
+"wm" = (/obj/item/weapon/bedsheet,/turf/station/command/floor/other,/area)
+"wn" = (/obj/stool/bed,/turf/station/command/floor/other,/area)
+"wo" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/paper_bin,/turf/station/command/floor/other,/area)
+"wp" = (/obj/table{icon_state = "corners"; dir = 5},/obj/item/weapon/pen,/turf/station/command/floor/other,/area)
+"wq" = (/obj/machinery/sec_lock{pixel_x = -32; a_type = 2},/turf/station/command/floor/other,/area)
+"wr" = (/obj/machinery/sec_lock{pixel_x = 32},/turf/station/command/floor/other,/area)
+"ws" = (/obj/closet/wardrobe/orange,/turf/station/command/floor/other,/area)
+"wt" = (/obj/table{icon_state = "sides"; dir = 4},/turf/station/command/floor/other,/area)
+"wu" = (/obj/table{icon_state = "alone"},/obj/item/weapon/game_kit,/turf/station/command/floor/other,/area)
+"wv" = (/obj/machinery/sec_lock{pixel_x = -32; a_type = 1},/turf/station/command/floor/other,/area)
+"ww" = (/obj/machinery/door/airlock{r_access = 3},/turf/station/command/floor/other,/area)
+"wx" = (/obj/machinery/camera{dir = 4; network = "PS13"; c_tag = "Solitary Cells"},/turf/station/command/floor/other,/area)
+"wy" = (/obj/machinery/computer/data/weapon/log,/turf/station/floor,/area)
+"wz" = (/turf/station/floor/grid,/area)
+"wA" = (/obj/machinery/computer/data/weapon/info,/turf/station/floor,/area)
+"wB" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 4; r_engine = 0; r_access = 3; r_lab = 0},/turf/station/command/floor/other,/area)
+"wC" = (/obj/machinery/door/window{icon = 'security.dmi'; dir = 8; r_engine = 0; r_access = 3; r_lab = 0},/turf/station/command/floor/other,/area)
+"wD" = (/obj/item/weapon/paper_bin,/turf/station/command/floor/other,/area)
+"wE" = (/obj/closet/wardrobe,/turf/station/command/floor/other,/area)
+"wF" = (/obj/closet/wardrobe/mixed,/turf/station/command/floor/other,/area)
+"wG" = (/obj/table{icon_state = "sides"; dir = 2},/turf/station/command/floor/other,/area)
+"wH" = (/obj/table{icon_state = "corners"; dir = 6},/obj/item/weapon/radio{suffix = "\[2]"; freq = 144.9},/turf/station/command/floor/other,/area)
+"wI" = (/obj/machinery/camera{dir = 4; network = "PS13"; c_tag = "Courtroom"},/turf/station/command/floor/other,/area)
+"wJ" = (/obj/window{dir = 10},/turf/station/command/floor/other,/area)
+"wK" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/turf/station/command/floor/other,/area)
+"wL" = (/obj/window{dir = 8},/turf/station/command/floor/other,/area)
+"wM" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/obj/item/weapon/handcuffs,/turf/station/command/floor/other,/area)
+"wN" = (/obj/table{icon_state = "corners"; dir = 9},/obj/window{dir = 8},/turf/station/command/floor/other,/area)
+"wO" = (/obj/item/weapon/storage/toolbox,/turf/station/command/floor/other,/area)
+"wP" = (/obj/table{icon_state = "corners"; dir = 9},/obj/item/weapon/pen,/turf/station/command/floor/other,/area)
+"wQ" = (/obj/table{icon_state = "sides"; dir = 1},/obj/item/weapon/paper_bin,/turf/station/command/floor/other,/area)
+"wR" = (/obj/table{icon_state = "sides"; dir = 8},/obj/item/weapon/paper,/turf/station/command/floor/other,/area)
+"wS" = (/obj/machinery/camera{dir = 4; network = "PS13"; c_tag = "Witness Prep Area"},/turf/station/command/floor/other,/area)
+"wT" = (/obj/start{name = "Prison Warden"},/turf/station/command/floor/other,/area)
+"wU" = (/obj/table{icon_state = "corners"; dir = 10},/obj/item/weapon/clipboard,/turf/station/command/floor/other,/area)
+"wV" = (/obj/table{icon_state = "sides"; dir = 2},/obj/item/weapon/paper/sop,/turf/station/command/floor/other,/area)
+"wW" = (/obj/machinery/camera{dir = 8; network = "PS13"; c_tag = "Warden's Office"},/turf/station/command/floor/other,/area)
+"wX" = (/obj/landmark/alterations{name = "prison shuttle"},/turf/station/command/floor/other,/area)
+"wY" = (/obj/table,/obj/machinery/recharger,/turf/station/command/floor/other,/area)
+"wZ" = (/obj/rack,/obj/item/weapon/clothing/under/green,/obj/item/weapon/clothing/suit/armor,/obj/item/weapon/clothing/shoes/black,/obj/item/weapon/clothing/head/helmet,/turf/station/command/floor/other,/area)
+"xa" = (/obj/machinery/door/airlock,/turf/station/command/floor/other,/area)
+"xb" = (/obj/move/wall{icon_state = "wall2"},/turf/space,/area/shuttle_prison)
+"xc" = (/obj/move/floor{icon_state = "floor2"},/obj/window{dir = 1},/obj/window,/obj/grille,/turf/space,/area/shuttle_prison)
+"xd" = (/obj/move/floor,/obj/shuttle/door,/turf/space,/area/shuttle_prison)
+"xe" = (/turf/space,/area/shuttle_prison)
+"xf" = (/obj/move/floor{icon_state = "floor2"},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/space,/area/shuttle_prison)
+"xg" = (/obj/move/floor{icon_state = "floor2"},/obj/stool/chair,/turf/space,/area/shuttle_prison)
+"xh" = (/obj/move/floor{icon_state = "floor2"},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/grille,/turf/space,/area/shuttle_prison)
+"xi" = (/obj/move/floor{icon_state = "floor2"},/turf/space,/area/shuttle_prison)
+"xj" = (/obj/move/floor{icon_state = "floor2"},/obj/window{dir = 1},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle_prison)
+"xk" = (/obj/move/floor{icon_state = "floor2"},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle_prison)
+"xl" = (/obj/move/floor{icon_state = "floor2"},/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle_prison)
+"xm" = (/obj/move/floor{icon_state = "floor2"},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/table,/obj/item/weapon/storage/firstaid/regular,/turf/space,/area/shuttle_prison)
+"xn" = (/obj/move/floor{icon_state = "floor2"},/obj/window{dir = 1},/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/obj/item/weapon/game_kit,/turf/space,/area/shuttle_prison)
+"xo" = (/obj/move/floor{icon_state = "floor2"},/obj/shuttle/door,/turf/space,/area/shuttle_prison)
+"xp" = (/obj/move/floor{icon_state = "floor2"},/obj/grille,/turf/space,/area/shuttle_prison)
+"xq" = (/obj/move/floor{icon_state = "floor2"},/obj/stool/chair{dir = 4},/turf/space,/area/shuttle_prison)
+"xr" = (/obj/move/floor{icon_state = "floor2"},/obj/machinery/door/window,/turf/space,/area/shuttle_prison)
+"xs" = (/obj/move/floor{icon_state = "floor2"},/obj/table,/obj/window{dir = 4},/obj/item/weapon/bottle/rejuvenators,/obj/item/weapon/bottle/antitoxins,/obj/item/weapon/syringe,/obj/item/weapon/bottle/s_tox,/turf/space,/area/shuttle_prison)
+"xt" = (/obj/move/floor{icon_state = "floor2"},/obj/window{dir = 4},/obj/window{dir = 8},/obj/grille,/turf/space,/area/shuttle_prison)
+"xu" = (/obj/move/floor{icon_state = "floor2"},/obj/window{dir = 4},/turf/space,/area/shuttle_prison)
+"xv" = (/obj/move/floor{icon_state = "floor2"},/obj/window{dir = 4},/obj/machinery/computer/prison_shuttle,/turf/space,/area/shuttle_prison)
+"xw" = (/obj/move/floor{icon_state = "floor2"},/obj/machinery/door/window{dir = 1},/turf/space,/area/shuttle_prison)
+"xx" = (/obj/move/floor{icon_state = "floor2"},/obj/table,/obj/window{dir = 4},/obj/item/weapon/radio,/obj/item/weapon/gun/energy/taser_gun,/turf/space,/area/shuttle_prison)
+"xy" = (/obj/move/floor{icon_state = "floor2"},/obj/window,/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle_prison)
+"xz" = (/obj/move/floor{icon_state = "floor2"},/obj/window,/obj/window{dir = 4},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/turf/space,/area/shuttle_prison)
+"xA" = (/obj/move/floor{icon_state = "floor2"},/obj/machinery/atmoalter/siphs/scrubbers/air_filter,/obj/closet/wardrobe/orange,/turf/space,/area/shuttle_prison)
+"xB" = (/obj/move/floor{icon_state = "floor2"},/obj/window,/obj/machinery/atmoalter/siphs/fullairsiphon/air_vent,/turf/space,/area/shuttle_prison)
+
+(1,1,1) = {"
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacadadadacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafacagahahahaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajakalamahanaoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeapaqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarasatacauasacavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeawaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafacacacaxahacavavavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeawaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayazaAazaAazaAayaBaCaBaBaBaBaDazaAazaAazaAacacacacasacavavavavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeawaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaEaFaFaFaFaGaFaHaHaHaHaHaHaHacacacaIahacavavavavavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeawaeaJaJaJaJaJaJaJaJaJaKaJaJaJaJaJaJaJaJaJaJaJaJaLaeaEaMaNaFaOaNaMaHaPaQaRaRaRaRacacacacahacaBaBaBaSaSaSaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaUaeawaVawaWawawaVawawawawaVawawaWawawaVawawawaVaXaeaYaYaYaYaYaYaYaZbabbbbbbbcbbacalbdacahasaFbebfbgbhbiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebjaeawaJaJaJaJaJaJaJbkaJaJaJaJaJaJaJbkaJaJaJaJaJawaeaYblbmbmbnbobpaZbqbbbbbbbrbbacbsbsacahacaBbtaBbububuaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebvaebwaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaebvaeaYblbnbnbnbxbyaZbzbzbzbAbBbCacahbDacbEacaBaBaBavavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeawaebvbFbFbFbGawbHbFbIbJbJbJaVbKbKbLbFbMbMbNbNaebOaeaYbmbmbnbobPbPaZbQbbbbbbbcaHacahahahahacavavavavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaUaeawawaWbvawawawbFawawawawawawawawbFawawawawaebRaeaYbmbmbnbnbSbPbTbUbbbbbbbrbVbWahahalatacavavavavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeawaeawawawbvawbXawbYawawawawawawawawbFbZawawaVawawaeaYbmbmcacbbSccaZcdcecdcdcdaHacacacacacacaBaBcfcgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeawchawawawbvawawaVbFawawawawawawawawbYawawawawawawchcicjcjckclckcmaZcnbbbbbbbbcocpcqcrcsctcucvcwcxcyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaebFczbFbFbvbvbvbFaWcAcBcCcBawcDcEbFcFcGcGcHawcIaeaYcJbPcKbPbScLaZcMbbbbbbbbcNbbcOcOcOcOcOcOcPcQcyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecRawawbYawawcSbFbFbFbFbFbFcTcTcTbFbFcTcTcTcTaeaeaYbPcUcVcLbScWaZcdcXcdcdcdcYbbbbbcbbbbbbbrcZdacyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecRawbNbFawawawdbawawdcawdddededededededededeaeaaaYdfdgckcjckcjaZbbbbbbbbbbdhbbbbdidjdkdlbbdmdncyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecRawbNbFdoawawbFbOawdpaJdqdededededededededeaedrdrdrdrdrdrdrdraZdsbcbbbrbbdtbbbbbrbbbbbbbcdudncyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebFdvbFbFdwaWawbFbOawawaJdxdededededededededeaedydzdzdAdBdCdDdEaHdFbbbbbbbbdtdGdHbbdIdIdIdIdJdKcyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaedLdMdNbFawawawbFbOawawdOdPdededededededededeaedydQdRdSdTdTdTdUaHaHaHbVaHbccNdVdWdXdYdZeaebecedcyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeeeeeeeeeeeaeefegehbFawawaVbFeiejekelemdededededededededeaedyendSeodSdSepeqerereresererereteueveueueuaBaBaBewaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaexeyezeAeBeeaeaeaeaeaebvbFbFbFbFbFbFbFeCeCeDeEeFeEbFeGeGeGaedydyeHdyeIeIeIeIereJeKeKeKeLereteueveueueuaBeMaBavaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeeeeeeNeOeeaBaBaBaBaedvbFbFbFbFbFbFbFePbFbFawawawaeaeaeaeaeereQeKeKeKeKeKeKeReKeKeKeKeSereteTeUeUeVeuaBeWaBavaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeXeYezeAeZeefafbfcaBaeawbFfdfefefefffefeePfgawawawaefhfhfhfhfhfieKeKeKeKeKeKereKeSeSeKeSeretfjeUeUfkeuaBeWaBavaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeeeeefleNfmfnaFbefochawbFfefefefefefefebFbFawawaWaefhfpfqfqfreKeKeKeKeKeKfsereKeSeSeKeSeretfteUfufkeuaBeMaBavaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafvfwezeOfxeefyaFbeaBaeawbFfzfzfzfzfzfzfzbFbIawawawaefhfqfqfqfherereserererererererererereretfjeUeUfkeuaBeMaBavaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeeeeeeNeAeebeaFfnaBaeawbFbFbFbFbFbFbFbFbFawawawbZaefhfAfqfBfhfCfDfEfFfGfHfIfJfKfKfKfKfFeUeufLeUeUfMeuaBfNaBavaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafOfPezeOfQeebefnfRaBaeawawaWaVawawawawbvdbawawaVfSaefhfqfqfqfhfTfUfVfWfXfYfZgagbgcgdgefFeUeugfgggggheuaBfNaBavaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeeeeeeeeeeeaBaBaBaBaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaefhgigigifhfTgjgkglgmfDgngogpfKfKfKfFeUeueueueueueuaBaBaBavaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaaaaaaaaaaaaaBaaaFaaaaaFaaaaaFaaaaaFaaaaaFaaaafhfqfqfqfhfFfFgqfhgrgrgrgrgrgrgrgrgrgrgsgtgugvgwgxgygzaBgAaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagBgCgCgCgCgBgBgBgBgBgBgBgBgBgBgDgDgDgDgDgDgDgDgDgDgDgDgDgDfhfhgEfqfqfhgFgGgGgHgIgFgGgGgGgGgGgGgJgGgsgKgLgMgugwgygyaBgAaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaBaBgBgNgOgOgOgPgQgRgSgTgUgVgWgXgYgDgZhahbhchdhehfhghhhihjhkhlfhhmfqfqfqhngGgGgGgGhogJgGgGgGgGgGgGgFgGhpgvgwgxgwgvgyhqaBgAaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBhrbegBgNhshthuhvhwhxhyhxhxhzhxhAhxhBhChChDhChChChDhChChDhChEhEfhhFfqfqfqfhgJgGgGgGhGhGhGhGhGhGhGhGhGhGhHgwgwgwgwgwgwhIaBgAaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBhrfnhxhxhxhyhxhJhxhxhxhxhxhKhxhLhMhBhChChChChChChChChChChChChDfhfqfqfqfqfhgIgIgIhNhGhOhPhQhQhRhShShThUhHhVhWgvhXgthYgvaBgAaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBhraFgBhZiahxhxhJhxhxhxhxibhLichxidhBieifhChCigihiiijikhChCilimfhfAfqfqgEfhgHgGgGgGhGinhShShShShShUiohUhHipiqgwiqiqhYgwaBgAaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBhrbehxhxhxirhxishxhxithxhxhxhxhxhMgDgDgDiuiuiuhChCiviwixiyiziAfhfhgigifhfhgJgGgGgGhGiniBioiohShShUiChUhHgvgwgxgwgviDiEaBgAaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBhraFgBhZiahxhxiFhxhxhAiGhxhxhyhLiHiIiJiKiLiMiNiOiPiQhChChDhCiRfhfAfqfqiSfhgFgGgGgGhGiThUhUhUhShShUiohUhHgsiUiVgsgsgsgsaBgAaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBhrbehxhxhxhyhxiWiXhAhyhAhxhxhxiYiZgBjagDiPhDiPjbjcjdiPhChCiPjefhfqfqfqfqgIjfjggGgGhGhGhGaEaEjhaEaEaEaEhHhHjijigsjjjjjjaBavaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBhrfngBhZiajkjkjljmjmjnjoaBjpjpaBaBaBaBgDjbiPjbjqjrjshChChCjtjufhfqfqfqfqgIgGgGjvgGgGgFhGjwjxjyjyjzjAjBjChHgwgwgwgwgwgwaBavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaBaBaBaBaBaBaBaBaBaBaBjDjDjEjFjDjDaBaBgDgDgDgDgDgDjGjHjIjJjKjLfhfqfqfqfqjMgGgGgGgGgGgGjNjOjyjyjyjPjyjyjyhHjQgwgwgxgwgwaBavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBjRjRjRjRjRjSjRjRjTjRaBjUjVjVjVjWjWjXjYjZjXjXjXjXjXfhfhfhfhfhfhfhfqfqfqfqgIgGgGgGgJgGgGhGjwkajyjyjyjykbjwhHgsgvgwgwkckcaBavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBkdkekekfkekekekekdkgaBjVkhjVkijVkjjXkijVjVkkklkmjXknkikojVkhkpfqgEfqfqfAgIgJgGgGgGgGgFhGjwkqjyjykrjyjyjOksjigwgwgvkckcaBavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBkfkekekdkekekekekfkektjVjVjVjVjVkujXjVjVjVjVkhjXjXkvjVjVjVjVkpfqfqfqfqfqaBaBaBaBkwkwkwaBjwjyjyjyjyjykxjwhHgsgxgwgwkykyaBavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBkekekzkzkzkAkzkzkzkAaBjVjVkijVkhjVkBkhjVjVkijVkpjVkhjVjVjVkikpfqfqfAkCfqaBavavavkDkwkEaEjwjOjwjyjyjyjykFhHgsjigsgwkykyaBavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBkekekzkGkdkfkzkGkdkfaBkHkHkHkHkHkHaBjVjVjVjVjVkpjVjVjVjVkIkIkIkIkIkIkJkIaEaEaBaBaBaBkEaEjwjyjwjykKjykLkMhHgsiUgsgsgsgsaBavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBkekekzkNjRkOkzkNjRkOaBkPkPkPkQkQkRaBkhjVjVjVkikpjVkijVkhkIkSkTkUkVkWkXkYkZlalalalaaEkEaEjwjyjwlblcldldaElelelflflglflhaEavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaBbububuaBliljkzkzkzkzkzkzkzkzaBkQlklllllmlnlojXjXjXjXjXjXjXlolplokIlqlrkYlsltlukXkWlalvkXlwaEkEaEjwlxjwjylylylzaElAlflflflflflBaEavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaBlClClCaBkekelDlElFlFlGlHlHlIaBlJlllKlLlllnlolMlMlMlMlNlOlPlolQlRlSkSkXlTkXlUkXkYlVlWkYlXlYaEkEaElZkqmajyjyjyjyaEmblflfmclfmdlfaEavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaamemfmgmhaBmimjmkmkmlmkmkmkmjmmaBmnllmompllkQlomqmqmqmqmrlQlQlomslolSkSkXkXmtkYmumumulamvlXmwaEkEaEjwjwjwkajyjyjyaEmxmylflflflfmyaEavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaBmzlCmhmAmkmkmBmBmkmBmBmkmCmDaBmEllmFmGllmHlomImImImImJlQlQlolQmKlSmLmMmNmOkXmPkXmQlWkXlXlYaEkEaEjwmRmSjymTmTmTaElflflfmUmVmVmVaEavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaamemhmWmhmAmkmkmBmBmkmBmBmkmkmkaBkQlmllllmXmHlomYmZmYnanblQlQlomslolSncndnenfngnhninjnklukXluaEkEaEkMkMkMkMkMkMkMaEnlnmnlnnnnnnnnaEavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaBnolClCaBmBmlmBmBmjmBmBmkmlmknpkQkQnqkQlkmHlonrnrnrnrnslQlQlontlolSlalalalalalalalalalalalaaEkEaEaaaBaFaFaBaFaFaBnunvnwaFaFaFaFaEavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaBaSaSaSaBaBnxaBaBaBaBaBaBaBaBaBaBaBaBnxaBaBlonynynynynzlQlQlQlQlQnAnBnCnBlSnAnDnDnDnDnDnDnEaEkEaEaaaBaaaaaBaaaaaBnFnGnFaaaaaaaaaEavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBnHaFaFfnaFaFbeaBaFfnaFaFbeaFaFfnaFlonInDmKnDmKlQnAlQlQlQlQlQlQlQlSlQlQlQlQlQlQlQnJaEkEaBaanKnKnKnKnKnKnKnKnKnKnKnKnKnKnKavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBnLaFaFaFaFaFaFaBaFaFaFaFaFaFaFaFaFlonMlQlQlQnAlQnNlQnOnElQlQlQlQnPlQnQnQnQnQnQnQlQaEkEaBaanKnKnKnKnKnKnKnKnKnKnKnKnKnKnKavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaBaBaFaFaFaFaFaFaFaBaFaFaFaFaFaFaFaFaFlonRlQnElQnSlQlQlQnTnUnVnVnWnWlSnEnXnXnXnXnXnXnAaEkEaBaanKnKnKnKnKnKnKnKnKnKnKnKnKnKnKavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBkwnYfnaFaFbeaFaFfnaBaFbeaFaFfnaFaFbenZlooaobocodlQlQlQlQoelQlQoflQnElSlSlSlSlSlSlSlSlSaEkEaBaanKnKnKnKnKnKnKnKnKnKnKnKnKnKnKavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBkwaBaBaBogaBaBaBaBaBaBaBaBaBaBjhaBaBaBlolQlQlQohlQlQlQohlQlQoiojnAokohlQlQololololololaBkEaBaanKnKnKnKnKnKnKnKnKnKnKnKnKnKnKavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBkwaBaBfRaFaFaFaFaFaFaFomaBaFaFaFaFaFaFlonXnXnXonooopoonAoqorosotouovlolQlQololololololaBkEaBaanKnKnKnKnKnKnKnKnKnKnKnKnKnKnKavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBkwaBaBfRaFfnaFaFbeaFaFowaBaFbeaFaFfnaFlololololololololololololololololQlQoxoxoxoxoxoxaBkEaBaanKnKnKnKnKnKnKnKnKnKnKnKnKnKnKavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBkwaBaBoyoyozoyozoAoBoCoDaBaFaFaFaFaFaFaBaaaaaaloaaaaaaloaaaaaaaaaaaalolQlQoxoxoxoxoxoxaBkEaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaBkDaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBkEkDaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaavaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaBoEoFkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkEkwkwaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBaBkDkwkwaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaBaBaBaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+"}
+
+(1,1,2) = {"
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+"}
+
+(1,1,3) = {"
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+"}
+
+(1,1,4) = {"
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+"}
+
+(1,1,5) = {"
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+"}
+
+(1,1,6) = {"
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+"}
+
+(1,1,7) = {"
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+"}
+
+(1,1,8) = {"
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+"}
+
+(1,1,9) = {"
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaBaBaBaBaBaBaBaBaBaBaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaBaBaBaBaBaBaBaBaBaBaBoGoGoHaFaFjhbejhoIoIoIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBoJfnaBoKoLoMoNoOoMoNaBaFaFaFbeaFaBaBaBoIoIoIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaFaFaBoPfnaFaFbeaFaFaBbeaFaFaFfnaFoQaBoRoIoIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBfnoJoSoTaFaFaFaFfnaFoUaFfnaFaFaFoVoWaBoXoIoIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBoYaFoZoTaFaFbeaFpapbaBaFaFaFbeaFaFpcaBaBaBaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBbefnoUaFaFaFaFaFaFpdaBpepfaFpgphaFpipjpkplaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaFaFpmpnbeaFfnaFaFpoaBbeaFaFpppqaFaFbeaFfnaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBprbeaBpsptpupvpwpxpyaBpepfaFpzaFpAfnpipBpkaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaBaBaBaBaBaBaBaBaBaBaBfnaFpCaFpDaFaFaFaFbeaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBpepfoBpEpEpFpFpGpGpHaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaBaBaBaBaBaBaBaBaBaBaBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+"}
+
+(1,1,10) = {"
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapIpJpJpKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoSfRaFoSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoSbefnoSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoSaFaFoSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEfnbeaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEbefnaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEfnbeaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaEaEaEaEaEaEaEaEbefnaEaEaEaEaEaEaEaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaEpLpMpNpOpPpQpRaEaFaFaEpSpTpUpVpWpXaEaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaEpYpZqaqbaFaFqcqdaEnxqeaEbeoLaFfnpapdqfaEaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaEqgqhqinwqjqkqlqmaBaFbeaBfnaFaFbeaFaFfnqnaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaEaEaEaEaEqofnqpaFqqqrqsqsaBaFaFaBoMoNpnpbaFaFaFqtaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaEaEquqvqwaEqxaFbeqyaBaBaBaBaBaFaFaBaBaBaBaBqzaFaFqAaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaEqBpfqCbenpfnaFaFfnaBqDqEqFbeaFaFqGqHqIqJaBqKaFbeqLaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaEaFaFqMaFaBbeaFbeaFnpaFaFaFaFaFaFaFaFqNqNaBqOaFfnqPaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaEqQpfbefnaBoGqKqRqSaBaFaFaFqTaFaFaFaFaFaFaBaFaFaFqUaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaEqVaFqWaFaBaBaBaCaBaBqXaFaFqYaFqZbeaFaFfnnpfnqUrafaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaErbpircrdaBreaFaFrfaBfcaFaFrgrhaFaBaBaBaBaBbeqUrifaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaErjaFaFfRaBaBaBaCaBaBrkaFaFrlaFrmrnrorprqaBeMeMrrrraEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaErsrtberuaBoGqKqRqSaBfnaFaFbeaFaFrnrvaFbeaBeMeMrrrraEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaErwaFaFaFaBbeaFbeaFnpaFaFaFaFaFaFrxryryaFaEaEaEaEaEaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaErzaFrAbenpfnaFaFfnaBrBrCrDrEbefnnpbeaFfnaEaaaEaaaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaEaErFrGrHaEqxaFbeqyaBaBaBaBaBaFaFaEaEaEnxaEaEaEaEaEaEaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaEaEaEaEaErIqhrJaFqqqrqsqsaBaFaFaEaaaEbefnrnrKaFnprLrMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaErNfnrOnwqjqkqlqmaBfnbeaEaaaEaFaFrnfnbeaEaEaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaEpYpZqaqbaFaFqcqdaBnxqeaEaEaEaFaFrnrPaFrQrRrSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaEpLpMpNpOpPpQpRaEaFaFaEaaaEfnbernbeaFaEaEaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaEaEaEaEaEaEaEaEbefnaEaaaEaFaFrxrTfnrUrVrWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaEaEaFaFnpbeaFaEaEaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFaFaFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaEbefnrXrYaFrQrZsaaaaaaaaaaaaaaaaaaaaaaaaaaaaFaFaFsbaFaFaFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEfnbeaEaaaEaEaEaEfnbeaEaEaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFaFaFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaaaaaaaEscaFnpsdseaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaaaaaaaEaEaEaEaEaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEbefnaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEaFaFaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasfsgshsisisisisisfsjsjsjsjsjsjsfaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEfnbeaEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasfskskslslslslslsfsfsfsfsfsfsfsfaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarnaFaFrnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasfsksksksksksksksfsjsjsmsmsmsmsfaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarnaFaFrnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasfsksksksksksksksfsnsjsmsmsmsmsfaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarnbesornaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasfsfsfsfsfsfsfsfsksksfsjsjsmsmsmsmsfsfsfsfsfsfsfsfsfaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaspsqsqsraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasfssstsusvsjswsfsxsysfszsjsjsjsAsAsfsBsjsjsCsCsCsCsfaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasfsjsjsjsjsjsDsfsksksfszsjsEsEsAsAsfsBsjsjsjsjsjsFsfaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasfsGsHsIsJsjsKsfsjsjsfsLsjsEsEsAsAsfsBsjsjsjsMsMsMsfaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasfsGsNsOsPsjsQsfsjsjsfsLsjsEsEsAsAsfsBsjsjsjsMsMsMsfaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasfsGsjsjsjsjsQsfsjsjsfsLsjsEsEsAsAsfsRsjsjsjsMsMsMsfaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasfsSsTsjsUsVsWsfsjsjsfsLsjsEsEsAsAsfsRsjsXsXsXsXsXsfaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasfsfsfsYsfsfsfsfsjsjsfsfsYsfsfsfsfsfsRsjsXsXsXsXsXsfaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasZtasZaaaaaasfsjsjsjsjsjsjsjsjsjsjtbtbtbtbsfsjsjsXsXsXsXsXsfaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasZsZtcsZsZsfsfsfsnsjsjsjsjsjsjsjsjsjsjsjsjsjtdsjsjsXsXsXsXsXsfaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatetftgthtiaaaasfsjsjsjsjsjsjsjsjsjsjsjsjsjsjsfsjsjtjtjtjtjtjsfaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasZtgtgtgsZtktktksjsjsjsjtktktktktktktktktktksfsRsjtjtjtjtjtjsfaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatetftgtgtltmsktmsjsjsjsjtntotptqsksktotptqtrsfsRsjtjtjtjtjtjsfaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasZtgtgtgsZtktktksjsjsjsjtnsksksksksksksksksksfsRsjtjtjtjtjtjsfaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasZtstttusZaaaasfsjsjsjsjtnsksksksksksksksksksfsfsfsfsfsfsfsfsfaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasZtvtwtxsZsfsfsfsjsjsjsjtntotptqsksktotptqsksfsjsvtysjsjsjtztAaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatBtCtCtCtDaaaasfsjsjsjsjtnsksksksksksksksksksfsjsjsjsjsjsjsjtAaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasfsjsjsjsjtnsksksksksksksksktEsfsjsjsjsjsjsjsjtAaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatFtFtFtFtFtFtGtGtGtGtGtGtGtGtFsfsfsfsjsjsjsjtnsksksksksksksksksksfsjsjsjsjsjsjsjtAaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatFtFtFtFtFtFtFtHtHtHtHtHtHtHtHtHtHtHtHtHtFsfsjsjsjsjsjsjtktktktItktktktktktksfsjsjsjsjsjsjsjtAaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatFtJtKtJtKtJtFtLtLtLtLtLtLtLtLtLtLtLtLtLtFsfsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsfsfsfsjsjsjsjsjtAaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatFtMtKtMtKtMtFtLtLtLtLtLtLtLtLtLtLtLtLtLtFsfsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjtNsjtNsjsjsjsjsjtAaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatFtKtKtKtKtKtFtLtLtLtLtLtLtLtLtLtLtLtLtLtFsfsnsjsjsjsjsjsjsjsjsjsjsjsjsjsjsjsfsfsfsjsjsjsjsjtAaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatFtKtKtKtKtKtKtLtLtLtLtLtLtLtLtLtLtLtLtLtFsfsjsjsjsjsjsjsjsjsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfsfaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatFtKtKtKtKtKtFtLtLtLtLtLtLtLtLtLtLtLtLtLtFsfsjsjsjsjsjsjsjsjsfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatFtFtFtFtFtFtFtFtFtFtFtFtGtGtGtGtGtGtGtGtFtktmtktOtOtOtOtOtOsfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatksktkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatktmtkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatPtPtPtPtPtQtPtPtRtPtPtPtQtPnKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatPtStTtUtVtWtXtYtZuatPubuctPtPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatPudtZudtRtZtUtZudueudtUufuguhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatPtStTtZuhuftZtZtZuiuftZufujuhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatPudtZuduhufudtZtUuktUudufuluhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatPtStTtUuhumtZtZtZuntPtUuotPtPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatPtPtPtPtPtQtPtPtPtQtPtPtQtPnKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupupupupupuqupupurupupupuqupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupusutuuupuvuwuwuxuyupuzuAupupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupuBuxuxuruxuxuxuxuCuxuxuDuEuFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupusutuxuGuDuxuxuxuHuDuxuDuIuFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupuBuxuxuGuDuxuxuxuJuxuxuDuKuFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupusutuuuGuLuxuxuxuMupuuuNupupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupupupupupuqupupupuqupupuqupaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+"}
+
+(1,1,11) = {"
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+"}
+
+(1,1,12) = {"
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuOuOuOuOuOuOuOuOuOuOuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuPuQuRuSuTuUuVuWuXuYuOuOuOuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuZuZvatKtKvavbvbuZuZuZuZuZuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOvavavatKtKvavavauZuZvcvduZuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuOuOuOuOuOuOuOuOuOuOuOuOvevftKtKtKtKtKvavgvhuOvduZuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuZuZuZuZuZuZuZuZuZuZuZuOvitKtKtKvjtKtKvauZvkuOvduZuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuZuZvbvbuZuZuZvbvbuZuZuOvevlvatKtKvavavauZvmuOvduZuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuZvgvnvovpuZvgvnvovpuZuOuZuZvatKtKvauZuZuZvquOvduZuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuZvgvrvsvpuZvgvrvsvpuZuOvtvtvavavavuvvvwvwvxuOvduZuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOvyuZvzvzuZuZuZvzvzuZvAvBvCvDvEvFvGuOuOuOuOuOuOuOuOuOuOuOuOuOaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOvHuZuZuZuZuZuZuZuZuZuZvIuZuZuZuZuZvBvJvJvJvJvKvLvMvNvOvOvPuOaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOvQuZuZuZuZuZuZvbvbuZuZvRuZuZuZuZuZvBuZuZuZuZuZuZuZuZvSvSvTuOaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOvUuZuZuZuZuZvgvnvovpuZvVuZuZuZuZuZvIuZuZuZuZuZuZuZuZuZvWvXuOaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOvYuZuZuZuZuZvgvrvsvpuZvcuZuZuZuZuZvRuZuZuZvZuZuZuZuZuZvWvXuOaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOwawbwcwdvHuZuZvzvzuZuZvBuZuZuZuZuZvcuZuZuZuZuZuZuZweuZwfvXuOaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuOuOuOuOuOuOuOuOuOuOuOvIuZuZuZuZuZvBwgwgwhwiwiwiwiwjuZwfvXuOaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuOuOuOuOuZuZuZuZuZuZuOuOuZuZuZuZuZuOuOuOuOuOuOuOuOuZuZuZuOuOaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuZuZvbvbuZwkwkuZuZuZuZuZuZvBwlwmwnuOuZuZuZuZuZuZuZuOaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuZvgwowpvpuZvBwquZuZuZuZwrvBuZwmwnuOwswswswswswswsuOaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuZvgvmwtvpuZvBuZuZuZuZuZwkwkuZuZwuuOuOuOuOuOuOuOuOuOaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuOuOuOuOuOuOuOuZuZuZuZuZuZuOuOuOuOuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuOuOuOuOuOuOwnwmwlvBuZuZuZuZuZuZvBwlwmwnuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOwmwnuOwmwnuOwnwmuZvBwvuZuZuZuZwrvBuZwmwnuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuZuZuOuZuZuOwuuZwkwkuZuZuZuZuZwkwkuZuZwuuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOwwuOuOwwuOuOuOuOuOuOuZuZuZuZuZuZuOuOuOuOuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuZuZuZuZuZuZuZuZuZuZuZuZuZuZuZuZvBwlwmwnuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOwxuZuZuZuZuZuZuZuZuZuZuZuZuZuZwrvBuZwmwnuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuZuZuZuZuZuZuZuZuZuZuZuZuZuZuZwkwkuZuZwuuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOwwuOuOwwuOuOuOuOuOuOuZuZuZuZuZuZuOuOuOuOuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuZuZuOuZuZuOwnwmwlvBuZuZuZuZuZuZvBwlwmwnuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOwmwnuOwmwnuOwnwmuZvBwvuZuZuZuZwrvBuZwmwnuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuOuOuOuOuOuOwuuZwkwkuZuZuZuZuZwkwkuZuZwuuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuOuOuOuOuZuZuZuZuZuZuOuOuOuOuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOwnwmwlvBuZuZuZuZuZuZvBwlwmwnuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOwnwmuZvBwvuZuZuZuZwrvBuZwmwnuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaFaBaTaTaTaTaTaTaTaTaTaTaTaTaTaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOwuuZwkwkuZuZuZuZuZwkwkuZuZwuuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaFaBaBaBaBaBaBaBaBaBaBaBaBaBaBaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuOuOuOuOuZuZuZuZuZuZuOuOuOuOuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaFaBwyaFaFwzaFwzwzwzwzrorprqaBaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOwnwmwlvBuZuZuZuZuZuZvBwlwmwnuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaFaBaBaBaFwzaFwzwzwzwzaFaFaFaBaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOwnwmuZvBwvuZuZuZuZwrvBuZwmwnuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaFjhbejhaFaFaFaFrhaFaFaFaFaFaBaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOwuuZwkwkuZuZuZuZuZwkwkuZuZwuuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaFaBaBaBaFwzwzwzwzwzwzwzwzwzaBaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuOuOuOuOuZuZuZuZuZuZuOuOuOuOuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaFaBwAaFaFwzwzwzwzwzwzwzwzwzaBaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuOuOuOuOuOuOuOuOuOvCvDwBwCvGvCuOuOuOuOuOuOuOuOuOuOuOuOaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaFaBaBaBaBaBaBaBaBaBaBaBaBaBaBaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOvovbuZuZuZvpvpuOuOuZuZuZuZuZuZuOwDwswEwFuOwiwiwiwiwiuOaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaFaBaTaTaTaTaTaTaTaTaTaTaTaTaTaTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOwGwGwHvbuZvpvpuOuOuZuZuZuZuZuZvmuZuZuZuZuZuZuZuZuZuZuOaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOvbuZuZuZuZvpvpuOuOuZuZuZuZuZuZvmuZuZuZuZuZuZwiwiwiwiuOaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOwIuZuZuZuZuZuZwwuZuZuZuZuZuZuZwJuZuZuZwKuOuZuZuZuZuZuOaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOvnvouZvnvowLuZuOuOuZuZuZuZuZuZvRuZuZuZwMuOwiwiwiwiwiuOaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOvzvzuZvzvzwLuZuOuOvCvDwBwCvGvCuOuOvFuOuOuOuOuOuOuOuOuOaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuZuZuZuZuZwNwcuOuZuZuZuZuZuZuZvBuZuZuZuZuZuZuZwOuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuOuOwwuOuOuOuOuOuZuZuZuZuZuZuZvBuZuZuZvguZwPwQuZuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuZvbvbvbvbuOuZuZuZuZuZuZuZvIuZuZuZvguZwRvpuZuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOwSuZuZuZuZuOuZuZuZuZuZuZuZvRuZwTuZvguZwUwVwWuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuZuZuZuZuZwwuZuZuZuZuZuZuZvcuZuZuZuZuZuZuZuZuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuOuOuOuOuOuOuZuZuZuZuZuZuZvBuZuZuZuZuZuZuZuZuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOwXuZuZuZuZuZuZvBvKuZvJvJvJvJwYwZuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuOuOuOxauOuOuOuOuOuOuOuOuOuOuOuOuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOuZuOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauOxauOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxbxbxbxbxbxcxbxbxdxbxbxbxcxbxeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxbxfxgxhxixjxixkxixlxbxmxnxbxbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxbxoxpxpxfxqxfxqxfxrxfxkxqxsxtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxbxixfxixixqxixqxixuxqxixqxvxtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxbxoxpxpxfxqxfxqxfxwxfxkxqxxxtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxbxfxgxhxixyxixkxixzxbxAxBxbxbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxbxbxbxbxbxcxbxbxbxcxbxbxcxbxeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+"}
diff --git a/ss13-40.93.2-decomp/spacestation13/ss13_algorithm2.dm b/ss13-40.93.2-decomp/spacestation13/ss13_algorithm2.dm
new file mode 100644
index 0000000..1b638a9
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/ss13_algorithm2.dm
@@ -0,0 +1,559 @@
+
+/proc/SetupOccupationsList()
+
+ var/list/new_occupations = list( )
+ for(var/occupation in occupations)
+ if (!( new_occupations.Find(occupation) ))
+ new_occupations[occupation] = 1
+ else
+ new_occupations[occupation] += 1
+ //Foreach goto(23)
+ occupations = new_occupations
+ return
+
+/proc/DivideOccupations()
+
+ var/list/occupations1 = list( )
+ var/list/occupations2 = list( )
+ var/list/occupations3 = list( )
+ var/list/final_occupations = list( )
+ var/list/unassigned_mobs = list( )
+ var/occupation_choices = occupations.Copy()
+ occupation_choices = shuffle(occupation_choices)
+ for(var/occupation in occupations + assistant_occupations)
+ occupations1[occupation] = list( )
+ occupations2[occupation] = list( )
+ occupations3[occupation] = list( )
+ final_occupations[occupation] = list( )
+ //Foreach goto(78)
+ occupations1["Captain"] = list( )
+ occupations2["Captain"] = list( )
+ occupations3["Captain"] = list( )
+ final_occupations["Captain"] = list( )
+ for(var/mob/human/M as mob in world)
+ if ((!( M.client ) || (!( M.start ) || M.already_placed)))
+ else
+ unassigned_mobs += M
+ if (M.occupation1 != "No Preference")
+ occupations1[M.occupation1] += M
+ if (M.occupation2 != "No Preference")
+ occupations2[M.occupation2] += M
+ if (M.occupation3 != "No Preference")
+ occupations3[M.occupation3] += M
+ //Foreach goto(187)
+ for(var/occupation in occupations)
+ occupations1[occupation] = shuffle(occupations1[occupation])
+ occupations2[occupation] = shuffle(occupations2[occupation])
+ occupations3[occupation] = shuffle(occupations3[occupation])
+ //Foreach goto(339)
+ occupations1["Captain"] = shuffle(occupations1["Captain"])
+ occupations2["Captain"] = shuffle(occupations2["Captain"])
+ occupations3["Captain"] = shuffle(occupations3["Captain"])
+ var/captain_choice = occupations1["Captain"]
+ if (captain_choice.len)
+ final_occupations["Captain"] = captain_choice[1]
+ occupation_choices -= "Captain"
+ unassigned_mobs -= final_occupations["Captain"]
+ if (!( final_occupations["Captain"] ))
+ captain_choice = occupations2["Captain"]
+ if (captain_choice.len)
+ final_occupations["Captain"] = captain_choice[1]
+ occupation_choices -= "Captain"
+ unassigned_mobs -= final_occupations["Captain"]
+ if (!( final_occupations["Captain"] ))
+ captain_choice = occupations3["Captain"]
+ if (captain_choice.len)
+ final_occupations["Captain"] = captain_choice[1]
+ occupation_choices -= "Captain"
+ unassigned_mobs -= final_occupations["Captain"]
+ if (!( final_occupations["Captain"] ))
+ var/list/contenders = list( )
+ for(var/mob/human/M as mob in world)
+ if (M.client)
+ contenders += M
+ //Foreach goto(691)
+ var/M = pick(contenders)
+ final_occupations["Captain"] = M
+ occupation_choices -= "Captain"
+ unassigned_mobs -= final_occupations["Captain"]
+ occupations1[text("[]", M.occupation1)] -= M
+ occupations2[text("[]", M.occupation2)] -= M
+ occupations3[text("[]", M.occupation3)] -= M
+ for(var/mob/human/M as mob in unassigned_mobs)
+ if (assistant_occupations.Find(M.occupation1))
+ M.Assign_Rank(M.occupation1)
+ unassigned_mobs -= M
+ //Foreach goto(844)
+ for(var/occupation in occupation_choices)
+ var/L = occupations1[occupation]
+ if (L.len)
+ var/eligible = occupations[occupation]
+ var/multiple = eligible > 1
+ while(eligible--)
+ var/M = null
+ var/i = null
+ i = 1
+ while((i <= L.len && !( M )))
+ if (unassigned_mobs.Find(L[i]))
+ M = L[i]
+ i++
+ if (M)
+ if (multiple)
+ final_occupations[occupation] += M
+ else
+ final_occupations[occupation] = M
+ unassigned_mobs -= M
+ if (eligible < 1)
+ occupation_choices -= occupation
+ if ((!( occupation_choices.len ) || !( unassigned_mobs.len )))
+ else
+ //Foreach continue //goto(913)
+ for(var/mob/human/M as mob in unassigned_mobs)
+ if (assistant_occupations.Find(M.occupation2))
+ M.Assign_Rank(M.occupation2)
+ unassigned_mobs -= M
+ //Foreach goto(1158)
+ for(var/occupation in occupation_choices)
+ var/L = occupations2[occupation]
+ if (L.len)
+ var/eligible = occupations[occupation]
+ var/multiple = eligible > 1
+ if (multiple)
+ var/X = final_occupations[occupation]
+ eligible -= X.len
+ while(eligible--)
+ var/M = null
+ var/i = null
+ i = 1
+ while((i <= L.len && !( M )))
+ if (unassigned_mobs.Find(L[i]))
+ M = L[i]
+ i++
+ if (M)
+ if (multiple)
+ final_occupations[occupation] += M
+ else
+ final_occupations[occupation] = M
+ unassigned_mobs -= M
+ if (eligible < 1)
+ occupation_choices -= occupation
+ if ((!( occupation_choices.len ) || !( unassigned_mobs.len )))
+ else
+ //Foreach continue //goto(1227)
+ for(var/mob/human/M as mob in unassigned_mobs)
+ if (assistant_occupations.Find(M.occupation3))
+ M.Assign_Rank(M.occupation3)
+ unassigned_mobs -= M
+ //Foreach goto(1502)
+ for(var/occupation in occupation_choices)
+ var/L = occupations3[occupation]
+ if (L.len)
+ var/eligible = occupations[occupation]
+ var/multiple = eligible > 1
+ if (multiple)
+ var/X = final_occupations[occupation]
+ eligible -= X.len
+ while(eligible--)
+ var/M = null
+ var/i = null
+ i = 1
+ while((i <= L.len && !( M )))
+ if (unassigned_mobs.Find(L[i]))
+ M = L[i]
+ i++
+ if (M)
+ if (multiple)
+ final_occupations[occupation] += M
+ else
+ final_occupations[occupation] = M
+ unassigned_mobs -= M
+ if (eligible < 1)
+ occupation_choices -= occupation
+ //Foreach goto(1571)
+ if (unassigned_mobs.len)
+ unassigned_mobs = shuffle(unassigned_mobs)
+ for(var/mob/human/M as mob in unassigned_mobs)
+ if (occupation_choices.len)
+ var/occupation = pick(occupation_choices)
+ final_occupations[occupation] = M
+ occupation_choices -= occupation
+ unassigned_mobs -= M
+ else
+ else
+ //Foreach goto(1846)
+ for(var/occupation in final_occupations)
+ var/M = final_occupations[occupation]
+ if (ismob(M))
+ M.Assign_Rank(occupation)
+ else
+ if (istype(M, (List:0)))
+ for(var/mob/human/E as mob in final_occupations[occupation])
+ E.Assign_Rank(occupation)
+ //Foreach goto(2003)
+ //Foreach goto(1931)
+ for(var/mob/human/M as mob in unassigned_mobs)
+ M.Assign_Rank(pick("Research Assistant", "Technical Assistant", "Medical Assistant", "Staff Assistant"))
+ //Foreach goto(2051)
+ return
+
+/proc/shuffle(shufflelist)
+
+ if (!( shufflelist ))
+ return
+ var/old_list = shufflelist.Copy()
+ var/list/new_list = list( )
+ while(old_list.len)
+ var/item = old_list[rand(1, old_list.len)]
+ new_list += item
+ old_list -= item
+ return new_list
+ return
+
+/world/New()
+
+ ..()
+ spawn( 0 )
+ SetupOccupationsList()
+ return
+ return
+
+/mob/human/verb/char_setup()
+
+ if (src.start)
+ return
+ src.ShowChoices()
+ return
+
+/mob/human/proc/ShowChoices()
+
+ var/destructive = assistant_occupations.Copy()
+ var/dat = ""
+ dat += text("Name: []
", src, src.rname)
+ dat += text("Gender: []
", src, (src.gender == "male" ? "Male" : "Female"))
+ dat += text("Age - []
", src, src.age)
+ dat += "
Occupation Choices:
"
+ if (destructive.Find(src.occupation1))
+ dat += text("\t[]
", src, src.occupation1)
+ else
+ if (src.occupation1 != "No Preference")
+ dat += text("\tFirst Choice: []
", src, src.occupation1)
+ if (destructive.Find(src.occupation2))
+ dat += text("\tSecond Choice: []
", src, src.occupation2)
+ else
+ if (src.occupation2 != "No Preference")
+ dat += text("\tSecond Choice: []
", src, src.occupation2)
+ if (destructive.Find(src.occupation3))
+ dat += text("\tLast Choice: []
", src, src.occupation3)
+ else
+ if (src.occupation3 != "No Preference")
+ dat += text("\tLast Choice: []
", src, src.occupation3)
+ else
+ dat += text("\tLast Choice: No Preference
", src)
+ else
+ dat += text("\tSecond Choice: No Preference
", src)
+ else
+ dat += text("\tNo Preference
", src)
+ dat += "
Body Data
"
+ dat += text("Blood Type: []
", src, src.b_type)
+ dat += text("Skin Tone: []/220
", src, -src.ns_tone + 35)
+ dat += text("Hair Color: test
", num2hex(src.nr_hair, 2), num2hex(src.ng_hair, 2), num2hex(src.nb_hair))
+ dat += text(" Red - []", num2hex(src.nr_hair, 2), src, src.nr_hair)
+ dat += text(" Green - []", num2hex(src.ng_hair, 2), src, src.ng_hair)
+ dat += text(" Blue - []", num2hex(src.nb_hair, 2), src, src.nb_hair)
+ dat += text("
Style - []", src, src.h_style)
+ dat += text("
Eye Color: test
", num2hex(src.r_eyes, 2), num2hex(src.g_eyes, 2), num2hex(src.b_eyes, 2))
+ dat += text(" Red - []", num2hex(src.r_eyes, 2), src, src.r_eyes)
+ dat += text(" Green - []", num2hex(src.g_eyes, 2), src, src.g_eyes)
+ dat += text(" Blue - []", num2hex(src.b_eyes, 2), src, src.b_eyes)
+ dat += "
Disabilities
"
+ dat += text("Need Glasses: []
", src, (src.need_gl ? "Yes" : "No"))
+ dat += text("Epileptic: []
", src, (src.be_epil ? "Yes" : "No"))
+ dat += text("Tourette Syndrome: []
", src, (src.be_tur ? "Yes" : "No"))
+ dat += text("Chronic Cough: []
", src, (src.be_cough ? "Yes" : "No"))
+ dat += text("Stutter: []
", src, (src.be_stut ? "Yes" : "No"))
+ dat += "
"
+ dat += text("Load Setup
", src)
+ dat += text("Save Setup
", src)
+ dat += ""
+ src << browse(dat, "window=mob_occupations;size=300x600")
+ return
+
+/mob/human/proc/SetChoices(occ)
+
+ if (occ == null)
+ occ = 1
+ var/HTML = ""
+ HTML += ""
+ switch(occ)
+ if(1.0)
+ HTML += "Which occupation would you like most?
"
+ if(2.0)
+ HTML += "Which occupation would you like if you couldn't have your first?
"
+ if(3.0)
+ HTML += "Which occupation would you like if you couldn't have the others?
"
+ else
+ for(var/job in occupations + assistant_occupations)
+ HTML += text("[]
", src, occ, job, job)
+ //Foreach goto(105)
+ HTML += text("Captain
", src, occ)
+ HTML += "
"
+ HTML += text("\[No Preference\]
", src, occ)
+ HTML += text("\[Cancel\]", src, occ)
+ HTML += " "
+ usr << browse(HTML, "window=mob_occupation;size=300x500")
+ return
+
+/mob/human/proc/SetJob(occ, job)
+
+ if (occ == null)
+ occ = 1
+ if (job == null)
+ job = "Captain"
+ if ((!( occupations.Find(job) ) && (!( assistant_occupations.Find(job) ) && job != "Captain")))
+ return
+ switch(occ)
+ if(1.0)
+ if (job == src.occupation1)
+ usr << browse(null, "window=mob_occupation")
+ return
+ else
+ if (job == "No Preference")
+ src.occupation1 = "No Preference"
+ else
+ if (job == src.occupation2)
+ job = src.occupation1
+ src.occupation1 = src.occupation2
+ src.occupation2 = job
+ else
+ if (job == src.occupation3)
+ job = src.occupation1
+ src.occupation1 = src.occupation3
+ src.occupation3 = job
+ else
+ src.occupation1 = job
+ if(2.0)
+ if (job == src.occupation2)
+ src << browse(null, "window=mob_occupation")
+ return
+ else
+ if (job == "No Preference")
+ if (src.occupation3 != "No Preference")
+ src.occupation2 = src.occupation3
+ src.occupation3 = "No Preference"
+ else
+ src.occupation2 = "No Preference"
+ else
+ if (job == src.occupation1)
+ if (src.occupation2 == "No Preference")
+ src << browse(null, "window=mob_occupation")
+ return
+ job = src.occupation2
+ src.occupation2 = src.occupation1
+ src.occupation1 = job
+ else
+ if (job == src.occupation3)
+ job = src.occupation2
+ src.occupation2 = src.occupation3
+ src.occupation3 = job
+ else
+ src.occupation2 = job
+ if(3.0)
+ if (job == src.occupation3)
+ usr << browse(null, "window=mob_occupation")
+ return
+ else
+ if (job == "No Preference")
+ src.occupation3 = "No Preference"
+ else
+ if (job == src.occupation1)
+ if (src.occupation3 == "No Preference")
+ src << browse(null, "window=mob_occupation")
+ return
+ job = src.occupation3
+ src.occupation3 = src.occupation1
+ src.occupation1 = job
+ else
+ if (job == src.occupation2)
+ if (src.occupation3 == "No Preference")
+ src << browse(null, "window=mob_occupation")
+ return
+ job = src.occupation3
+ src.occupation3 = src.occupation2
+ src.occupation2 = job
+ else
+ src.occupation3 = job
+ else
+ src.ShowChoices()
+ src << browse(null, "window=mob_occupation")
+ return
+
+/mob/human/proc/Assign_Rank(rank)
+
+ if (rank == "Captain")
+ world << text("[] is the captain!", src)
+ if (!( src.w_radio ))
+ var/obj/item/weapon/radio/headset/H = new /obj/item/weapon/radio/headset( src )
+ src.w_radio = H
+ H.layer = 20
+ if (!( src.back ))
+ var/obj/item/weapon/storage/backpack/H = new /obj/item/weapon/storage/backpack( src )
+ src.back = H
+ H.layer = 20
+ if (!( src.glasses ))
+ if (src.disabilities & 1)
+ var/obj/item/weapon/clothing/glasses/regular/G = new /obj/item/weapon/clothing/glasses/regular( src )
+ src.glasses = G
+ G.layer = 20
+ if ((!( src.belt ) && src.w_uniform))
+ var/obj/item/weapon/radio/signaler/S = new /obj/item/weapon/radio/signaler( src )
+ src.belt = S
+ S.layer = 20
+ if ((!( src.r_store ) && src.w_uniform))
+ var/obj/item/weapon/pen/S = new /obj/item/weapon/pen( src )
+ src.r_store = S
+ S.layer = 20
+ if ((src.client && (!( src.wear_id ) && src.w_uniform)))
+ var/obj/item/weapon/card/id/C = new /obj/item/weapon/card/id( src )
+ src.wear_id = C
+ C.assignment = rank
+ C.layer = 20
+ C.registered = src.rname
+ switch(C.assignment)
+ if("Research Assistant")
+ C.access_level = 1
+ C.lab_access = 1
+ C.engine_access = 0
+ C.air_access = 0
+ if("Technical Assistant")
+ C.access_level = 1
+ C.lab_access = 0
+ C.engine_access = 1
+ C.air_access = 0
+ if("Staff Assistant")
+ C.access_level = 2
+ C.lab_access = 0
+ C.engine_access = 0
+ C.air_access = 0
+ if("Medical Assistant")
+ if (!( src.l_hand ))
+ var/obj/item/weapon/storage/firstaid/regular/W = new /obj/item/weapon/storage/firstaid/regular( src )
+ src.l_hand = W
+ W.layer = 20
+ src.UpdateClothing()
+ C.access_level = 1
+ C.lab_access = 1
+ C.engine_access = 0
+ C.air_access = 0
+ if("Engineer")
+ if (!( src.l_hand ))
+ var/obj/item/weapon/storage/toolbox/W = new /obj/item/weapon/storage/toolbox( src )
+ src.l_hand = W
+ W.layer = 20
+ src.UpdateClothing()
+ C.access_level = 2
+ C.lab_access = 1
+ C.engine_access = 3
+ C.air_access = 0
+ if("Research Technician")
+ C.access_level = 2
+ C.lab_access = 3
+ C.engine_access = 0
+ C.air_access = 0
+ if("Forensic Technician")
+ C.access_level = 3
+ C.lab_access = 2
+ C.engine_access = 0
+ C.air_access = 0
+ if("Medical Doctor")
+ if (!( src.l_hand ))
+ var/obj/item/weapon/storage/firstaid/regular/W = new /obj/item/weapon/storage/firstaid/regular( src )
+ src.l_hand = W
+ W.layer = 20
+ src.UpdateClothing()
+ C.access_level = 2
+ C.lab_access = 0
+ C.engine_access = 0
+ C.air_access = 0
+ if("Prison Doctor")
+ if (!( src.l_hand ))
+ var/obj/item/weapon/storage/firstaid/regular/W = new /obj/item/weapon/storage/firstaid/regular( src )
+ src.l_hand = W
+ W.layer = 20
+ src.UpdateClothing()
+ C.access_level = 2
+ C.lab_access = 0
+ C.engine_access = 0
+ C.air_access = 0
+ if("Captain")
+ C.access_level = 5
+ C.air_access = 5
+ C.engine_access = 5
+ C.lab_access = 5
+ if("Security Officer")
+ if (!( src.l_hand ))
+ var/obj/item/weapon/handcuffs/W = new /obj/item/weapon/handcuffs( src )
+ src.l_hand = W
+ W.layer = 20
+ src.UpdateClothing()
+ C.access_level = 3
+ C.lab_access = 0
+ C.engine_access = 0
+ C.air_access = 0
+ if("Prison Security")
+ if (!( src.l_hand ))
+ var/obj/item/weapon/handcuffs/W = new /obj/item/weapon/handcuffs( src )
+ src.l_hand = W
+ W.layer = 20
+ src.UpdateClothing()
+ C.access_level = 3
+ C.lab_access = 0
+ C.engine_access = 0
+ C.air_access = 0
+ if("Medical Researcher")
+ C.access_level = 2
+ C.lab_access = 5
+ C.engine_access = 0
+ C.air_access = 0
+ if("Toxin Researcher")
+ C.access_level = 2
+ C.lab_access = 5
+ C.engine_access = 0
+ C.air_access = 0
+ if("Head of Research")
+ C.access_level = 4
+ C.air_access = 2
+ C.engine_access = 2
+ C.lab_access = 5
+ if("Head of Personnel")
+ C.access_level = 4
+ C.air_access = 2
+ C.engine_access = 2
+ C.lab_access = 4
+ if("Prison Warden")
+ C.access_level = 4
+ C.air_access = 2
+ C.engine_access = 2
+ C.lab_access = 4
+ if("Station Technician")
+ if (!( src.l_hand ))
+ var/obj/item/weapon/storage/toolbox/W = new /obj/item/weapon/storage/toolbox( src )
+ src.l_hand = W
+ W.layer = 20
+ src.UpdateClothing()
+ C.access_level = 2
+ C.lab_access = 0
+ C.engine_access = 2
+ C.air_access = 3
+ if("Atmospheric Technician")
+ C.access_level = 3
+ C.lab_access = 0
+ C.engine_access = 0
+ C.air_access = 4
+ else
+ C.name = text("[]'s ID Card ([]>[]-[]-[])", C.registered, C.access_level, C.lab_access, C.engine_access, C.air_access)
+ src << text("You are the [].", C.assignment)
+ var/S = locate(text("start*[]", C.assignment))
+ if ((istype(S, /obj/start) && (istype(S.loc, /turf) && !( ctf ))))
+ src << "\blue You have been teleported to your new starting location!"
+ src.loc = S.loc
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/stationobjs.dmi b/ss13-40.93.2-decomp/spacestation13/stationobjs.dmi
new file mode 100644
index 0000000..acee194
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/stationobjs.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/table.dmi b/ss13-40.93.2-decomp/spacestation13/table.dmi
new file mode 100644
index 0000000..b3d2952
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/table.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/turfs.dmi b/ss13-40.93.2-decomp/spacestation13/turfs.dmi
new file mode 100644
index 0000000..aa9620e
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/turfs.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/turfs2.dmi b/ss13-40.93.2-decomp/spacestation13/turfs2.dmi
new file mode 100644
index 0000000..16ffd12
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/turfs2.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/uniforms.dmi b/ss13-40.93.2-decomp/spacestation13/uniforms.dmi
new file mode 100644
index 0000000..dc57b9b
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/uniforms.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/unnamed.dm b/ss13-40.93.2-decomp/spacestation13/unnamed.dm
new file mode 100644
index 0000000..cb6cb89
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/unnamed.dm
@@ -0,0 +1,78 @@
+
+/sound/New(file, repeat, wait, channel)
+
+ src.file = fcopy_rsc(file)
+ src.repeat = repeat
+ src.wait = wait
+ src.channel = channel
+ return ..()
+ return
+
+/sound/proc/RscFile()
+
+ return src.file
+ return
+
+/icon/New(icon, icon_state, dir, frame, moving)
+
+ src.icon = _dm_new_icon(icon, icon_state, dir, frame, moving)
+ return
+
+/icon/proc/Icon()
+
+ return src.icon
+ return
+
+/icon/proc/RscFile()
+
+ return fcopy_rsc(src.icon)
+ return
+
+/icon/proc/IconStates()
+
+ return icon_states(src.icon)
+ return
+
+/icon/proc/Turn(angle)
+
+ _dm_turn_icon(src.icon, angle)
+ return
+
+/icon/proc/Flip(dir)
+
+ _dm_flip_icon(src.icon, dir)
+ return
+
+/icon/proc/Shift(dir, offset, wrap)
+
+ _dm_shift_icon(src.icon, dir, offset, wrap)
+ return
+
+/icon/proc/SetIntensity(r, g, b)
+
+ if (g == null)
+ g = -1.0
+ if (b == null)
+ b = -1.0
+ _dm_icon_intensity(src.icon, r, g, b)
+ return
+
+/icon/proc/Blend(icon, f)
+
+ _dm_icon_blend(src.icon, icon, f)
+ return
+
+/icon/proc/SwapColor(o, n)
+
+ _dm_icon_swap_color(src.icon, o, n)
+ return
+
+/icon/proc/DrawBox(c, x1, y1, x2, y2)
+
+ _dm_draw_box(src.icon, c, x1, y1, x2, y2)
+ return
+
+/icon/proc/Insert(new_icon, icon_state, dir, frame, moving, delay)
+
+ _dm_icon_insert(src.icon, new_icon, icon_state, dir, frame, moving, delay)
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/wall.dmi b/ss13-40.93.2-decomp/spacestation13/wall.dmi
new file mode 100644
index 0000000..9efe147
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/wall.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/water.dmi b/ss13-40.93.2-decomp/spacestation13/water.dmi
new file mode 100644
index 0000000..17b6796
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/water.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/weap_sat.dm b/ss13-40.93.2-decomp/spacestation13/weap_sat.dm
new file mode 100644
index 0000000..f100fa8
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/weap_sat.dm
@@ -0,0 +1,349 @@
+
+/obj/machinery/computer/teleporter/New()
+
+ src.id = text("[]", rand(1000, 9999))
+ ..()
+ return
+
+/obj/machinery/computer/teleporter/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(58)
+ src.icon_state = "broken"
+ if(3.0)
+ if (prob(25))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(109)
+ src.icon_state = "broken"
+ else
+ return
+
+/obj/machinery/computer/teleporter/verb/lock_in(freq as num)
+ set src in oview(1)
+ set desc = "Frequency to check"
+
+ var/list/L = list( )
+ for(var/obj/item/weapon/radio/R as obj in world)
+ if (R.freq != freq)
+ continue //goto(26)
+ var/T = src.find_loc(R)
+ if (!( T ))
+ continue //goto(26)
+ var/t1 = text("-[],[],[]", T.x, T.y, T.z)
+ t1 = text("[][]", R.text, t1)
+ L[t1] = R
+ //Foreach goto(26)
+ var/t1 = input("Please select a location to lock in.", "Locking Computer", null, null) in L
+ var/R = L[t1]
+ if ((prob(30) || (istype(R, /obj/item/weapon/radio/beacon) && prob(50))))
+ src.locked = src.find_loc(R)
+ else
+ if (L.len)
+ R = L[text("[]", pick(L))]
+ src.locked = src.find_loc(R)
+ else
+ src.locked = null
+ for(var/O as mob in hearers(src, null))
+ O.show_message("\blue Locked In", 2)
+ //Foreach goto(270)
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/computer/teleporter/verb/set_id(t as text)
+ set src in oview(1)
+ set desc = "ID Tag:"
+
+ if (t)
+ src.id = t
+ return
+
+/obj/machinery/computer/teleporter/proc/find_loc(R as obj)
+
+ if (!( R ))
+ return null
+ var/T = R.loc
+ while(!( istype(T, /turf) ))
+ T = T.loc
+ if (istype(T, /area))
+ return null
+ return T
+ return
+
+/obj/machinery/computer/data/ex_act(severity)
+
+ switch(severity)
+ if(1.0)
+ src = null
+ del(src)
+ return
+ if(2.0)
+ if (prob(50))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(58)
+ src.icon_state = "broken"
+ if(3.0)
+ if (prob(25))
+ for(var/x in src.verbs)
+ src.verbs -= x
+ //Foreach goto(109)
+ src.icon_state = "broken"
+ else
+ return
+
+/obj/machinery/computer/data/weapon/log/New()
+
+ ..()
+ src.topics["Super-heater"] = "This turns a can of semi-liquid plasma into a super-heated ball of plasma."
+ src.topics["Amplifier"] = "This increases the intensity of a laser."
+ src.topics["Class 11 Laser"] = "This creates a very slow laser that is capable of penetrating most objects."
+ src.topics["Plasma Energizer"] = "This combines super-heated plasma with a laser beam."
+ src.topics["Generator"] = "This controls the entire power grid."
+ src.topics["Mirror"] = "this can reflect LOW power lasers. HIGH power goes through it!"
+ src.topics["Targetting Prism"] = "This focuses a laser coming from any direction forward."
+ return
+
+/obj/machinery/computer/data/weapon/log/display()
+ set src in oview(1)
+
+ usr << "Research Log:"
+ ..()
+ return
+
+/obj/machinery/computer/data/weapon/info/New()
+
+ ..()
+ src.topics["LOG(001)"] = "System: Deployment successful"
+ src.topics["LOG(002)"] = "System: Safe orbit at inclination .003 established"
+ src.topics["LOG(003)"] = "CenCom: Attempting test fire...ALERT(001)"
+ src.topics["ALERT(001)"] = "System: Cannot attempt test fire"
+ src.topics["LOG(004)"] = "System: Airlock accessed..."
+ src.topics["LOG(005)"] = "System: System successfully reset...Generator engaged"
+ src.topics["LOG(006)"] = "Physical: Super-heater (W005) added to power grid"
+ src.topics["LOG(007)"] = "Physical: Amplifier (W007) added to power grid"
+ src.topics["LOG(008)"] = "Physical: Plasma Energizer (W006) added to power grid"
+ src.topics["LOG(009)"] = "Physical: Laser (W004) added to power grid"
+ src.topics["LOG(010)"] = "Physical: Laser test firing"
+ src.topics["LOG(011)"] = "Physical: Plasma added to Super-heater"
+ src.topics["LOG(012)"] = "Physical: Orient N12.525,E22.124"
+ src.topics["LOG(013)"] = "System: Location N12.525,E22.124"
+ src.topics["LOG(014)"] = "Physical: Test fire...successful"
+ src.topics["LOG(015)"] = "Physical: Airlock accessed..."
+ src.topics["LOG(016)"] = "******: Disable locater systems"
+ src.topics["LOG(017)"] = "System: Locater Beacon-Disengaged,CenCom link-Cut...ALERT(002)"
+ src.topics["ALERT(002)"] = "System: Cannot seem to establish contact with Central Command"
+ src.topics["LOG(018)"] = "******: Shutting down all systems...ALERT(003)"
+ src.topics["ALERT(003)"] = "System: Power grid failure-Activating back-up power...ALERT(004)"
+ src.topics["ALERT(004)"] = "System: Engine failure...All systems deactivated."
+ return
+
+/obj/machinery/computer/data/weapon/info/display()
+ set src in oview(1)
+
+ usr << "Research Information:"
+ ..()
+ return
+
+/obj/machinery/computer/data/verb/display()
+ set src in oview(1)
+
+ for(var/x in src.topics)
+ usr << text("[], \...", x)
+ //Foreach goto(19)
+ usr << ""
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/computer/data/verb/read(topic as text)
+ set src in oview(1)
+
+ if (src.topics[text("[]", topic)])
+ usr << text("[]\n\t []", topic, src.topics[text("[]", topic)])
+ else
+ usr << text("Unable to find- []", topic)
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/teleport/hub/Bumped(M as mob|obj)
+
+ spawn( 0 )
+ if (src.icon_state == "tele1")
+ src.teleport(M)
+ return
+ return
+
+/obj/machinery/teleport/hub/proc/teleport(M as mob|obj)
+
+ var/l = src.loc
+ var/com = locate(/obj/machinery/computer/teleporter, locate(l.x - 2, l.y, l.z))
+ if (!( com ))
+ return
+ var/target = com.locked
+ if (!( com.locked ))
+ for(var/O as mob in hearers(src, null))
+ O.show_message("\red Failure: Cannot authenticate locked on coordinates. Please reinstantiat coordinate matrix.", 1, "\red Error!", 2)
+ //Foreach goto(80)
+ return
+ var/obj/effects/sparks/O = new /obj/effects/sparks( target )
+ O.dir = pick(1, 2, 4, 8)
+ spawn( 0 )
+ O.Life()
+ return
+ if (istype(M, /atom/movable))
+ if (rand(1, 1000) == 7)
+ M << "\red You see a fainting blue light."
+ M.loc = null
+ else
+ var/tx = target.x + rand(-2.0, 2)
+ var/ty = target.y + rand(-2.0, 2)
+ tx = max(min(tx, world.maxx), 1)
+ ty = max(min(ty, world.maxy), 1)
+ M.loc = locate(tx, ty, target.z)
+ else
+ for(var/B as mob in hearers(src, null))
+ B.show_message("\blue Test fire completed.", 2)
+ //Foreach goto(316)
+ return
+
+/obj/machinery/teleport/station/verb/engage()
+ set src in oview(1)
+
+ var/l = src.loc
+ var/com = locate(/obj/machinery/teleport/hub, locate(l.x + 1, l.y, l.z))
+ if (com)
+ com.icon_state = "tele1"
+ for(var/O as mob in hearers(src, null))
+ O.show_message("\blue Teleporter engaged!", 2)
+ //Foreach goto(70)
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/teleport/station/verb/disengage()
+ set src in oview(1)
+
+ var/l = src.loc
+ var/com = locate(/obj/machinery/teleport/hub, locate(l.x + 1, l.y, l.z))
+ if (com)
+ com.icon_state = "tele0"
+ for(var/O as mob in hearers(src, null))
+ O.show_message("\blue Teleporter disengaged!", 2)
+ //Foreach goto(70)
+ src.add_fingerprint(usr)
+ return
+
+/obj/machinery/teleport/station/verb/testfire()
+ set src in oview(1)
+
+ var/l = src.loc
+ var/com = locate(/obj/machinery/teleport/hub, locate(l.x + 1, l.y, l.z))
+ if (com)
+ for(var/O as mob in hearers(src, null))
+ O.show_message("\blue Test firing!", 2)
+ //Foreach goto(60)
+ com.teleport()
+ src.add_fingerprint(usr)
+ return
+
+/obj/effects/smoke/proc/Life()
+
+ if (src.amount > 1)
+ var/W = new src.type( src.loc )
+ W.amount = src.amount - 1
+ W.dir = src.dir
+ spawn( 0 )
+ W.Life()
+ return
+ src.amount--
+ if (src.amount <= 0)
+ sleep(50)
+ src = null
+ del(src)
+ return
+ var/T = get_step(src, turn(src.dir, pick(90, 0, 0, -90.0)))
+ if ((T && T.density))
+ src.dir = turn(src.dir, pick(-90.0, 90))
+ else
+ step_to(src, T, null)
+ T = src.loc
+ if (istype(T, /turf))
+ T.firelevel = T.poison
+ spawn( 3 )
+ src.Life()
+ return
+ return
+
+/obj/effects/sparks/proc/Life()
+
+ if (src.amount > 1)
+ var/W = new src.type( src.loc )
+ W.amount = src.amount - 1
+ W.dir = src.dir
+ spawn( 0 )
+ W.Life()
+ return
+ src.amount--
+ if (src.amount <= 0)
+ sleep(50)
+ src = null
+ del(src)
+ return
+ var/T = get_step(src, turn(src.dir, pick(90, 0, 0, -90.0)))
+ if ((T && T.density))
+ src.dir = turn(src.dir, pick(-90.0, 90))
+ else
+ step_to(src, T, null)
+ T = src.loc
+ if (istype(T, /turf))
+ T.firelevel = T.poison
+ spawn( 3 )
+ src.Life()
+ return
+ return
+
+/obj/effects/sparks/New()
+
+ ..()
+ var/T = src.loc
+ if (istype(T, /turf))
+ T.firelevel = T.poison
+ return
+
+/obj/effects/sparks/Del()
+
+ var/T = src.loc
+ if (istype(T, /turf))
+ T.firelevel = T.poison
+ ..()
+ return
+
+/obj/effects/sparks/Move()
+
+ ..()
+ var/T = src.loc
+ if (istype(T, /turf))
+ T.firelevel = T.poison
+ return
+
+/obj/laser/Bump()
+
+ src.range--
+ return
+
+/obj/laser/Move()
+
+ src.range--
+ return
+
+/atom/proc/laserhit(L as obj)
+
+ return 1
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/weap_sat.dmi b/ss13-40.93.2-decomp/spacestation13/weap_sat.dmi
new file mode 100644
index 0000000..ac8a28b
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/weap_sat.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/weapons.dm b/ss13-40.93.2-decomp/spacestation13/weapons.dm
new file mode 100644
index 0000000..0dc8a5a
--- /dev/null
+++ b/ss13-40.93.2-decomp/spacestation13/weapons.dm
@@ -0,0 +1,1352 @@
+
+/obj/machinery/nuclearbomb/New()
+
+ if (nuke_code)
+ src.r_code = text("[]", nuke_code)
+ ..()
+ return
+
+/obj/machinery/nuclearbomb/process()
+
+ if (src.timing)
+ src.timeleft--
+ if (src.timeleft <= 0)
+ src.explode()
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(46)
+ return
+
+/obj/machinery/nuclearbomb/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/machinery/nuclearbomb/attack_hand(user as mob)
+
+ if (src.extended)
+ user.machine = src
+ var/dat = text("Nuclear Fission Explosive
\nAuth. Disk: []
", src, (src.auth ? "++++++++++" : "----------"))
+ if (src.auth)
+ if (src.yes_code)
+ dat += text("\nStatus: []-[]
\nTimer: []
\n
\nTimer: [] Toggle
\nTime: - - [] + +
\n
\nSafety: [] Toggle
\nAnchor: [] Toggle
\n", (src.timing ? "Func/Set" : "Functional"), (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src, src, src, src.timeleft, src, src, (src.safety ? "On" : "Off"), src, (src.anchored ? "Engaged" : "Off"), src)
+ else
+ dat += text("\nStatus: Auth. S2-[]
\nTimer: []
\n
\nTimer: [] Toggle
\nTime: - - [] + +
\n
\n[] Safety: Toggle
\nAnchor: [] Toggle
\n", (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src.timeleft, (src.safety ? "On" : "Off"), (src.anchored ? "Engaged" : "Off"))
+ else
+ if (src.timing)
+ dat += text("\nStatus: Set-[]
\nTimer: []
\n
\nTimer: [] Toggle
\nTime: - - [] + +
\n
\nSafety: [] Toggle
\nAnchor: [] Toggle
\n", (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src.timeleft, (src.safety ? "On" : "Off"), (src.anchored ? "Engaged" : "Off"))
+ else
+ dat += text("\nStatus: Auth. S1-[]
\nTimer: []
\n
\nTimer: [] Toggle
\nTime: - - [] + +
\n
\nSafety: [] Toggle
\nAnchor: [] Toggle
\n", (src.safety ? "Safe" : "Engaged"), src.timeleft, (src.timing ? "On" : "Off"), src.timeleft, (src.safety ? "On" : "Off"), (src.anchored ? "Engaged" : "Off"))
+ var/message = "AUTH"
+ if (src.auth)
+ message = text("[]", src.code)
+ if (src.yes_code)
+ message = "*****"
+ dat += text("
\n>[]
\n1-2-3
\n4-5-6
\n7-8-9
\nR-0-E
\n", message, src, src, src, src, src, src, src, src, src, src, src, src)
+ user << browse(dat, "window=nuclearbomb;size=300x400")
+ else
+ src.anchored = 1
+ flick("nuclearbombc", src)
+ src.icon_state = "nuclearbomb1"
+ src.extended = 1
+ return
+
+/obj/machinery/nuclearbomb/Topic(href, href_list)
+
+ if (usr.stat)
+ return
+ if ((!( istype(usr, /mob/human) ) && (!( ticker ) || (ticker && ticker.mode != "monkey"))))
+ usr << "\red You don't have the dexterity to do this!"
+ return
+ if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf))))
+ usr.machine = src
+ if (href_list["auth"])
+ if (src.auth)
+ src.auth.loc = src.loc
+ src.yes_code = 0
+ src.auth = null
+ else
+ var/I = usr.equipped()
+ if (istype(I, /obj/item/weapon/disk/nuclear))
+ usr.drop_item()
+ I.loc = src
+ src.auth = I
+ if (src.auth)
+ if (href_list["type"])
+ if (href_list["type"] == "E")
+ if (src.code == src.r_code)
+ src.yes_code = 1
+ src.code = null
+ else
+ src.code = "ERROR"
+ else
+ if (href_list["type"] == "R")
+ src.yes_code = 0
+ src.code = null
+ else
+ src.code += text("[]", href_list["type"])
+ if (length(src.code) > 5)
+ src.code = "ERROR"
+ if (src.yes_code)
+ if (href_list["time"])
+ var/time = text2num(href_list["time"])
+ src.timeleft += time
+ src.timeleft = min(max(round(src.timeleft), 5), 600)
+ if (href_list["timer"])
+ if (src.timing == -1.0)
+ return
+ src.timing = !( src.timing )
+ if (src.timing)
+ src.icon_state = "nuclearbomb2"
+ else
+ src.icon_state = "nuclearbomb1"
+ if (href_list["safety"])
+ src.safety = !( src.safety )
+ if (href_list["anchor"])
+ src.anchored = !( src.anchored )
+ src.add_fingerprint(usr)
+ for(var/M as mob in viewers(1, src))
+ if ((M.client && M.machine == src))
+ src.attack_hand(M)
+ //Foreach goto(511)
+ else
+ usr << browse(null, "window=nuclearbomb")
+ return
+ return
+
+/obj/machinery/nuclearbomb/ex_act()
+
+ if (src.timing == -1.0)
+ return
+ else
+ return ..()
+ return
+
+/obj/machinery/nuclearbomb/proc/explode()
+
+ if (src.safety)
+ src.timing = 0
+ return
+ src.timing = -1.0
+ src.yes_code = 0
+ src.icon_state = "nuclearbomb3"
+ sleep(20)
+ var/T = src.loc
+ while(!( istype(T, /turf) ))
+ T = T.loc
+ var/min = 50
+ var/med = 250
+ var/max = 500
+ var/sw = locate(1, 1, T.z)
+ var/ne = locate(world.maxx, world.maxy, T.z)
+ for(var/U as turf in block(sw, ne))
+ var/zone = 4
+ if ((U.y <= (T.y + max) && (U.y >= (T.y - max) && (U.x <= (T.x + max) && U.x >= (T.x - max)))))
+ zone = 3
+ if ((U.y <= (T.y + med) && (U.y >= (T.y - med) && (U.x <= (T.x + med) && U.x >= (T.x - med)))))
+ zone = 2
+ if ((U.y <= (T.y + min) && (U.y >= (T.y - min) && (U.x <= (T.x + min) && U.x >= (T.x - min)))))
+ zone = 1
+ for(var/atom/A as mob|obj|turf|area in U)
+ A.ex_act(zone)
+ //Foreach goto(404)
+ U.ex_act(zone)
+ //Foreach goto(148)
+ ticker.nuclear(src.z)
+ src = null
+ del(src)
+ return
+ return
+
+/obj/item/weapon/infra_sensor/New()
+
+ ..()
+ spawn( 0 )
+ src.process()
+ return
+ return
+
+/obj/item/weapon/infra_sensor/proc/process()
+
+ if (src.passive)
+ for(var/obj/beam/i_beam/I as obj in range(2, src.loc))
+ I.left = 2
+ //Foreach goto(30)
+ spawn( 10 )
+ src.process()
+ return
+ return
+
+/obj/item/weapon/infra_sensor/proc/burst()
+
+ for(var/obj/beam/i_beam/I as obj in range(src.loc, null))
+ I.left = 10
+ //Foreach goto(22)
+ for(var/obj/item/weapon/infra/I as obj in range(src.loc, null))
+ I.visible = 1
+ spawn( 0 )
+ if ((I && I.first))
+ I.first.vis_spread(1)
+ return
+ //Foreach goto(69)
+ for(var/obj/item/weapon/assembly/rad_infra/I as obj in range(src.loc, null))
+ I.part2.visible = 1
+ spawn( 0 )
+ if ((I.part2 && I.part2.first))
+ I.part2.first.vis_spread(1)
+ return
+ //Foreach goto(145)
+ return
+
+/obj/item/weapon/infra_sensor/attack_self(user as mob)
+
+ user.machine = src
+ var/dat = text("Infrared Sensor
\nPassive Emitter: []
\nActive Emitter: Burst Fire\n", (src.passive ? text("On", src) : text("Off", src)), src)
+ user << browse(dat, "window=infra_sensor")
+ return
+
+/obj/item/weapon/infra_sensor/Topic(href, href_list)
+
+ if (usr.stat)
+ return
+ if ((usr.contents.Find(src) || (usr.contents.Find(src.master) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf)))))
+ usr.machine = src
+ if (href_list["passive"])
+ src.passive = !( src.passive )
+ if (href_list["active"])
+ spawn( 0 )
+ src.burst()
+ return
+ if (!( src.master ))
+ if (istype(src.loc, /mob))
+ attack_self(src.loc)
+ else
+ for(var/M as mob in viewers(1, src))
+ if (M.client)
+ src.attack_self(M)
+ //Foreach goto(164)
+ else
+ if (istype(src.master.loc, /mob))
+ src.attack_self(src.loc)
+ else
+ for(var/M as mob in viewers(1, src.master))
+ if (M.client)
+ src.attack_self(M)
+ //Foreach goto(240)
+ src.add_fingerprint(usr)
+ else
+ usr << browse(null, "window=infra_sensor")
+ return
+ return
+
+/obj/item/weapon/prox_sensor/dropped()
+
+ spawn( 0 )
+ src.sense()
+ return
+ return
+
+/obj/item/weapon/prox_sensor/proc/sense()
+
+ if (src.state)
+ if (src.master)
+ spawn( 0 )
+ src.master.r_signal(1, src)
+ return
+ else
+ for(var/O as mob in hearers(null, null))
+ O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
+ //Foreach goto(58)
+ return
+
+/obj/item/weapon/prox_sensor/HasProximity(AM as mob|obj)
+
+ if (istype(AM, /obj/beam))
+ return
+ if (AM.move_speed < 12)
+ src.sense()
+ return
+
+/obj/item/weapon/prox_sensor/attackby(S as obj, user as mob)
+
+ if ((!( istype(S, /obj/item/weapon/radio/signaler) ) || !( S.b_stat )))
+ return
+ var/obj/item/weapon/assembly/rad_prox/R = new /obj/item/weapon/assembly/rad_prox( user )
+ S.loc = R
+ R.part1 = S
+ S.layer = S.initial(S.layer)
+ if (user.client)
+ user.client.screen -= S
+ if (user.r_hand == S)
+ u_equip(S)
+ user.r_hand = R
+ else
+ u_equip(S)
+ user.l_hand = R
+ S.master = R
+ src.master = R
+ src.layer = initial(src.layer)
+ user.u_equip(src)
+ if (user.client)
+ user.client.screen -= src
+ src.loc = R
+ R.part2 = src
+ R.layer = 20
+ R.loc = user
+ R.dir = src.dir
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/prox_sensor/attack_self(user as mob)
+
+ user.machine = src
+ var/dat = text("Proximity Sensor\nStatus: []
\n[]\n", (src.state ? text("On", src) : text("Off", src)), (src.state ? "Time On (10)" : text("Time On (10)", src)))
+ user << browse(dat, "window=prox")
+ return
+
+/obj/item/weapon/prox_sensor/Topic(href, href_list)
+
+ if (usr.stat)
+ return
+ if ((usr.contents.Find(src) || (usr.contents.Find(src.master) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf)))))
+ usr.machine = src
+ if (href_list["state"])
+ src.state = !( src.state )
+ src.icon_state = text("motion[]", src.state)
+ if (src.master)
+ src.master.c_state(src.state, src)
+ if (href_list["time"])
+ spawn( 100 )
+ if (src.state == 0)
+ src.state = !( src.state )
+ src.icon_state = text("motion[]", src.state)
+ if (src.master)
+ src.master.c_state(src.state, src)
+ return
+ if (!( src.master ))
+ if (istype(src.loc, /mob))
+ attack_self(src.loc)
+ else
+ for(var/M as mob in viewers(1, src))
+ if (M.client)
+ src.attack_self(M)
+ //Foreach goto(234)
+ else
+ if (istype(src.master.loc, /mob))
+ src.attack_self(src.loc)
+ else
+ for(var/M as mob in viewers(1, src.master))
+ if (M.client)
+ src.attack_self(M)
+ //Foreach goto(310)
+ else
+ usr << browse(null, "window=prox")
+ return
+ return
+
+/obj/item/weapon/prox_sensor/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/item/weapon/prox_sensor/Move()
+
+ ..()
+ src.sense()
+ return
+
+/obj/item/weapon/infra/proc/hit()
+
+ if (src.master)
+ spawn( 0 )
+ src.master.r_signal(1, src)
+ return
+ else
+ for(var/O as mob in hearers(null, null))
+ O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
+ //Foreach goto(51)
+ return
+
+/obj/item/weapon/infra/proc/process()
+
+ if ((!( src.first ) && (src.state && (istype(src.loc, /turf) || (src.master && istype(src.master.loc, /turf))))))
+ var/obj/beam/i_beam/I = new /obj/beam/i_beam( (src.master ? src.master.loc : src.loc) )
+ I.master = src
+ I.density = 1
+ I.dir = src.dir
+ step(I, I.dir)
+ if (I)
+ I.density = 0
+ src.first = I
+ I.vis_spread(src.visible)
+ spawn( 0 )
+ if (I)
+ I.limit = 20
+ I.process()
+ return
+ if (!( src.state ))
+ src.first = null
+ del(src.first)
+ spawn( 10 )
+ src.process()
+ return
+ return
+
+/obj/item/weapon/infra/attackby(S as obj, user as mob)
+
+ if ((!( istype(S, /obj/item/weapon/radio/signaler) ) || !( S.b_stat )))
+ return
+ var/obj/item/weapon/assembly/rad_infra/R = new /obj/item/weapon/assembly/rad_infra( user )
+ S.loc = R
+ R.part1 = S
+ S.layer = S.initial(S.layer)
+ if (user.client)
+ user.client.screen -= S
+ if (user.r_hand == S)
+ u_equip(S)
+ user.r_hand = R
+ else
+ u_equip(S)
+ user.l_hand = R
+ S.master = R
+ src.master = R
+ src.layer = initial(src.layer)
+ user.u_equip(src)
+ if (user.client)
+ user.client.screen -= src
+ src.loc = R
+ R.part2 = src
+ R.layer = 20
+ R.loc = user
+ R.dir = src.dir
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/infra/New()
+
+ spawn( 0 )
+ src.process()
+ return
+ ..()
+ return
+
+/obj/item/weapon/infra/attack_self(user as mob)
+
+ user.machine = src
+ var/dat = text("Infrared Laser\nStatus: []
\nVisibility: []
\n", (src.state ? text("On", src) : text("Off", src)), (src.visible ? text("Visible", src) : text("Invisible", src)))
+ user << browse(dat, "window=infra")
+ return
+
+/obj/item/weapon/infra/Topic(href, href_list)
+
+ if (usr.stat)
+ return
+ if ((usr.contents.Find(src) || (usr.contents.Find(src.master) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf)))))
+ usr.machine = src
+ if (href_list["state"])
+ src.state = !( src.state )
+ src.icon_state = text("infrared[]", src.state)
+ if (src.master)
+ src.master.c_state(src.state, src)
+ if (href_list["visible"])
+ src.visible = !( src.visible )
+ spawn( 0 )
+ if (src.first)
+ src.first.vis_spread(src.visible)
+ return
+ if (!( src.master ))
+ if (istype(src.loc, /mob))
+ attack_self(src.loc)
+ else
+ for(var/M as mob in viewers(1, src))
+ if (M.client)
+ src.attack_self(M)
+ //Foreach goto(211)
+ else
+ if (istype(src.master.loc, /mob))
+ src.attack_self(src.loc)
+ else
+ for(var/M as mob in viewers(1, src.master))
+ if (M.client)
+ src.attack_self(M)
+ //Foreach goto(287)
+ else
+ usr << browse(null, "window=infra")
+ return
+ return
+
+/obj/item/weapon/infra/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/item/weapon/infra/attack_hand()
+
+ src.first = null
+ del(src.first)
+ ..()
+ return
+
+/obj/item/weapon/infra/Move()
+
+ var/t = src.dir
+ ..()
+ src.dir = t
+ src.first = null
+ del(src.first)
+ return
+
+/obj/item/weapon/infra/verb/rotate()
+ set src in usr
+
+ src.dir = turn(src.dir, 90)
+ return
+
+/obj/item/weapon/timer/proc/time()
+
+ if (src.master)
+ spawn( 0 )
+ src.master.r_signal(1, src)
+ return
+ else
+ for(var/O as mob in hearers(null, null))
+ O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
+ //Foreach goto(51)
+ return
+
+/obj/item/weapon/timer/proc/process()
+
+ if (src.timing)
+ if (src.time > 0)
+ src.time = round(src.time) - 1
+ else
+ time()
+ src.time = 0
+ src.timing = 0
+ if (!( src.master ))
+ if (istype(src.loc, /mob))
+ attack_self(src.loc)
+ else
+ for(var/M as mob in viewers(1, src))
+ if (M.client)
+ src.attack_self(M)
+ //Foreach goto(100)
+ else
+ if (istype(src.master.loc, /mob))
+ src.attack_self(src.loc)
+ else
+ for(var/M as mob in viewers(1, src.master))
+ if (M.client)
+ src.attack_self(M)
+ //Foreach goto(176)
+ spawn( 10 )
+ src.process()
+ return
+ return
+
+/obj/item/weapon/timer/attackby(S as obj, user as mob)
+
+ if ((!( istype(S, /obj/item/weapon/radio/signaler) ) || !( S.b_stat )))
+ return
+ var/obj/item/weapon/assembly/rad_time/R = new /obj/item/weapon/assembly/rad_time( user )
+ S.loc = R
+ R.part1 = S
+ S.layer = S.initial(S.layer)
+ if (user.client)
+ user.client.screen -= S
+ if (user.r_hand == S)
+ u_equip(S)
+ user.r_hand = R
+ else
+ u_equip(S)
+ user.l_hand = R
+ S.master = R
+ src.master = R
+ src.layer = initial(src.layer)
+ user.u_equip(src)
+ if (user.client)
+ user.client.screen -= src
+ src.loc = R
+ R.part2 = src
+ R.layer = 20
+ R.loc = user
+ R.dir = src.dir
+ src.add_fingerprint(user)
+ R.add_fingerprint(user)
+ return
+
+/obj/item/weapon/timer/New()
+
+ spawn( 0 )
+ src.process()
+ return
+ ..()
+ return
+
+/obj/item/weapon/timer/attack_self(user as mob)
+
+ user.machine = src
+ var/second = src.time % 60
+ var/minute = (src.time - second) / 60
+ var/dat = text("Timing Unit\n[] []:[]\n- - + +\n", (src.timing ? text("Timing", src) : text("Not Timing", src)), minute, second, src, src, src, src)
+ user << browse(dat, "window=timer")
+ return
+
+/obj/item/weapon/timer/Topic(href, href_list)
+
+ if (usr.stat)
+ return
+ if ((usr.contents.Find(src) || (usr.contents.Find(src.master) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf)))))
+ usr.machine = src
+ if (href_list["time"])
+ src.timing = text2num(href_list["time"])
+ if (href_list["tp"])
+ var/tp = text2num(href_list["tp"])
+ src.time += tp
+ src.time = min(max(round(src.time), 0), 600)
+ if (!( src.master ))
+ if (istype(src.loc, /mob))
+ attack_self(src.loc)
+ else
+ for(var/M as mob in viewers(1, src))
+ if (M.client)
+ src.attack_self(M)
+ //Foreach goto(192)
+ else
+ if (istype(src.master.loc, /mob))
+ src.attack_self(src.loc)
+ else
+ for(var/M as mob in viewers(1, src.master))
+ if (M.client)
+ src.attack_self(M)
+ //Foreach goto(268)
+ src.add_fingerprint(usr)
+ else
+ usr << browse(null, "window=timer")
+ return
+ return
+
+/obj/item/weapon/assembly/proc/r_signal(signal)
+
+ return
+
+/obj/item/weapon/assembly/proc/c_state(n, O as obj)
+
+ return
+
+/obj/item/weapon/assembly/shock_kit/Del()
+
+ src.part1 = null
+ del(src.part1)
+ src.part2 = null
+ del(src.part2)
+ ..()
+ return
+
+/obj/item/weapon/assembly/shock_kit/attackby(W as obj, user as mob)
+
+ if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
+ var/T = src.loc
+ if (ismob(T))
+ T = T.loc
+ src.part1.loc = T
+ src.part2.loc = T
+ src.part1.master = null
+ src.part2.master = null
+ src.part1 = null
+ src.part2 = null
+ src = null
+ del(src)
+ return
+ if (!( istype(W, /obj/item/weapon/screwdriver) ))
+ return
+ src.status = !( src.status )
+ if (src.status)
+ user.show_message("\blue The shock pack is now secured!", 1)
+ else
+ user.show_message("\blue The shock pack is now unsecured!", 1)
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/shock_kit/attack_self(user as mob)
+
+ src.part1.attack_self(user, src.status)
+ src.part2.attack_self(user, src.status)
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/shock_kit/r_signal(n, source)
+
+ if (istype(src.loc, /obj/stool/chair/e_chair))
+ var/C = src.loc
+ C.shock()
+ return
+
+/obj/item/weapon/assembly/rad_time/Del()
+
+ src.part1 = null
+ del(src.part1)
+ src.part2 = null
+ del(src.part2)
+ ..()
+ return
+
+/obj/item/weapon/assembly/rad_time/attackby(W as obj, user as mob)
+
+ if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
+ var/T = src.loc
+ if (ismob(T))
+ T = T.loc
+ src.part1.loc = T
+ src.part2.loc = T
+ src.part1.master = null
+ src.part2.master = null
+ src.part1 = null
+ src.part2 = null
+ src = null
+ del(src)
+ return
+ if (!( istype(W, /obj/item/weapon/screwdriver) ))
+ return
+ src.status = !( src.status )
+ if (src.status)
+ user.show_message("\blue The signaler is now secured!", 1)
+ else
+ user.show_message("\blue The signaler is now unsecured!", 1)
+ src.part1.b_stat = !( src.status )
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/rad_time/attack_self(user as mob)
+
+ src.part1.attack_self(user, src.status)
+ src.part2.attack_self(user, src.status)
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/rad_time/r_signal(n, source)
+
+ if (source == src.part2)
+ src.part1.s_signal(1)
+ return
+
+/obj/item/weapon/assembly/rad_prox/c_state(n)
+
+ src.icon_state = text("motion[]", n)
+ return
+
+/obj/item/weapon/assembly/rad_prox/Del()
+
+ src.part1 = null
+ del(src.part1)
+ src.part2 = null
+ del(src.part2)
+ ..()
+ return
+
+/obj/item/weapon/assembly/rad_prox/HasProximity(AM as mob|obj)
+
+ if (istype(AM, /obj/beam))
+ return
+ if (AM.move_speed < 12)
+ src.part2.sense()
+ return
+
+/obj/item/weapon/assembly/rad_prox/attackby(W as obj, user as mob)
+
+ if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
+ var/T = src.loc
+ if (ismob(T))
+ T = T.loc
+ src.part1.loc = T
+ src.part2.loc = T
+ src.part1.master = null
+ src.part2.master = null
+ src.part1 = null
+ src.part2 = null
+ src = null
+ del(src)
+ return
+ if (!( istype(W, /obj/item/weapon/screwdriver) ))
+ return
+ src.status = !( src.status )
+ if (src.status)
+ user.show_message("\blue The proximity sensor is now secured!", 1)
+ else
+ user.show_message("\blue The proximity sensor is now unsecured!", 1)
+ src.part1.b_stat = !( src.status )
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/rad_prox/attack_self(user as mob)
+
+ src.part1.attack_self(user, src.status)
+ src.part2.attack_self(user, src.status)
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/rad_prox/r_signal(n, source)
+
+ if (source == src.part2)
+ src.part1.s_signal(1)
+ return
+
+/obj/item/weapon/assembly/rad_prox/Move()
+
+ ..()
+ src.part2.sense()
+ return
+
+/obj/item/weapon/assembly/rad_prox/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/item/weapon/assembly/rad_prox/dropped()
+
+ spawn( 0 )
+ src.part2.sense()
+ return
+ return
+
+/obj/item/weapon/assembly/rad_infra/c_state(n)
+
+ src.icon_state = text("infrared[]", n)
+ return
+
+/obj/item/weapon/assembly/rad_infra/Del()
+
+ src.part1 = null
+ del(src.part1)
+ src.part2 = null
+ del(src.part2)
+ ..()
+ return
+
+/obj/item/weapon/assembly/rad_infra/attackby(W as obj, user as mob)
+
+ if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
+ var/T = src.loc
+ if (ismob(T))
+ T = T.loc
+ src.part1.loc = T
+ src.part2.loc = T
+ src.part1.master = null
+ src.part2.master = null
+ src.part1 = null
+ src.part2 = null
+ src = null
+ del(src)
+ return
+ if (!( istype(W, /obj/item/weapon/screwdriver) ))
+ return
+ src.status = !( src.status )
+ if (src.status)
+ user.show_message("\blue The infrared laser is now secured!", 1)
+ else
+ user.show_message("\blue The infrared laser is now unsecured!", 1)
+ src.part1.b_stat = !( src.status )
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/rad_infra/attack_self(user as mob)
+
+ src.part1.attack_self(user, src.status)
+ src.part2.attack_self(user, src.status)
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/rad_infra/r_signal(n, source)
+
+ if (source == src.part2)
+ src.part1.s_signal(1)
+ return
+
+/obj/item/weapon/assembly/rad_infra/verb/rotate()
+ set src in usr
+
+ src.dir = turn(src.dir, 90)
+ src.part2.dir = src.dir
+ src.add_fingerprint(usr)
+ return
+
+/obj/item/weapon/assembly/rad_infra/Move()
+
+ var/t = src.dir
+ ..()
+ src.dir = t
+ src.first = null
+ del(src.part2.first)
+ return
+
+/obj/item/weapon/assembly/rad_infra/attack_paw(user as mob)
+
+ return src.attack_hand(user)
+ return
+
+/obj/item/weapon/assembly/rad_infra/attack_hand(M)
+
+ src.first = null
+ del(src.part2.first)
+ ..()
+ return
+
+/obj/item/weapon/assembly/prox_ignite/HasProximity(AM as mob|obj)
+
+ if (istype(AM, /obj/beam))
+ return
+ if (AM.move_speed < 12)
+ src.part1.sense()
+ return
+
+/obj/item/weapon/assembly/prox_ignite/dropped()
+
+ spawn( 0 )
+ src.part1.sense()
+ return
+ return
+
+/obj/item/weapon/assembly/prox_ignite/Del()
+
+ src.part1 = null
+ del(src.part1)
+ src.part2 = null
+ del(src.part2)
+ ..()
+ return
+
+/obj/item/weapon/assembly/prox_ignite/c_state(n)
+
+ src.icon_state = text("prox_igniter[]", n)
+ return
+
+/obj/item/weapon/assembly/prox_ignite/attackby(W as obj, user as mob)
+
+ if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
+ var/T = src.loc
+ if (ismob(T))
+ T = T.loc
+ src.part1.loc = T
+ src.part2.loc = T
+ src.part1.master = null
+ src.part2.master = null
+ src.part1 = null
+ src.part2 = null
+ src = null
+ del(src)
+ return
+ if (!( istype(W, /obj/item/weapon/screwdriver) ))
+ return
+ src.status = !( src.status )
+ if (src.status)
+ user.show_message("\blue The proximity sensor is now secured! The igniter now works!", 1)
+ else
+ user.show_message("\blue The proximity sensor is now unsecured! The igniter will not work.", 1)
+ src.part2.status = src.status
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/prox_ignite/attack_self(user as mob)
+
+ src.part1.attack_self(user, src.status)
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/prox_ignite/r_signal()
+
+ for(var/O as mob in hearers(1, src.loc))
+ O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
+ //Foreach goto(20)
+ src.part2.ignite()
+ return
+
+/obj/item/weapon/assembly/rad_ignite/Del()
+
+ src.part1 = null
+ del(src.part1)
+ src.part2 = null
+ del(src.part2)
+ ..()
+ return
+
+/obj/item/weapon/assembly/rad_ignite/attackby(W as obj, user as mob)
+
+ if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
+ var/T = src.loc
+ if (ismob(T))
+ T = T.loc
+ src.part1.loc = T
+ src.part2.loc = T
+ src.part1.master = null
+ src.part2.master = null
+ src.part1 = null
+ src.part2 = null
+ src = null
+ del(src)
+ return
+ if (!( istype(W, /obj/item/weapon/screwdriver) ))
+ return
+ src.status = !( src.status )
+ if (src.status)
+ user.show_message("\blue The radio is now secured! The igniter now works!", 1)
+ else
+ user.show_message("\blue The radio is now unsecured! The igniter will not work.", 1)
+ src.part2.status = src.status
+ src.part1.b_stat = !( src.status )
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/rad_ignite/attack_self(user as mob)
+
+ src.part1.attack_self(user, src.status)
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/rad_ignite/r_signal()
+
+ for(var/O as mob in hearers(1, src.loc))
+ O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
+ //Foreach goto(20)
+ src.part2.ignite()
+ return
+
+/obj/item/weapon/assembly/m_i_ptank/c_state(n)
+
+ src.icon_state = text("m_i_ptank[]", n)
+ return
+
+/obj/item/weapon/assembly/m_i_ptank/HasProximity(AM as mob|obj)
+
+ if (istype(AM, /obj/beam))
+ return
+ if (AM.move_speed < 12)
+ src.part1.sense()
+ return
+
+/obj/item/weapon/assembly/m_i_ptank/dropped()
+
+ spawn( 0 )
+ src.part1.sense()
+ return
+ return
+
+/obj/item/weapon/assembly/m_i_ptank/Del()
+
+ src.part1 = null
+ del(src.part1)
+ src.part2 = null
+ del(src.part2)
+ src.part3 = null
+ del(src.part3)
+ ..()
+ return
+
+/obj/item/weapon/assembly/m_i_ptank/attackby(W as obj, user as mob)
+
+ if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
+ var/obj/item/weapon/assembly/prox_ignite/R = new /obj/item/weapon/assembly/prox_ignite( )
+ R.part1 = src.part1
+ R.part2 = src.part2
+ R.loc = src.loc
+ if (user.r_hand == src)
+ user.r_hand = R
+ R.layer = 20
+ else
+ if (R.l_hand == src)
+ R.l_hand = R
+ R.layer = 20
+ src.part1.loc = R
+ src.part2.loc = R
+ src.part1.master = R
+ src.part2.master = R
+ var/T = src.loc
+ if (!( istype(T, /turf) ))
+ T = T.loc
+ if (!( istype(T, /turf) ))
+ T = T.loc
+ src.part3.loc = T
+ src.part1 = null
+ src.part2 = null
+ src.part3 = null
+ src = null
+ del(src)
+ return
+ if (!( istype(W, /obj/item/weapon/weldingtool) ))
+ return
+ if (!( src.status ))
+ src.status = 1
+ bombers -= user.ckey
+ bombers += user.ckey
+ show_message("\blue A pressure hole has been bored to the plasma tank valve. The plasma tank can now be ignited.", 1)
+ else
+ user.status = 0
+ user << "\blue The hole has been closed."
+ src.part2.status = src.status
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/m_i_ptank/attack_self(user as mob)
+
+ src.part1.attack_self(user, 1)
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/m_i_ptank/r_signal()
+
+ for(var/O as mob in hearers(1, null))
+ O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
+ //Foreach goto(19)
+ if ((src.status && prob(90)))
+ src.part3.ignite()
+ return
+
+/obj/item/weapon/assembly/r_i_ptank/Del()
+
+ src.part1 = null
+ del(src.part1)
+ src.part2 = null
+ del(src.part2)
+ src.part3 = null
+ del(src.part3)
+ ..()
+ return
+
+/obj/item/weapon/assembly/r_i_ptank/attackby(W as obj, user as mob)
+
+ if ((istype(W, /obj/item/weapon/wrench) && !( src.status )))
+ var/obj/item/weapon/assembly/rad_ignite/R = new /obj/item/weapon/assembly/rad_ignite( )
+ R.part1 = src.part1
+ R.part2 = src.part2
+ R.loc = src.loc
+ if (user.r_hand == src)
+ user.r_hand = R
+ R.layer = 20
+ else
+ if (R.l_hand == src)
+ R.l_hand = R
+ R.layer = 20
+ src.part1.loc = R
+ src.part2.loc = R
+ src.part1.master = R
+ src.part2.master = R
+ var/T = src.loc
+ if (!( istype(T, /turf) ))
+ T = T.loc
+ if (!( istype(T, /turf) ))
+ T = T.loc
+ src.part3.loc = T
+ src.part1 = null
+ src.part2 = null
+ src.part3 = null
+ src = null
+ del(src)
+ return
+ if (!( istype(W, /obj/item/weapon/weldingtool) ))
+ return
+ if (!( src.status ))
+ src.status = 1
+ bombers -= user.ckey
+ bombers += user.ckey
+ show_message("\blue A pressure hole has been bored to the plasma tank valve. The plasma tank can now be ignited.", 1)
+ else
+ user.status = 0
+ user << "\blue The hole has been closed."
+ src.part2.status = src.status
+ src.part1.b_stat = !( src.status )
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/r_i_ptank/attack_self(user as mob)
+
+ if (src.part1)
+ src.part1.attack_self(user, 1)
+ src.add_fingerprint(user)
+ return
+
+/obj/item/weapon/assembly/r_i_ptank/r_signal()
+
+ for(var/O as mob in hearers(1, null))
+ O.show_message(text("\icon[] *beep* *beep*", src), 3, "*beep* *beep*", 2)
+ //Foreach goto(19)
+ if ((src.status && prob(90)))
+ src.part3.ignite()
+ return
+
+/obj/bullet/Bump(A as mob|obj|turf|area)
+
+ spawn( 0 )
+ A.las_act("bullet", src)
+ src = null
+ del(src)
+ return
+ return
+ return
+
+/obj/bullet/CheckPass(B as obj)
+
+ if (istype(B, /obj/bullet))
+ return prob(95)
+ else
+ return 1
+ return
+
+/obj/bullet/proc/process()
+
+ if ((!( src.current ) || src.loc == src.current))
+ src.current = locate(min(max(src.x + src.xo, 1), world.maxx), min(max(src.y + src.yo, 1), world.maxy), src.z)
+ if ((src.x == 1 || (src.x == world.maxx || (src.y == 1 || src.y == world.maxy))))
+ src = null
+ del(src)
+ return
+ step_towards(src, src.current)
+ spawn( 1 )
+ src.process()
+ return
+ return
+
+/obj/beam/a_laser/Bump(A as mob|obj|turf|area)
+
+ spawn( 0 )
+ A.las_act(null, src)
+ src = null
+ del(src)
+ return
+ return
+ return
+
+/obj/beam/a_laser/proc/process()
+
+ if ((!( src.current ) || src.loc == src.current))
+ src.current = locate(min(max(src.x + src.xo, 1), world.maxx), min(max(src.y + src.yo, 1), world.maxy), src.z)
+ if ((src.x == 1 || (src.x == world.maxx || (src.y == 1 || src.y == world.maxy))))
+ src = null
+ del(src)
+ return
+ step_towards(src, src.current)
+ src.life--
+ if (src.life <= 0)
+ src = null
+ del(src)
+ return
+ spawn( 1 )
+ src.process()
+ return
+ return
+
+/obj/beam/a_laser/s_laser/Bump(A as mob|obj|turf|area)
+
+ spawn( 0 )
+ A.las_act(1)
+ src = null
+ del(src)
+ return
+ return
+ return
+
+/obj/beam/i_beam/proc/hit()
+
+ if (src.master)
+ src.master.hit()
+ src = null
+ del(src)
+ return
+ return
+
+/obj/beam/i_beam/proc/vis_spread(v)
+
+ src.visible = v
+ spawn( 0 )
+ if (src.next)
+ src.next.vis_spread(v)
+ return
+ return
+
+/obj/beam/i_beam/proc/process()
+
+ if ((src.loc.density || !( src.master )))
+ src = null
+ del(src)
+ return
+ if (src.left > 0)
+ src.left--
+ if (src.left < 1)
+ if (!( src.visible ))
+ src.invisibility = 100
+ else
+ src.invisibility = 0
+ else
+ src.invisibility = 0
+ var/obj/beam/i_beam/I = new /obj/beam/i_beam( src.loc )
+ I.master = src.master
+ I.density = 1
+ I.dir = src.dir
+ step(I, I.dir)
+ if (I)
+ if (!( src.next ))
+ I.density = 0
+ I.vis_spread(src.visible)
+ src.next = I
+ spawn( 0 )
+ if ((I && src.limit > 0))
+ I.limit = src.limit - 1
+ I.process()
+ return
+ else
+ I = null
+ del(I)
+ else
+ src.next = null
+ del(src.next)
+ spawn( 10 )
+ src.process()
+ return
+ return
+
+/obj/beam/i_beam/Bump()
+
+ src = null
+ del(src)
+ return
+ return
+
+/obj/beam/i_beam/Bumped()
+
+ src.hit()
+ return
+
+/obj/beam/i_beam/HasEntered(AM as mob|obj)
+
+ if (istype(AM, /obj/beam))
+ return
+ spawn( 0 )
+ src.hit()
+ return
+ return
+
+/obj/beam/i_beam/Del()
+
+ src.next = null
+ del(src.next)
+ ..()
+ return
+
+/atom/proc/ex_act()
+
+ return
+
+/atom/proc/las_act()
+
+ return
+
+/turf/Entered(A as mob|obj)
+
+ ..()
+ if ((A && (A.density && !( istype(A, /obj/beam) ))))
+ for(var/obj/beam/i_beam/I as obj in src)
+ spawn( 0 )
+ if (I)
+ I.hit()
+ return
+ //Foreach goto(44)
+ return
diff --git a/ss13-40.93.2-decomp/spacestation13/windoor.dmi b/ss13-40.93.2-decomp/spacestation13/windoor.dmi
new file mode 100644
index 0000000..375d797
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/windoor.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/wire.dmi b/ss13-40.93.2-decomp/spacestation13/wire.dmi
new file mode 100644
index 0000000..5a50db6
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/wire.dmi differ
diff --git a/ss13-40.93.2-decomp/spacestation13/zone_sel.dmi b/ss13-40.93.2-decomp/spacestation13/zone_sel.dmi
new file mode 100644
index 0000000..5dab56e
Binary files /dev/null and b/ss13-40.93.2-decomp/spacestation13/zone_sel.dmi differ
diff --git a/ss13-h9.4-hostfiles/README.md b/ss13-h9.4-hostfiles/README.md
new file mode 100644
index 0000000..da9d265
--- /dev/null
+++ b/ss13-h9.4-hostfiles/README.md
@@ -0,0 +1 @@
+The host files for 40.93.2-H9.4, dating from March 2008. This is one of Hobnob's versions of SS13 after he decompiled it, prior to OpenSS13. You can host a game with these on DD if you like.
\ No newline at end of file
diff --git a/ss13-h9.4-hostfiles/SS13D/Admins.txt b/ss13-h9.4-hostfiles/SS13D/Admins.txt
new file mode 100644
index 0000000..1853b36
--- /dev/null
+++ b/ss13-h9.4-hostfiles/SS13D/Admins.txt
@@ -0,0 +1 @@
+hobnob - Primary Administrator
diff --git a/ss13-h9.4-hostfiles/SS13D/SS13D.dmb b/ss13-h9.4-hostfiles/SS13D/SS13D.dmb
new file mode 100644
index 0000000..94732de
Binary files /dev/null and b/ss13-h9.4-hostfiles/SS13D/SS13D.dmb differ
diff --git a/ss13-h9.4-hostfiles/SS13D/SS13D.rsc b/ss13-h9.4-hostfiles/SS13D/SS13D.rsc
new file mode 100644
index 0000000..9a54d30
Binary files /dev/null and b/ss13-h9.4-hostfiles/SS13D/SS13D.rsc differ
diff --git a/ss13-h9.4-hostfiles/SS13D/config.txt b/ss13-h9.4-hostfiles/SS13D/config.txt
new file mode 100644
index 0000000..76694ce
--- /dev/null
+++ b/ss13-h9.4-hostfiles/SS13D/config.txt
@@ -0,0 +1,60 @@
+# Config file for SS13D
+#
+# lines starting with '#' are comments
+#
+#####
+#
+# logging of actions to world.log
+# comment to disable, uncomment to enable
+#
+# log OOC channel
+LOGOOC
+#
+# log client Say
+LOGSAY
+#
+# log admin actions
+LOGADMIN
+#
+# log client access (logon/logoff)
+LOGACCESS
+#
+# log game actions (start of round, results, etc.)
+LOGGAME
+#
+# log player votes
+LOGVOTE
+#
+#
+#####
+#
+# probablities for game modes chosen in "secret" and "random" modes
+#
+# default probablity is 1, increase to make that mode more likely to be picked
+# set to 0 to disable that mode
+#
+PROB_EXTENDED 0
+PROB_TRAITOR 1
+PROB_MONKEY 1
+PROB_METEOR 2
+PROB_BLOB 2
+PROB_NUCLEAR 1
+#
+#
+#####
+#
+# voting control
+#
+# allow players to initiate a restart vote
+ALLOWVOTERESTART
+#
+# allow players to initate a mode-change start
+ALLOWVOTEMODE
+#
+# min delay (seconds) between voting sessions (default 10 minutes)
+VOTEDELAY 600
+#
+# time period (seconds) which voting session will last (default 1 minute)
+VOTEPERIOD 60
+#
+#
\ No newline at end of file
diff --git a/ss13-h9.5-hostfiles/README.md b/ss13-h9.5-hostfiles/README.md
new file mode 100644
index 0000000..49af5c3
--- /dev/null
+++ b/ss13-h9.5-hostfiles/README.md
@@ -0,0 +1 @@
+The host files for 40.93.2-H9.5, dating from March 2008. This is one of Hobnob's versions of SS13 after he decompiled it, prior to OpenSS13. You can host a game with these on DD if you like.
\ No newline at end of file
diff --git a/ss13-h9.5-hostfiles/SS13D/SS13D.dmb b/ss13-h9.5-hostfiles/SS13D/SS13D.dmb
new file mode 100644
index 0000000..dfcea37
Binary files /dev/null and b/ss13-h9.5-hostfiles/SS13D/SS13D.dmb differ
diff --git a/ss13-h9.5-hostfiles/SS13D/SS13D.rsc b/ss13-h9.5-hostfiles/SS13D/SS13D.rsc
new file mode 100644
index 0000000..59b1e79
Binary files /dev/null and b/ss13-h9.5-hostfiles/SS13D/SS13D.rsc differ
diff --git a/ss13-h9.5-hostfiles/SS13D/config.txt b/ss13-h9.5-hostfiles/SS13D/config.txt
new file mode 100644
index 0000000..ec7d5cd
--- /dev/null
+++ b/ss13-h9.5-hostfiles/SS13D/config.txt
@@ -0,0 +1,64 @@
+# Config file for SS13D
+#
+# lines starting with '#' are comments
+#
+#####
+#
+# logging of actions to world.log
+# comment to disable, uncomment to enable
+#
+# log OOC channel
+LOGOOC
+#
+# log client Say
+LOGSAY
+#
+# log admin actions
+LOGADMIN
+#
+# log client access (logon/logoff)
+LOGACCESS
+#
+# log game actions (start of round, results, etc.)
+LOGGAME
+#
+# log player votes
+LOGVOTE
+#
+#
+#####
+#
+# probablities for game modes chosen in "secret" and "random" modes
+#
+# default probablity is 1, increase to make that mode more likely to be picked
+# set to 0 to disable that mode
+#
+PROB_EXTENDED 0
+PROB_TRAITOR 1
+PROB_MONKEY 1
+PROB_METEOR 2
+PROB_BLOB 2
+PROB_NUCLEAR 1
+#
+#
+#####
+#
+# voting control
+#
+# allow players to initiate a restart vote
+ALLOWVOTERESTART
+#
+# allow players to initate a mode-change start
+ALLOWVOTEMODE
+#
+# min delay (seconds) between voting sessions (default 10 minutes)
+VOTEDELAY 600
+#
+# time period (seconds) which voting session will last (default 1 minute)
+VOTEPERIOD 60
+#
+# prevents dead players from voting or starting votes
+NODEADVOTE
+#
+# players' votes default to "No vote" (otherwise, default to "No change")
+DEFAULTNOVOTE
\ No newline at end of file