diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm
index 30091646358..b89abfdadbc 100644
--- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm
+++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm
@@ -140,9 +140,9 @@
"acJ" = (/obj/machinery/deployable/barrier,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/ai_monitored/security/armory)
"acK" = (/obj/machinery/deployable/barrier,/obj/machinery/alarm{pixel_y = 23},/obj/machinery/camera/motion{c_tag = "Armory Motion Sensor"; dir = 2; name = "motion-sensitive security camera"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/ai_monitored/security/armory)
"acL" = (/obj/machinery/suit_storage_unit/security,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/ai_monitored/security/armory)
-"acM" = (/obj/structure/rack,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/gun/energy/ionrifle,/obj/item/clothing/suit/armor/laserproof,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/ai_monitored/security/armory)
+"acM" = (/obj/structure/rack,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/gun/energy/gun/advtaser{pixel_x = -3; pixel_y = 3},/obj/item/weapon/gun/energy/gun/advtaser,/obj/item/weapon/gun/energy/gun/advtaser{pixel_x = 3; pixel_y = -3},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/ai_monitored/security/armory)
"acN" = (/obj/structure/rack,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/suit/armor/riot,/obj/item/clothing/head/helmet/riot,/obj/item/clothing/head/helmet/riot,/obj/item/clothing/head/helmet/riot,/obj/structure/window/reinforced{dir = 1},/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/ai_monitored/security/armory)
-"acO" = (/obj/structure/rack,/obj/item/weapon/shield/riot{pixel_x = -3; pixel_y = 3},/obj/item/weapon/shield/riot,/obj/item/weapon/shield/riot{pixel_x = 3; pixel_y = -3},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/ai_monitored/security/armory)
+"acO" = (/obj/structure/rack,/obj/item/weapon/gun/energy/ionrifle,/obj/item/clothing/suit/armor/laserproof,/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/ai_monitored/security/armory)
"acP" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/closet/ammunitionlocker,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/ai_monitored/security/armory)
"acQ" = (/obj/structure/closet/l3closet/security,/obj/machinery/camera{c_tag = "Brig Equipment Room"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/security/main)
"acR" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/fancy/carpet,/area/security/hos)
@@ -196,8 +196,8 @@
"adN" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/power/apc{dir = 4; name = "Prison Wing APC"; pixel_x = 24; pixel_y = 0; step_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 5},/area/security/prison)
"adO" = (/obj/structure/closet/secure_closet{name = "contraband locker"; req_access_txt = "3"},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/ai_monitored/security/armory)
"adP" = (/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/ai_monitored/security/armory)
-"adQ" = (/obj/structure/rack,/obj/item/weapon/storage/lockbox/loyalty,/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/ai_monitored/security/armory)
-"adR" = (/obj/structure/rack,/obj/item/weapon/storage/box/chemimp{pixel_x = 4; pixel_y = 3},/obj/item/weapon/storage/box/trackimp,/obj/item/weapon/storage/box/teargas,/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/ai_monitored/security/armory)
+"adQ" = (/obj/structure/rack,/obj/item/weapon/storage/box/chemimp{pixel_x = 4; pixel_y = 3},/obj/item/weapon/storage/box/trackimp,/obj/item/weapon/storage/lockbox/loyalty,/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/ai_monitored/security/armory)
+"adR" = (/obj/structure/rack,/obj/item/weapon/shield/riot{pixel_x = -3; pixel_y = 3},/obj/item/weapon/shield/riot,/obj/item/weapon/shield/riot{pixel_x = 3; pixel_y = -3},/obj/structure/window/reinforced{dir = 1},/obj/item/weapon/storage/box/teargas,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/ai_monitored/security/armory)
"adS" = (/obj/structure/rack,/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/storage/box/flashbangs{pixel_x = -2; pixel_y = -2},/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/ai_monitored/security/armory)
"adT" = (/obj/structure/rack,/obj/item/weapon/gun/projectile/shotgun/riot{pixel_x = 3; pixel_y = 3},/obj/item/weapon/gun/projectile/shotgun/riot,/turf/simulated/floor/plasteel{dir = 2; icon_state = "bot"},/area/ai_monitored/security/armory)
"adU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor/plasteel,/area/ai_monitored/security/armory)
@@ -1746,6 +1746,7 @@
"aHD" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/chapel/office)
"aHE" = (/obj/structure/closet/coffin,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
"aHF" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "chapel"},/area/chapel/main)
+"aHG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/landmark/start{name = "Cook"},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen)
"aHH" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station)
"aHI" = (/turf/simulated/shuttle/wall{icon_state = "swall2"; dir = 2},/area/shuttle/arrival/station)
"aHJ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry)
@@ -1973,6 +1974,7 @@
"aLX" = (/obj/machinery/camera{c_tag = "Chapel North"; dir = 2; network = list("SS13")},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main)
"aLY" = (/turf/simulated/wall,/area/hallway/secondary/exit)
"aLZ" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/hallway/secondary/exit)
+"aMa" = (/obj/effect/landmark/start{name = "Cook"},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen)
"aMb" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel,/area/hallway/secondary/entry)
"aMc" = (/obj/structure/table/wood,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/hallway/secondary/entry)
"aMd" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/snacks/chips,/obj/item/weapon/reagent_containers/food/drinks/soda_cans/cola,/turf/simulated/floor/fancy/carpet,/area/hallway/secondary/entry)
@@ -2274,7 +2276,6 @@
"aRN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar)
"aRO" = (/obj/machinery/door/airlock/glass{name = "Kitchen"; req_access_txt = "28"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/kitchen)
"aRP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen)
-"aRQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen)
"aRR" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen)
"aRS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen)
"aRT" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen)
@@ -2512,7 +2513,6 @@
"aWr" = (/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar)
"aWs" = (/obj/machinery/door/window/southright{name = "Bar Door"; req_access_txt = "0"; req_one_access_txt = "25;28"},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar)
"aWt" = (/obj/structure/table/reinforced,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/crew_quarters/bar)
-"aWu" = (/obj/effect/landmark/start{name = "Chef"},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen)
"aWv" = (/obj/structure/table,/obj/machinery/reagentgrinder,/obj/machinery/requests_console{department = "Kitchen"; departmentType = 2; pixel_x = 30; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/kitchen)
"aWw" = (/turf/simulated/floor/plasteel{icon_state = "green"; dir = 4},/area/hydroponics)
"aWx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j2s"; sortType = 16},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard)
@@ -4141,7 +4141,7 @@
"bBI" = (/obj/structure/table,/obj/item/weapon/scalpel{pixel_y = 12},/obj/item/weapon/circular_saw,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/sleeper)
"bBJ" = (/obj/structure/table,/obj/item/weapon/retractor,/turf/simulated/floor/plasteel{icon_state = "whitehall"; dir = 2},/area/medical/sleeper)
"bBK" = (/obj/structure/table,/obj/item/weapon/cautery{pixel_x = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel,/area/medical/sleeper)
-"bBL" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/gun/syringe,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/sleeper)
+"bBL" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/gun/syringe,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/sleeper)
"bBM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitebluecorner"},/area/medical/sleeper)
"bBN" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/medical/sleeper)
"bBO" = (/obj/structure/closet/l3closet/general,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/sleeper)
@@ -6541,9 +6541,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHabqabrabqaaHabsaaiabtaasaasabuabvabwaasabxabyabzaasabAabBaaiaafaaaaaaaaaaaaaaaaaaaaaabmabCabDabEabFabnabGabHabIabJabKabnaaaaaaaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaafabLaafabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaabeabeabdabeabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHabMabNabOabPabQaaiabRabSabRabRabRabTabRabRabRabUabRabRabVaaiaafaaaaafaafaafaafaaaaafablabWabDabXabCabnabYabZacaacaacbabnaaaaafaahaafaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdabdabdabdabdaaaaaaaaaaccaaaaaaaaaabdabdabeabeabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaafaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdaceabgacfaaHacgaaiachaasaciabRacjackaclabRacmacnacoabRacpaaiacqacqacqacqacqacqacqacqacqacrabDacsabCaboactacuacvacaacwabnaaaaafacxacyacxaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaafaafaafaaaaaaaccaafaafaaaaafaafaaaaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaafaczaafabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaafaaHacAacBacCaaHacDaaiacEaasacFabRacGackacFabRacHacnacFabRacIaaiacJacKacLacLafQacNacOacPacqacQabDacsabCaboacRacSacTacaacUabnaafaafacxacVacxaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaafacWacWacWacWacWaafacXaafacWacWacWacWacWaafabdaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaafaczaafabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaafaaHacAacBacCaaHacDaaiacEaasacFabRacGackacFabRacHacnacFabRacIaaiacJacKacLacLafQacNadRacPacqacQabDacsabCaboacRacSacTacaacUabnaafaafacxacVacxaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaafacWacWacWacWacWaafacXaafacWacWacWacWacWaafabdaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeabeabeabdabdaaaaaaaaaacYaaaaaaaaaabdabdabeabeabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaHacdacZaaHadaaaiadbadcaddabRadbadeaddabRadbadfaddabRabRaaiacJadgadhadhadhadhadiadjacqadkabDacsabCabnadladmadnadoadpabnabmabladqacyacxacxadraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaafadsadtadtadtadtaduadvadwadxadxadxadxadyaafabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaafaafaaaaaaaaaacYaafaafaaaaafaafaaaaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadzadAadBadCadDadEadFadGadDadHadIadJadDadKadLadMadNaaiadOadPadQadRadSadTadUadVadWabDadXadYablabnadZabnaeaabnaebabnaecaedablaeeaefaegaegaehaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaafaeiaeiaeiaeiaeiaafadvaafaeiaeiaeiaeiaeiaafabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaafaafaaaaaaaaaacYaafaafaaaaafaafaaaaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadzadAadBadCadDadEadFadGadDadHadIadJadDadKadLadMadNaaiadOadPacOadQadSadTadUadVadWabDadXadYablabnadZabnaeaabnaebabnaecaedablaeeaefaegaegaehaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaafaeiaeiaeiaeiaeiaafadvaafaeiaeiaeiaeiaeiaafabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaafaejaejaejaejaejaafaekaafaejaejaejaejaejaafabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaelaemaenaeoaepaeqaeoaeraepaeoaeoaeoaepaesaetaeuaevaaiaewaexaeyaezaeAaeBaeCaeDacqaeEaeFaeGablaeHaeIaeJaeKaeLaeMaeJaeNaeOaePaeQaeRaeSaeTaeUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabeaaaaaaaaaaafaaaaaaaafadvaaaaaaaaaaafaaaaaaaaaabeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaafaeVaeWaeWaeWaeWaeXaeYaeZafaafaafaafaafbaafabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcaaiaaiaaiaaiafdafeaffafgafhafiafjafkafkafkabRaflafmaaiafnafoacMafqafrafsaftafuacqafvafwafxablafyafzafAafBafCafDafEafFafGablafHafIaegaegafJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaafacWacWacWacWacWaafadvaafacWacWacWacWacWaafabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaafafKafKafKafKafKaafaeYaafafKafKafKafKafKaafabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaiaaiaddafLadbafMafMafMafMafMafMafMafNafOafPafpafRafSafTafUafVafWafXafPafYafZagaagbagcagdafAageafCagfaggaghabladqacxacxacxadraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdaafadsadtadtadtadtaduadvadwadxadxadxadxadyaafabdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -6585,10 +6585,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafazFaquavYatMavYavYavYavYavYavYatMavYavYaquaBYaxmaKwaNfaNgaMeaMeaMfarxaNhaKBaxmaMiaKDaKEaNiaNjaNjaNjaNkaNlaNmaNjaNnaNjaNjaNjaNoaNjaNpaNjaNjaNjaNqaNraNsaNtaNtaNuaNvaNwaNxaNyaKEaNzaKDaGSaIsaNAaIsaNBaNBaNBaNBaNBaNBaNBaNBaNCaNBaNBaNBaNBaNBaNBaNBaNBaNBaNBaNBaNDaNBaNBaNBaNBaNBaNBaNBaNBaIsaIsaIsaBraNEaNEaNEaNEaNEaNFaNGaJNaLvaNHaIEaNIaNJaNKaIEaNLaIJaNMaNNaNOaLEaNPaIJaHqaNQaNRaNSaNTaNSaNUaNVaNWaHqaHraEyaNXaNXaNYaNZaOaaOaaObaEyaOcaOdaOeaBRaOfaOgaOhaECaECaOiaOjaBRaOkaBRaOlaOmaOnaOnaOoaLZaLZaLZaLZaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarxavYayxavYaOpaOqaOraOsavYayxavYaOtaOuaOvaxmaKwaOwaOwaKyaOwaKzarxaOxaKBaxmaOyaOyaOyaOzaOyaOAaOAaOAaOAaOAaOBaOCaOAaODaOAaOAaOAaOEaOFaOGaOFaOHaOIaOJaKEaKEaOKaOLaOMaONaKHaKEaNzaOOaOOaIsaIsaItaIoaIoaIoaIoaIoaIoaIoaIoaOPaOQaORaOSaORaORaORaOTaORaOUaORaOVaOPaIoaIoaIoaIoaIoaIoaIoaIoaIraIsaIsaIEaOWaOXaOYaOYaOYaOYaOYaJNaOZaOYaIEaPaaPbaPcaIJaIJaIJaPdaPeaIJaIJaIJaIJaHqaNSaPfaPgaPgaPgaPhaPiaNSaHqaHraEyaPjaHtaNYaNZaHtaHtaPkaEyaPlaPmaPnaBRaECaPoaPpaPqaPqaPraPsaPtaPuaBRaPvaPwaOnaPxaOnaPyaPzaPzaPyaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafavYaPAaxmavZaOvaxmaxmaPBavZaxmaPAaOvaxmaxmaxmaPCaPDaPDaPDaPDaPDaPDaPDaPEaxmaOyaPFaOyaPGaOAaPHaPIaPJaPKaPLaPIaPMaPNaPOaPPaPQaPRaOEaPSaPTaPUaOHaPVaOJaOJaPWaOJaOJaOOaPXaPYaPZaQaaOOaOOaQbaIsaItaIoaaaaaaaaaaaaaaaaaaaaaaOPaQcaQdaQeaQfaQgaQhaQiaQjaQkaQlaQmaOPaaaaaaaaaaaaaaaaaaaaaaIoaIraIsaQnaIEaQoaOYaOYaOYaOYaOYaQqaJNaOZaQraQsaJNaQtaQuaIJaQvaQwaQxaQyaQzaQAaQBaQCaIJaNSaQDaQEaQEaQEaQFaQGaNSaHqaQHaEyaQIaQIaNYaNZaQJaQJaQKaEyaEyaQLaEyaBRaQMaOgaOhaQNaQNaOiaOjaBRaBRaBRaLZaQOaQPaQQaLZaLZaLZaLZaQRaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaavYaQSaQTaQTaQTaQTaQTaQTaQTaQTaQSaQTaQUaxmaxmaMiaxmaQVaQWaxmaQXaQYaxmaQZaRaaOyaRbaOyaPGaOAaRcaPIaRdaPIaPIaPIaPMaReaPIaPIaPIaPRaOEaRfaPTaPTaOHaPVaOJaRgaRhaRhaRiaOOaRjaRkaRlaRmaRnaRoaIsaIsaItaIoaaaaaaaaaaaaaOPaOPaOPaOPaRpaRqaRraRsaRtaRuaRvaRwaRxaRyaRzaOPaOPaOPaOPaaaaaaaaaaaaaIoaIraIsaIsaRAaOYaRCaRDaREaREaRFaRGaRHaRIaRJaRKaRLaRMaRNaROaRPaRPaRQaRRaRSaRSaRTaRPaRUaRVaRWaRXaRYaRZaSaaQGaNSaHqaHraEyaHtaHtaNYaNZaHtaHtaHtaSbaScaHtaSdaBRaSeaSfaSgaQNaQNaShaSiaSjaBRaSkaSlaPwaOnaSmaOnaSnaPzaPzaSoaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaavYaQSaQTaQTaQTaQTaQTaQTaQTaQTaQSaQTaQUaxmaxmaMiaxmaQVaQWaxmaQXaQYaxmaQZaRaaOyaRbaOyaPGaOAaRcaPIaRdaPIaPIaPIaPMaReaPIaPIaPIaPRaOEaRfaPTaPTaOHaPVaOJaRgaRhaRhaRiaOOaRjaRkaRlaRmaRnaRoaIsaIsaItaIoaaaaaaaaaaaaaOPaOPaOPaOPaRpaRqaRraRsaRtaRuaRvaRwaRxaRyaRzaOPaOPaOPaOPaaaaaaaaaaaaaIoaIraIsaIsaRAaOYaRCaRDaREaREaRFaRGaRHaRIaRJaRKaRLaRMaRNaROaRPaRPaHGaRRaRSaRSaRTaRPaRUaRVaRWaRXaRYaRZaSaaQGaNSaHqaHraEyaHtaHtaNYaNZaHtaHtaHtaSbaScaHtaSdaBRaSeaSfaSgaQNaQNaShaSiaSjaBRaSkaSlaPwaOnaSmaOnaSnaPzaPzaSoaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaquaquavYavYavYavYavYavYavYavYaquaquarxaMiaSpaSqaSqaSraSqaSqaSqaSsaSqaSqaSqaOyaRbaStaSuaOAaSvaPIaSwaSxaSyaSzaSAaSxaPIaPIaPIaSBaOEaSCaSDaSEaOHaPVaOJaSFaSGaSHaSIaOOaSJaSKaSLaSMaSNaRoaIsaIsaItaIoaIoaIwaSOaOPaOPaSPaSQaSRaSSaSTaSUaSVaSWaSUaSXaSUaSUaSYaSZaTaaTbaTcaOPaOPaSOaIwaIoaIoaIraIsaIsaIEaTdaJNaOYaOYaOYaOYaTfaOYaTgaThaTiaTjaTkaTlaTmaTnaToaTpaTqaTraTsaTtaTnaTuaTvaTwaTxaTyaTzaTxaTAaTBaHqaHraEyaTCaTCaNYaNZaTDaHtaHtaTEaHtaTFaTGaBRaTHaTIaTJaQNaQNaTKaTLaECaBRaTMaOnaPwaOnaSmaTNaLZaLZaLZaLZaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTOaTOaTOaTOaTOaTOaTOaTOaTOaTOaTOaTOavYayyaxnaTPaSqaTQaTRaTSaTTaTSaTUaTQaTSaSqaRbaRbaTVaTWaOAaTXaPIaTYaTZaUaaUbaUcaSxaPIaPIaPIaPRaOEaOEaOEaOEaOHaPVaOJaOJaOJaOJaOJaOOaUdaRlaRlaRlaRlaRoaIsaIsaItaIuaIuaUeaUfaUgaOPaUhaUiaUjaUkaUlaUkaUmaUnaUoaUpaUqaUraUsaUqaUtaUuaUvaOPaUwaUfaUxaUyaIuaIraIsaIsaRAaOYaJNaQpaOYaUzaOYaQpaOYaOZaQraUAaOYaOYaOYaUBaUCaUDaUEaUFaUGaUHaUIaUJaIJaUKaULaUMaQEaUNaQEaUOaUPaHqaUQaEyaEyaEyaNYaNZaURaUSaHtaUTaUUaKfaUVaBRaECaUWaSgaQNaQNaShaUXaUYaBRaUZaOnaPwaVaaVbaVcaLZaaaaafaaaaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTOaTOaTOaTOaTOaTOaTOaTOaTOaTOaTOaTOaVdavYavYaBYaVeaVfaVgaVhaViaVjaVkaVlaTQaTSaSqaVnaYDaVoaOyaOAaVpaVqaVraVsaVraVtaVuaVtaVtaVtaVvaVwaOAaVxaVyaVzaVAaVBaVCaVDaVEaOyaVFaOOaVGaVHaVIaVJaVJaRoaIsaIsaIsaIsaIsaVKaVLaVMaVNaVOaVPaVQaVRaVSaVTaVUaVVaVWaVXaVYaVZaWaaWbaVQaWcaWdaWeaWfaWgaWhaWiaWjaWkaIsaIsaIEaWlaWmaWnaWoaOYaWpaWqaWoaOZaQraWraWraWsaWtaIJaUCaUCaUCaWuaUCaUCaUIaWvaIJaNSaULaQEaQEaUNaQEaWwaNSaHqaWxaWyaWzaWAaWBaWCaWDaWDaWDaWDaWDaWDaWEaWFaWGaWGaWGaWGaWGaWHaWIaWJaWFaWKaWLaWMaWNaOnaWOaLZaafaafaaaaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTOaTOaTOaTOaTOaTOaTOaTOaTOaTOaTOaTOaVdavYavYaBYaVeaVfaVgaVhaViaVjaVkaVlaTQaTSaSqaVnaYDaVoaOyaOAaVpaVqaVraVsaVraVtaVuaVtaVtaVtaVvaVwaOAaVxaVyaVzaVAaVBaVCaVDaVEaOyaVFaOOaVGaVHaVIaVJaVJaRoaIsaIsaIsaIsaIsaVKaVLaVMaVNaVOaVPaVQaVRaVSaVTaVUaVVaVWaVXaVYaVZaWaaWbaVQaWcaWdaWeaWfaWgaWhaWiaWjaWkaIsaIsaIEaWlaWmaWnaWoaOYaWpaWqaWoaOZaQraWraWraWsaWtaIJaUCaUCaUCaMaaUCaUCaUIaWvaIJaNSaULaQEaQEaUNaQEaWwaNSaHqaWxaWyaWzaWAaWBaWCaWDaWDaWDaWDaWDaWDaWEaWFaWGaWGaWGaWGaWGaWHaWIaWJaWFaWKaWLaWMaWNaOnaWOaLZaafaafaaaaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTOaTOaTOaTOaTOaTOaTOaTOaTOaTOaTOaTOaWPatMaWPaxmaxmaSqaWQaWRaWSaWSaWSaWTaWUaWVaSqaWWaRbaVoaWXaWXaWXaWYaWZaWXaXaaXbaXcaXdaXeaXeaXfaXgaOAaXhaXiaXjaXkaXlaXmaXmaXnaXoaXoaXpaXpaXpaXpaXpaXqaOOaIsaIsaXraXsaXtaXuaXvaXwaOPaXxaXyaXzaXAaXBaXCaXCaXDaXEaXFaXGaXHaXIaXJaXzaXKaXxaOPaXwaXvaXLaXMaXsaXNaIsaIsaRAaOYaXOaTeaOYaOYaOYaTeaOYaOZaOYaQraQraOYaOYaXPaXQaXRaUCaUCaUCaUCaXSaXTaIJaXUaXVaQEaXWaXXaXYaXVaXZaHqaYaaYbaYbaYcaYdaYeaYfaYgaYhaYfaYfaYfaYiaYjaYkaYlaYlaYlaYlaYlaYmaYnaYjaYoaYpaYqaYraOnaYsaLZaaaaafaaaaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTOaTOaTOaTOaTOaTOaTOaTOaTOaTOaTOaTOavYavYavYaBYaxmaYtaTQaYuaWSaWSaWSaYvaYwaTQaSqaYxaYyaVoaWXaYzaYAaYBaYCaWXaYFaYEbeSaOAaYGaYHaYIaSwaOAaYJaYKaYLaYLaYLaYLaYMaYLaYLaYNaYOaYOaYOaYPaYOaYQaYRaKWaKWaYSaYTaYTaYTaYTaYTaYTaYUaYVaYWaYXaXDaYYaYZaYZaZaaZbaYZaYYaXFaZcaZdaZeaZfaZdaZdaZdaZdaZdaZdaZgaKWaKWaIEaZhaZiaZjaZkaOYaOYaOYaZlaZmaZnaOYaZoaZpaZqaIJaIJaIJaZraZsaZsaZsaIJaIJaIJaZtaQEaQEaMSaZuaZvaZwaMSaHqaZxaYbaZyaEyaZzaZAaZBaZCaZDaZEaTEaUSaZFaBRaZGaECaZHaQNaQNaZHaECaZIaBRaZJaZKaZLaSmaOnaOoaLZaLZaLZaLZaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTOaTOaTOaTOaTOaTOaTOaTOaTOaTOaTOaTOavYaZMaOvaZNaSqaTSaZOaTSaTQaZPaZQaZRaTSaSqaZSaZTaZUaWXaWXaWXaZVaZWaWXaZXaZYaZZaOAaYGaYHaYIaSwaOAaYJaYKaYLbaababbabbabbacaYLbadbaebafbagaYRaYRaYRaYRaIsaIsbahbaibajbakbalbambanbaobapbaqbarbasaYZaYZbatbaubataYZaYZbavbawbaxbaybazbaAbaBbaCbaDbaEaZdaXNaIsaIsaIEaIEaIEaIEaIEbaFaRAbaFbaGbaHaIEaIEaIEaIEaIEbaIbaJbaJbaJbaJbaJbaJbaKbaJbaIaMSbaLbaLaMSbaMaYbaYbaYbbaIaZxaYbaZyaEyaEyaEybaNbaObaNaEybaNaEyaEyaBRaBRbaPbaPbaPbaPbaPbaPaBRaBRbaQaOnbaRaSmaOnaOnaSoaPzaPzaSoaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaGsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/_maps/map_files/generic/z5.dmm b/_maps/map_files/generic/z5.dmm
index 08e39a66c62..b613f4f8a90 100644
--- a/_maps/map_files/generic/z5.dmm
+++ b/_maps/map_files/generic/z5.dmm
@@ -2,10 +2,11 @@
"ab" = (/turf/simulated/mineral,/area/mine/unexplored)
"ac" = (/turf/space,/area/syndicate_station/mining)
"ad" = (/turf/simulated/mineral/random,/area/mine/unexplored)
-"ae" = (/turf/simulated/mineral/random/high_chance,/area/mine/unexplored)
-"af" = (/turf/simulated/mineral,/area/mine/explored)
-"ag" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"ah" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned)
+"ae" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/mineral/random,/area/mine/unexplored)
+"af" = (/turf/simulated/mineral/random/high_chance,/area/mine/unexplored)
+"ag" = (/turf/simulated/mineral,/area/mine/explored)
+"ah" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"ai" = (/obj/machinery/door/airlock/external,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned)
"aj" = (/turf/simulated/mineral/random/low_chance,/area/mine/explored)
"ak" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"al" = (/turf/simulated/floor/plasteel/airless,/area/mine/abandoned)
@@ -112,601 +113,604 @@
"ci" = (/obj/effect/decal/remains/xeno,/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned)
"cj" = (/obj/structure/table,/obj/item/weapon/shovel,/turf/simulated/floor/plasteel,/area/mine/north_outpost)
"ck" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plasteel,/area/mine/north_outpost)
-"cl" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/explored)
-"cm" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/mine/north_outpost)
-"cn" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel,/area/mine/north_outpost)
-"co" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "Mining North Outpost APC"; pixel_x = 26; pixel_y = 0},/obj/machinery/conveyor_switch{id = "mining_north"},/obj/machinery/camera{c_tag = "North Outpost"; dir = 8; network = list("MINE")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/north_outpost)
-"cp" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/north_outpost)
-"cq" = (/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_north"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plasteel,/area/mine/north_outpost)
-"cr" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/mine/north_outpost)
-"cs" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/north_outpost)
-"ct" = (/turf/simulated/floor/plasteel{icon_state = "damaged3"},/area/mine/abandoned)
-"cu" = (/obj/structure/ore_box,/turf/simulated/floor/plating/asteroid/airless,/area/mine/explored)
-"cv" = (/obj/structure/table,/obj/item/weapon/storage/backpack/satchel,/obj/item/clothing/glasses/meson,/obj/machinery/light/small{dir = 8},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel,/area/mine/north_outpost)
-"cw" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel,/area/mine/north_outpost)
-"cx" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel,/area/mine/north_outpost)
-"cy" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/door/airlock/glass_mining{name = "Break Room"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/north_outpost)
-"cz" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/simulated/floor/plasteel,/area/mine/north_outpost)
-"cA" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/north_outpost)
-"cB" = (/obj/machinery/door/window/northleft{dir = 8; name = "Pneumatic Tube Access"},/obj/machinery/disposal/deliveryChute{dir = 8; pixel_x = 8; pixel_y = 0},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/north_outpost)
-"cC" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/north_outpost)
-"cD" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/mine/explored)
-"cE" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/north_outpost)
-"cF" = (/obj/machinery/conveyor_switch{id = "mining_north"},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/north_outpost)
-"cG" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/north_outpost)
-"cH" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/xenos,/obj/item/clothing/head/xenos,/turf/simulated/floor/plasteel{icon_state = "damaged2"},/area/mine/abandoned)
-"cI" = (/obj/structure/table,/obj/item/stack/sheet/mineral/sandstone{amount = 30},/turf/simulated/floor/plasteel{icon_state = "damaged3"},/area/mine/abandoned)
-"cJ" = (/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"},/area/mine/abandoned)
-"cK" = (/obj/structure/alien/resin/wall,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"cL" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned)
-"cM" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/plasteel,/area/mine/north_outpost)
-"cN" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel,/area/mine/north_outpost)
-"cO" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/mine/north_outpost)
-"cP" = (/obj/structure/rack,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/north_outpost)
-"cQ" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/mine/north_outpost)
-"cR" = (/obj/structure/alien/weeds/node,/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"},/area/mine/abandoned)
-"cS" = (/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless{icon_state = "damaged4"},/area/mine/abandoned)
-"cT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"cU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"cV" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned)
-"cW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"cX" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel,/area/mine/north_outpost)
-"cY" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel,/area/mine/north_outpost)
-"cZ" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/plasteel,/area/mine/north_outpost)
-"da" = (/obj/effect/decal/remains/human,/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned)
-"db" = (/obj/structure/alien/weeds/node,/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned)
-"dc" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned)
-"dd" = (/obj/structure/rack,/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned)
-"de" = (/turf/simulated/floor/plating/asteroid/airless,/area/mine/unexplored)
-"df" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/laborcamp)
-"dg" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/laborcamp)
-"dh" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/laborcamp/security)
-"di" = (/obj/machinery/door/airlock/external{name = "Mining North Outpost Airlock"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/north_outpost)
-"dj" = (/turf/simulated/mineral/random/labormineral,/area/mine/unexplored)
-"dk" = (/obj/item/weapon/rack_parts,/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned)
-"dl" = (/obj/structure/girder/displaced,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned)
-"dm" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/laborcamp/security)
-"dn" = (/obj/structure/grille,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/laborcamp/security)
-"do" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/explored)
-"dp" = (/obj/structure/lattice,/obj/structure/window/reinforced,/turf/space,/area/mine/explored)
-"dq" = (/obj/structure/lattice,/obj/structure/window/reinforced,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/space,/area/mine/north_outpost)
-"dr" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost)
-"ds" = (/turf/simulated/floor/mech_bay_recharge_floor/airless,/area/mine/north_outpost)
-"dt" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost)
-"du" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel,/area/mine/north_outpost)
-"dv" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel,/area/mine/north_outpost)
-"dw" = (/turf/simulated/wall/r_wall,/area/mine/laborcamp)
-"dx" = (/obj/structure/alien/resin/wall,/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"},/area/mine/abandoned)
-"dy" = (/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"},/area/mine/abandoned)
-"dz" = (/obj/structure/girder,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned)
-"dA" = (/obj/machinery/door/airlock/external{name = "Mining Bridge"; req_access_txt = "54"},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost)
-"dB" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel/airless,/area/mine/explored)
-"dC" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/north_outpost)
-"dD" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/north_outpost)
-"dE" = (/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/north_outpost)
-"dF" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/north_outpost)
-"dG" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/machinery/atmospherics/pipe/simple{dir = 9},/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"dH" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/machinery/atmospherics/pipe/simple{dir = 9},/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/obj/machinery/camera{c_tag = "Labor Camp Storage"; dir = 8; network = list("Labor")},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"dI" = (/turf/simulated/mineral/random/labormineral,/area/mine/explored)
-"dJ" = (/obj/item/weapon/storage/toolbox/syndicate,/obj/structure/alien/weeds/node,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
-"dK" = (/obj/effect/decal/remains/xeno,/obj/item/clothing/suit/space/syndicate/black/red,/obj/item/clothing/head/helmet/space/syndicate/black/red,/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless{icon_state = "damaged4"},/area/mine/abandoned)
-"dL" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/space,/area/mine/north_outpost)
-"dM" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/turf/space,/area/mine/explored)
-"dN" = (/obj/machinery/door/airlock/external{name = "Mining North Outpost Airlock"; req_access_txt = "54"},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost)
-"dO" = (/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/explored)
-"dP" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "white"; temperature = 273.15},/area/mine/laborcamp)
-"dQ" = (/obj/structure/table,/obj/item/device/healthanalyzer,/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/plasteel{icon_state = "white"; temperature = 273.15},/area/mine/laborcamp)
-"dR" = (/obj/structure/sign/bluecross_2{pixel_y = 32},/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "white"; temperature = 273.15},/area/mine/laborcamp)
-"dS" = (/obj/machinery/camera{c_tag = "Labor Camp Medical"; dir = 8; network = list("Labor")},/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor/plasteel{icon_state = "white"; temperature = 273.15},/area/mine/laborcamp)
-"dT" = (/turf/simulated/wall,/area/mine/laborcamp)
-"dU" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"dV" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"dW" = (/turf/simulated/wall,/area/mine/explored)
-"dX" = (/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/explored)
-"dY" = (/obj/machinery/door/airlock/external{name = "External Airlock"; req_access_txt = "0"},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned)
-"dZ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/weapon/shard{icon_state = "small"},/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"ea" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 10},/area/mine/explored)
-"eb" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored)
-"ec" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/explored)
-"ed" = (/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/north_outpost)
-"ee" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored)
-"ef" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 5},/area/mine/explored)
-"eg" = (/turf/space,/area)
-"eh" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp)
-"ei" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp)
-"ej" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=1-Storage"; location = "Sleeper"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp)
-"ek" = (/obj/machinery/light/small{dir = 4},/obj/structure/stool/bed/roller,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp)
-"el" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/closet/crate/internals,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"em" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"en" = (/obj/machinery/bot/secbot/beepsky{desc = "Powered by tears and swet of laborer."; name = "Prison Ofitser"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=2-NMine"; location = "1-Storage"},/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp)
-"eo" = (/obj/structure/plasticflaps/mining,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp)
-"ep" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=3-SMine"; location = "2-NMine"},/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp)
-"eq" = (/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/explored)
-"er" = (/obj/effect/decal/remains/human,/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/explored)
-"es" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored)
-"et" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/laborcamp/security)
-"eu" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/mine/laborcamp)
-"ev" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/living_quarters)
-"ew" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/wall,/area/mine/laborcamp)
-"ex" = (/obj/machinery/door/airlock{name = "Labor Camp Storage"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"ey" = (/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/explored)
-"ez" = (/turf/simulated/wall/r_wall,/area/mine/explored)
-"eA" = (/obj/structure/girder/reinforced,/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/explored)
-"eB" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/abandoned)
-"eC" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/abandoned)
-"eD" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
-"eE" = (/obj/structure/table,/obj/item/trash/plate,/obj/item/weapon/kitchen/utensil/fork,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"eF" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"eG" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"eH" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"eI" = (/obj/machinery/atmospherics/pipe/simple,/obj/item/device/radio/intercom{desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; pixel_x = 0; pixel_y = 24; prison_radio = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"eJ" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"eK" = (/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored)
-"eL" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/stack/rods,/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned)
-"eM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned)
-"eN" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"eO" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=7-Sleeper"; location = "6-Vending"},/mob/living/simple_animal/mouse,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"eP" = (/obj/machinery/door/airlock{name = "Vending"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"eQ" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"eR" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"eS" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"eT" = (/obj/machinery/door/poddoor/preopen{id = "Labor"; name = "labor camp blast door"},/obj/machinery/door/airlock{name = "Labor Camp External Access"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp)
-"eU" = (/obj/structure/ore_box,/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/explored)
-"eV" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 10},/area/mine/unexplored)
-"eW" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/unexplored)
-"eX" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/unexplored)
-"eY" = (/turf/space,/area/shuttle/laborcamp/outpost)
-"eZ" = (/obj/machinery/vending/sustenance,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"fa" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"fb" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/wall,/area/mine/laborcamp)
-"fc" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"fd" = (/obj/machinery/flasher{id = "Labor"; pixel_x = 0; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/simulated/wall,/area/mine/laborcamp)
-"fe" = (/obj/machinery/conveyor_switch/oneway{id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"ff" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; temperature = 273.15},/area/mine/laborcamp)
-"fg" = (/turf/simulated/floor/plasteel{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; temperature = 273.15},/area/mine/explored)
-"fh" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/unexplored)
-"fi" = (/obj/machinery/light_switch{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"fj" = (/obj/machinery/camera{c_tag = "Labor Camp Central"; network = list("Labor")},/obj/machinery/atmospherics/pipe/manifold{dir = 8},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"fk" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 9},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"fl" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/west_outpost)
-"fm" = (/obj/machinery/conveyor{dir = 2; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"fn" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp)
-"fo" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/turf/simulated/floor/plasteel{tag = "icon-asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/laborcamp)
-"fp" = (/obj/machinery/mineral/unloading_machine{dir = 1; input_dir = 4; output_dir = 8},/turf/simulated/floor/plasteel{tag = "icon-asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/laborcamp)
-"fq" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel{tag = "icon-asteroidwarning (WEST)"; icon_state = "asteroidwarning"; dir = 8; temperature = 273.15},/area/mine/explored)
-"fr" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/explored)
-"fs" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
-"ft" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
-"fu" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Shuttle Security Airlock"; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"fv" = (/obj/machinery/light/small{dir = 1},/obj/machinery/door_control{id = "Labor"; name = "Labor Camp Lockdown"; pixel_x = 0; pixel_y = 28; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"fw" = (/obj/machinery/door/poddoor/preopen{id = "Labor"; name = "labor camp blast door"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"fx" = (/turf/simulated/floor/plasteel,/area/mine/laborcamp)
-"fy" = (/obj/machinery/mineral/processing_unit_console{machinedir = 6},/turf/simulated/wall,/area/mine/laborcamp)
-"fz" = (/obj/structure/plasticflaps,/obj/machinery/conveyor{dir = 2; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"fA" = (/obj/machinery/camera{c_tag = "Labor Camp External"; dir = 4; network = list("Labor")},/turf/simulated/floor/plasteel{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1; temperature = 273.15},/area/mine/explored)
-"fB" = (/turf/simulated/floor/plasteel{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1; temperature = 273.15},/area/mine/explored)
-"fC" = (/obj/machinery/conveyor_switch/oneway{id = "gulag"},/turf/simulated/floor/plasteel{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1; temperature = 273.15},/area/mine/explored)
-"fD" = (/obj/effect/decal/cleanable/blood/old,/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/explored)
-"fE" = (/obj/machinery/mineral/stacking_unit_console{machinedir = 2},/turf/simulated/wall,/area/mine/laborcamp)
-"fF" = (/obj/machinery/mineral/processing_unit{dir = 1; output_dir = 2},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"fG" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/laborcamp)
-"fH" = (/obj/machinery/computer/shuttle/labor/one_way,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"fI" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=6-Vending"; location = "5-Central"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"fJ" = (/obj/machinery/mineral/stacking_machine{dir = 1; input_dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"fK" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"fL" = (/obj/machinery/conveyor{dir = 10; icon_state = "conveyor0"; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
-"fM" = (/obj/structure/closet/crate,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored)
-"fN" = (/obj/item/stack/sheet/metal{amount = 5},/obj/structure/closet/crate,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored)
-"fO" = (/turf/simulated/wall/r_wall,/area/mine/laborcamp/security)
-"fP" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp/security)
-"fQ" = (/obj/machinery/camera{c_tag = "Labor Camp Security Hallway"; dir = 8; network = list("Labor"); pixel_x = 0; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security)
-"fR" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/wall,/area/mine/laborcamp/security)
-"fS" = (/obj/structure/plasticflaps/mining,/turf/simulated/wall,/area/mine/laborcamp/security)
-"fT" = (/turf/simulated/wall,/area/mine/laborcamp/security)
-"fU" = (/obj/structure/girder,/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/laborcamp/security)
-"fV" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Shuttle Prisoner Airlock"; req_access_txt = "0"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
-"fW" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Shuttle Prisoner Airlock"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp/security)
-"fX" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp/security)
-"fY" = (/obj/machinery/atmospherics/pipe/manifold,/obj/machinery/door/airlock/glass_security{name = "Labor Camp Backroom"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
-"fZ" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/mine/laborcamp/security)
-"ga" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
-"gb" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/mine/laborcamp/security)
-"gc" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Labor Camp APC"; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple{dir = 10},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=5-Central"; location = "4-Maint"},/turf/simulated/floor/plating,/area/mine/laborcamp)
-"gd" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/mine/laborcamp/security)
-"ge" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp External Access"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
-"gf" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Monitoring"; req_access_txt = "2"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
-"gg" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/laborcamp/security)
-"gh" = (/obj/machinery/door/airlock/maintenance{name = "Labor Camp Maintenance"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
-"gi" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored)
-"gj" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
-"gk" = (/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
-"gl" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
-"gm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
-"gn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 4; name = "Labor Camp Security APC"; pixel_x = 24; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple,/obj/machinery/camera{c_tag = "Labor Camp Monitoring"; network = list("Labor")},/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
-"go" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/wall,/area/mine/laborcamp/security)
-"gp" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
-"gq" = (/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
-"gr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/laborcamp/security)
-"gs" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
-"gt" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
-"gu" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=4-Maint"; location = "3-SMine"},/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp)
-"gv" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/closet/crate,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored)
-"gw" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/closet/crate,/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/explored)
-"gx" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
-"gy" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall/r_wall,/area/mine/laborcamp/security)
-"gz" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
-"gA" = (/obj/structure/stool/bed/chair/office/dark,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
-"gB" = (/obj/machinery/door_control{id = "Labor"; name = "Labor Camp Lockdown"; pixel_x = 28; pixel_y = 7; req_access_txt = "2"},/obj/machinery/flasher_button{id = "Labor"; pixel_x = 26; pixel_y = -3},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
-"gC" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
-"gD" = (/turf/simulated/floor/plating,/area/mine/laborcamp/security)
-"gE" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/obj/machinery/meter,/turf/simulated/floor/plating,/area/mine/laborcamp/security)
-"gF" = (/obj/machinery/atmospherics/unary/tank/air{dir = 8},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
-"gG" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/west_outpost)
-"gH" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
-"gI" = (/obj/machinery/computer/secure_data,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
-"gJ" = (/obj/machinery/computer/security{name = "Labor Camp Monitoring"; network = list("Labor")},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
-"gK" = (/obj/machinery/computer/prisoner,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
-"gL" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
-"gM" = (/obj/machinery/space_heater,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
-"gN" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
-"gO" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/mine/laborcamp/security)
-"gP" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 5},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/mine/laborcamp/security)
-"gQ" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/eva)
-"gR" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/production)
-"gS" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/west_outpost)
-"gT" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/explored)
-"gU" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
-"gV" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
-"gW" = (/turf/simulated/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/explored)
-"gX" = (/obj/item/clothing/under/soviet,/obj/item/clothing/head/ushanka,/turf/simulated/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/explored)
-"gY" = (/obj/effect/decal/remains/human,/turf/simulated/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/explored)
-"gZ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/explored)
-"ha" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/explored)
-"hb" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/living_quarters)
-"hc" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/eva)
-"hd" = (/obj/machinery/door/airlock/external{name = "Mining Bridge"; req_access_txt = "54"},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost)
-"he" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/turf/space,/area/mine/explored)
-"hf" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless,/area/mine/explored)
-"hg" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/obj/machinery/light{dir = 1},/turf/space,/area/mine/west_outpost)
-"hh" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/turf/space,/area/mine/explored)
-"hi" = (/obj/structure/lattice,/obj/structure/window/reinforced,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/space,/area/mine/west_outpost)
-"hj" = (/obj/structure/lattice,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/space,/area/mine/explored)
-"hk" = (/turf/simulated/wall/r_wall,/area/mine/maintenance)
-"hl" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel/airless,/area/mine/explored)
-"hm" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel/airless,/area/mine/explored)
-"hn" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel/airless,/area/mine/explored)
-"ho" = (/turf/simulated/floor/bluegrid,/area/mine/maintenance)
-"hp" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Mining Communications APC"; pixel_x = 1; pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/mine/maintenance)
-"hq" = (/obj/machinery/telecomms/relay/preset/mining,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 1},/area/mine/maintenance)
-"hr" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/mine/maintenance)
-"hs" = (/obj/structure/grille,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/west_outpost)
-"ht" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/space,/area/mine/explored)
-"hu" = (/obj/structure/lattice,/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/space,/area/mine/explored)
-"hv" = (/obj/structure/lattice,/turf/space,/area/mine/explored)
-"hw" = (/turf/space,/area/mine/unexplored)
-"hx" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/bluegrid,/area/mine/maintenance)
-"hy" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple{dir = 6},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/mine/maintenance)
-"hz" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 9},/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor/bluegrid,/area/mine/maintenance)
-"hA" = (/obj/machinery/camera{c_tag = "Communications Relay"; dir = 8; network = list("MINE")},/turf/simulated/floor/bluegrid,/area/mine/maintenance)
-"hB" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
-"hC" = (/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris,/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
-"hD" = (/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
-"hE" = (/turf/simulated/wall,/area/mine/living_quarters)
-"hF" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Communications"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "vault"},/area/mine/maintenance)
-"hG" = (/obj/item/clothing/under/rank/miner,/obj/effect/decal/remains/human,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
-"hH" = (/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris,/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/explored)
-"hI" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/fancy/carpet,/area/mine/living_quarters)
-"hJ" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm1"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/fancy/carpet,/area/mine/living_quarters)
-"hK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"hL" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/obj/machinery/light,/turf/space,/area/mine/west_outpost)
-"hM" = (/obj/structure/table,/turf/simulated/floor/fancy/carpet,/area/mine/living_quarters)
-"hN" = (/turf/simulated/floor/fancy/carpet,/area/mine/living_quarters)
-"hO" = (/obj/machinery/door/airlock{id_tag = "miningdorm1"; name = "Room 1"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/mine/living_quarters)
-"hP" = (/obj/structure/disposalpipe/trunk,/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
-"hQ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"hR" = (/obj/structure/disposalpipe/segment,/turf/simulated/mineral/random,/area/mine/unexplored)
-"hS" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/fancy/carpet,/area/mine/living_quarters)
-"hT" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/living_quarters)
-"hU" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/west_outpost)
-"hV" = (/obj/machinery/door/airlock{id_tag = "miningdorm2"; name = "Room 2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/mine/living_quarters)
-"hW" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/production)
-"hX" = (/turf/space,/area/mine/explored)
-"hY" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost)
-"hZ" = (/turf/simulated/floor/mech_bay_recharge_floor/airless,/area/mine/west_outpost)
-"ia" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost)
-"ib" = (/obj/structure/disposalpipe/segment,/obj/structure/sign/deathsposal,/turf/simulated/wall,/area/mine/living_quarters)
-"ic" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/production)
-"id" = (/turf/simulated/wall,/area/mine/west_outpost)
-"ie" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/production)
-"ih" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/asteroid/airless,/area/mine/west_outpost)
-"ii" = (/obj/machinery/computer/arcade,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
-"ij" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
-"ik" = (/obj/machinery/vending/cigarette,/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
-"il" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
-"im" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm3"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/fancy/carpet,/area/mine/living_quarters)
-"iq" = (/obj/structure/table,/obj/item/weapon/pickaxe,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"ir" = (/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"is" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"iu" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost)
-"iv" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost)
-"iw" = (/obj/structure/rack,/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost)
-"ix" = (/obj/structure/rack,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost)
-"iy" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/trunk,/obj/machinery/door/window/northleft{dir = 2; name = "Pneumatic Tube Access"},/obj/machinery/disposal/deliveryChute{pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost)
-"iA" = (/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"iB" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/west_outpost)
-"iD" = (/obj/structure/table,/obj/machinery/microwave{pixel_y = 6},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
-"iE" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
-"iF" = (/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
-"iG" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
-"iH" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 31},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
-"iI" = (/obj/machinery/door/airlock{id_tag = "miningdorm3"; name = "Room 3"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/mine/living_quarters)
-"iJ" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"iK" = (/obj/machinery/recharge_station,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"iL" = (/obj/structure/closet/secure_closet/miner,/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"iM" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/eva)
-"iN" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/eva)
-"iQ" = (/turf/simulated/wall,/area/mine/eva)
-"iR" = (/obj/structure/table,/obj/item/weapon/shovel,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"iS" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"iU" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/west_outpost)
-"iV" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/west_outpost)
-"iW" = (/obj/machinery/door/airlock/external{name = "Mining West Outpost Airlock"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"iX" = (/obj/machinery/door/airlock/external{name = "Mining West Outpost Airlock"; req_access_txt = "54"},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost)
-"iY" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/explored)
-"iZ" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/beer,/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
-"ja" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
-"jb" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
-"jc" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
-"jd" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
-"je" = (/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"jf" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"jg" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/table,/obj/item/weapon/pickaxe,/turf/simulated/floor/plasteel,/area/mine/eva)
-"jh" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/suit_storage_unit/mining,/turf/simulated/floor/plasteel,/area/mine/eva)
-"ji" = (/obj/machinery/suit_storage_unit/mining,/turf/simulated/floor/plasteel,/area/mine/eva)
-"jj" = (/obj/machinery/light,/turf/simulated/floor/plating/asteroid/airless,/area/mine/explored)
-"jk" = (/obj/structure/table,/obj/item/weapon/storage/backpack/satchel,/obj/item/clothing/glasses/meson,/obj/machinery/light/small{dir = 8},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"jl" = (/obj/machinery/door/airlock/glass_mining{name = "Break Room"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"jm" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"jn" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"jo" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/west_outpost)
-"jp" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
-"jq" = (/obj/machinery/camera{c_tag = "Crew Area"; dir = 1; network = list("MINE")},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
-"jr" = (/obj/item/weapon/cigbutt,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
-"js" = (/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"jt" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"ju" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"jv" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"jw" = (/obj/machinery/mineral/equipment_vendor,/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"jx" = (/obj/machinery/camera{c_tag = "Storage Room"; dir = 1; network = list("MINE")},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"jy" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"jz" = (/turf/simulated/wall,/area/mine/production)
-"jA" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/mine/production)
-"jD" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/obj/machinery/camera{c_tag = "EVA"; dir = 4; network = list("MINE")},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/table,/obj/item/device/gps/mining,/obj/item/device/gps/mining,/obj/item/device/gps/mining,/obj/item/device/gps/mining,/turf/simulated/floor/plasteel,/area/mine/eva)
-"jE" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/eva)
-"jF" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel,/area/mine/eva)
-"jG" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plasteel,/area/mine/eva)
-"jH" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"jI" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"jK" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"jL" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"jM" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"jN" = (/obj/machinery/conveyor_switch{id = "mining_west"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"jQ" = (/obj/machinery/door/airlock/glass{name = "Crew Area"; req_access_txt = "48"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"jR" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/door/airlock/mining{name = "Mining Station Storage"; req_access_txt = "48"},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"jV" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/northleft{dir = 2; name = "Pneumatic Tube Access"},/obj/machinery/disposal/deliveryChute{pixel_y = 5},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production)
-"jW" = (/obj/structure/closet/crate,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production)
-"jX" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/obj/structure/closet/crate,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production)
-"jZ" = (/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 9},/turf/simulated/floor/plasteel,/area/mine/eva)
-"ka" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/eva)
-"kb" = (/turf/simulated/floor/plasteel,/area/mine/eva)
-"kc" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/plasteel,/area/mine/eva)
-"ke" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/eva)
-"kf" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva)
-"kh" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"ki" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"kj" = (/obj/machinery/power/apc{dir = 2; name = "Mining West Outpost APC"; pixel_x = 1; pixel_y = -23},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"kk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/camera{c_tag = "West Outpost"; dir = 1; network = list("MINE")},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"kl" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"km" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"kn" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"},/area/mine/west_outpost)
-"ko" = (/obj/machinery/mineral/unloading_machine{dir = 2; output_dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/west_outpost)
-"kp" = (/obj/machinery/conveyor{dir = 4; id = "mining_west"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/west_outpost)
-"kq" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal/deliveryChute{dir = 8},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/west_outpost)
-"ks" = (/obj/structure/toilet{dir = 4},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/mine/living_quarters)
-"kt" = (/obj/structure/sink{pixel_y = 30},/obj/machinery/light/small,/obj/structure/mirror{pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/mine/living_quarters)
-"ku" = (/obj/machinery/door/airlock{name = "Toilet"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/mine/living_quarters)
-"kv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"kw" = (/obj/machinery/power/apc{dir = 1; name = "Mining Station Port Wing APC"; pixel_x = 1; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"kx" = (/obj/machinery/camera{c_tag = "Crew Area Hallway"; network = list("MINE")},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"ky" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/mine/living_quarters)
-"kA" = (/obj/structure/window/reinforced,/obj/structure/lattice,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/space,/area/mine/living_quarters)
-"kB" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/living_quarters)
-"kC" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/production)
-"kF" = (/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/mine/production)
-"kG" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/production)
-"kH" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/production)
-"kI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/mine/production)
-"kJ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_mining{name = "Mining Station EVA"; req_access_txt = "54"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/eva)
-"kK" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/mine/eva)
-"kL" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/eva)
-"kM" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/eva)
-"kN" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva)
-"kO" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "54"},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/eva)
-"kP" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/wall,/area/mine/west_outpost)
-"kQ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/west_outpost)
-"kR" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "54"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/mine/west_outpost)
-"kS" = (/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_west"},/obj/structure/plasticflaps/mining,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
-"kT" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/mine/west_outpost)
-"kU" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"kV" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"kW" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"kX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"kY" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"kZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"la" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"lb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/living_quarters)
-"lc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"ld" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"le" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/production)
-"lf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/turf/simulated/floor/plasteel,/area/mine/production)
-"lg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/production)
-"lh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel,/area/mine/production)
-"li" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel,/area/mine/production)
-"lj" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production)
-"lk" = (/obj/machinery/power/apc{dir = 2; name = "Mining EVA APC"; pixel_x = 1; pixel_y = -23},/obj/structure/cable,/obj/structure/table,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/weapon/hand_labeler,/turf/simulated/floor/plasteel,/area/mine/eva)
-"ll" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/mine/eva)
-"lm" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/mine/eva)
-"ln" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor/plasteel,/area/mine/eva)
-"lo" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel,/area/mine/eva)
-"lp" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva)
-"lq" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/meter,/turf/simulated/floor/plating,/area/mine/west_outpost)
-"lr" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/mine/west_outpost)
-"ls" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/mine/west_outpost)
-"lt" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/item/weapon/storage/box/lights/bulbs,/turf/simulated/floor/plating,/area/mine/west_outpost)
-"lu" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/west_outpost)
-"lv" = (/obj/machinery/conveyor_switch{id = "mining_west"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/west_outpost)
-"lw" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"lx" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"ly" = (/obj/machinery/atmospherics/pipe/manifold,/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"lz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"lA" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"lB" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/light,/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"lC" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/mine/living_quarters)
-"lG" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/space,/area/mine/living_quarters)
-"lH" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/space,/area/mine/production)
-"lI" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/light{dir = 4},/turf/space,/area/mine/production)
-"lM" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/production)
-"lN" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/mine/production)
-"lO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel,/area/mine/production)
-"lP" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production)
-"lQ" = (/obj/machinery/camera{c_tag = "Production Line External"; dir = 4; network = list("MINE")},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/production)
-"lR" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/production)
-"lS" = (/obj/machinery/conveyor_switch{id = "mining_external"},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/production)
-"lT" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/production)
-"lU" = (/obj/machinery/atmospherics/unary/tank/air{dir = 1; initialize_directions = 0; level = 1},/turf/simulated/floor/plating,/area/mine/west_outpost)
-"lV" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/mine/west_outpost)
-"lW" = (/obj/machinery/power/terminal{dir = 4},/obj/machinery/light/small,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/west_outpost)
-"lX" = (/obj/machinery/power/smes,/obj/structure/cable,/turf/simulated/floor/plating,/area/mine/west_outpost)
-"lZ" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/mine/living_quarters)
-"ma" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/living_quarters)
-"mb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "48"},/turf/simulated/floor/plating,/area/mine/living_quarters)
-"mc" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/wall,/area/mine/living_quarters)
-"md" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"mg" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/production)
-"mh" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/production)
-"mi" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production)
-"mj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock{name = "Closet"; req_access_txt = "0"},/turf/simulated/floor/plating,/area/mine/production)
-"mk" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/mine/production)
-"ml" = (/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/mine/production)
-"mm" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/mine/production)
-"mn" = (/obj/machinery/disposal/deliveryChute{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/mine/production)
-"mo" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/turf/simulated/floor/plating,/area/mine/production)
-"mp" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/mine/production)
-"mq" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/production)
-"mr" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/production)
-"ms" = (/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/mine/living_quarters)
-"mt" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/mine/living_quarters)
-"mu" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/mine/living_quarters)
-"mv" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/mine/living_quarters)
-"mw" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/mine/living_quarters)
-"mx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/mine/living_quarters)
-"my" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/mine/living_quarters)
-"mz" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plating,/area/mine/living_quarters)
-"mA" = (/turf/simulated/floor/plating,/area/mine/living_quarters)
-"mB" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/living_quarters)
-"mC" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/living_quarters)
-"mD" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
-"mE" = (/obj/structure/sign/xeno_warning_mining,/turf/simulated/wall,/area/mine/living_quarters)
-"mF" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/production)
-"mG" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/production)
-"mH" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production)
-"mI" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/production)
-"mJ" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "warnwhite"; dir = 1},/area/mine/living_quarters)
-"mK" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"},/area/mine/living_quarters)
-"mL" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/camera{c_tag = "Sleeper Room"; dir = 1; network = list("MINE")},/turf/simulated/floor/plasteel{icon_state = "white"; temperature = 273.15},/area/mine/living_quarters)
-"mM" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/mine/living_quarters)
-"mN" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
-"mO" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/obj/machinery/meter,/turf/simulated/floor/plating,/area/mine/living_quarters)
-"mP" = (/obj/machinery/atmospherics/unary/tank/air{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters)
-"mQ" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/living_quarters)
-"mR" = (/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/living_quarters)
-"mS" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/living_quarters)
-"mT" = (/turf/space,/area/shuttle/mining/outpost)
-"mU" = (/obj/machinery/power/apc{dir = 8; name = "Mining Station Starboard Wing APC"; pixel_x = -27; pixel_y = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/production)
-"mV" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/mine/production)
-"mW" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production)
-"mX" = (/obj/machinery/mineral/equipment_vendor,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production)
-"mY" = (/obj/machinery/mineral/mint{input_dir = 4},/turf/simulated/floor/plasteel,/area/mine/production)
-"mZ" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "loadingarea"},/area/mine/production)
-"na" = (/obj/structure/closet/crate,/obj/machinery/alarm{pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production)
-"nb" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/structure/table,/obj/item/weapon/paper{anchored = 0; info = "A hastily written note has been scribbled here...
Please use the ore redemption machine in the science wing for smelting. PLEASE!
--The Research Staff"; name = "URGENT!"},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production)
-"nd" = (/obj/machinery/conveyor{dir = 2; id = "mining_internal"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/mine/production)
-"ne" = (/obj/structure/cable,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/power/port_gen/pacman{anchored = 1},/turf/simulated/floor/plating,/area/mine/living_quarters)
-"nf" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/living_quarters)
-"ng" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/mine/living_quarters)
-"nh" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 5},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/mine/living_quarters)
-"ni" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "54"},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/living_quarters)
-"nj" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/production)
-"nl" = (/turf/simulated/floor/plasteel{icon_state = "loadingarea"},/area/mine/production)
-"nm" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/mine/production)
-"nn" = (/obj/machinery/door/airlock/glass_mining{name = "Conveyor Access"; req_access_txt = "48"},/obj/structure/barricade/wooden,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production)
-"no" = (/obj/machinery/conveyor{dir = 2; id = "mining_internal"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/mine/production)
-"np" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/explored)
-"nq" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plating/asteroid/airless,/area/mine/living_quarters)
-"nt" = (/obj/item/device/radio/beacon,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/mine/production)
-"nu" = (/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 4},/area/mine/production)
-"nv" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/computer/shuttle/mining{req_access = "0"},/obj/machinery/light{dir = 4},/obj/machinery/camera{c_tag = "Shuttle Docking Foyer"; dir = 8; network = list("MINE")},/obj/machinery/newscaster{pixel_x = 30; pixel_y = 1},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production)
-"nw" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production)
-"nx" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel,/area/mine/production)
-"ny" = (/obj/machinery/camera{c_tag = "Processing Area Room"; dir = 8; network = list("MINE")},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = 28},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production)
-"nz" = (/obj/machinery/mineral/unloading_machine{dir = 1; icon_state = "unloader-corner"; input_dir = 4; output_dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/mine/production)
-"nA" = (/obj/machinery/door/airlock/external{name = "Mining Shuttle Airlock"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production)
-"nB" = (/turf/simulated/floor/plasteel,/area/mine/production)
-"nC" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/mine/production)
-"nD" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 8},/area/mine/production)
-"nE" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel,/area/mine/production)
-"nF" = (/obj/machinery/conveyor_switch/oneway{id = "mining_internal"; name = "mining conveyor"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production)
-"nG" = (/obj/effect/decal/remains/human{desc = "Seems to be all that remains of a poor miner that didn't heed the warning signs."},/turf/simulated/floor/plating/asteroid/airless,/area/mine/explored)
-"nI" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/production)
-"nJ" = (/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/mine/production)
-"nK" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/mine/production)
-"nL" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/obj/structure/disposalpipe/junction{dir = 4; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/turf/simulated/floor/plasteel,/area/mine/production)
-"nM" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production)
-"nN" = (/obj/machinery/door/airlock/glass_mining{name = "Processing Area"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production)
-"nO" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/mine/production)
-"nP" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 4},/area/mine/production)
-"nQ" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 9},/turf/simulated/floor/plasteel,/area/mine/production)
-"nR" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production)
-"nS" = (/obj/machinery/mineral/processing_unit_console,/turf/simulated/wall/r_wall,/area/mine/production)
-"nT" = (/obj/machinery/mineral/processing_unit{dir = 1; output_dir = 2},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/mine/production)
-"nU" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/mine/production)
-"nV" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production)
-"nW" = (/obj/machinery/door/airlock/glass_mining{name = "Processing Area"; req_access_txt = "48"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production)
-"nX" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/production)
-"nY" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/mine/production)
-"nZ" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/mine/production)
-"ob" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/space,/area/space)
-"oc" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/production)
-"od" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/mine/production)
-"oe" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/window/northleft{name = "Output Access"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production)
-"of" = (/obj/machinery/door/window/northleft{base_state = "right"; icon_state = "right"; name = "Output Access"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production)
-"og" = (/obj/machinery/mineral/stacking_unit_console,/turf/simulated/wall/r_wall,/area/mine/production)
-"oj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/explored)
-"ok" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/mine/explored)
-"ol" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4},/turf/space,/area/space)
-"om" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/space,/area/space)
-"on" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/trunk,/obj/machinery/door/window/northleft{name = "Pneumatic Tube Access"},/obj/machinery/disposal/deliveryChute{dir = 1; pixel_y = -1},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production)
-"oo" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production)
-"op" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production)
-"oq" = (/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production)
-"or" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/obj/structure/plasticflaps,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/production)
-"os" = (/obj/machinery/mineral/stacking_machine{dir = 1; input_dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/mine/production)
-"ot" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/production)
-"ou" = (/obj/machinery/conveyor{icon_state = "conveyor0"; dir = 10; id = "mining_internal"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplatecorner (EAST)"; icon_state = "warnplatecorner"; dir = 4},/area/mine/production)
-"ov" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/explored)
-"ow" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/production)
-"ox" = (/obj/structure/disposaloutlet{dir = 1; eject_range = 1},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/production)
-
+"cl" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/mine/north_outpost)
+"cm" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel,/area/mine/north_outpost)
+"cn" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "Mining North Outpost APC"; pixel_x = 26; pixel_y = 0},/obj/machinery/conveyor_switch{id = "mining_north"},/obj/machinery/camera{c_tag = "North Outpost"; dir = 8; network = list("MINE")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/north_outpost)
+"co" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/north_outpost)
+"cp" = (/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_north"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plasteel,/area/mine/north_outpost)
+"cq" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/mine/north_outpost)
+"cr" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/north_outpost)
+"cs" = (/turf/simulated/floor/plasteel{icon_state = "damaged3"},/area/mine/abandoned)
+"ct" = (/obj/structure/ore_box,/turf/simulated/floor/plating/asteroid/airless,/area/mine/explored)
+"cu" = (/obj/structure/table,/obj/item/weapon/storage/backpack/satchel,/obj/item/clothing/glasses/meson,/obj/machinery/light/small{dir = 8},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel,/area/mine/north_outpost)
+"cv" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel,/area/mine/north_outpost)
+"cw" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel,/area/mine/north_outpost)
+"cx" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/door/airlock/glass_mining{name = "Break Room"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/north_outpost)
+"cy" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/simulated/floor/plasteel,/area/mine/north_outpost)
+"cz" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/north_outpost)
+"cA" = (/obj/machinery/door/window/northleft{dir = 8; name = "Pneumatic Tube Access"},/obj/machinery/disposal/deliveryChute{dir = 8; pixel_x = 8; pixel_y = 0},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/north_outpost)
+"cB" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/north_outpost)
+"cC" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/mine/explored)
+"cD" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/north_outpost)
+"cE" = (/obj/machinery/conveyor_switch{id = "mining_north"},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/north_outpost)
+"cF" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/north_outpost)
+"cG" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/xenos,/obj/item/clothing/head/xenos,/turf/simulated/floor/plasteel{icon_state = "damaged2"},/area/mine/abandoned)
+"cH" = (/obj/structure/table,/obj/item/stack/sheet/mineral/sandstone{amount = 30},/turf/simulated/floor/plasteel{icon_state = "damaged3"},/area/mine/abandoned)
+"cI" = (/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"},/area/mine/abandoned)
+"cJ" = (/obj/structure/alien/resin/wall,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"cK" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned)
+"cL" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/plasteel,/area/mine/north_outpost)
+"cM" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel,/area/mine/north_outpost)
+"cN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/mine/north_outpost)
+"cO" = (/obj/structure/rack,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/north_outpost)
+"cP" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/mine/north_outpost)
+"cQ" = (/obj/structure/alien/weeds/node,/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"},/area/mine/abandoned)
+"cR" = (/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless{icon_state = "damaged4"},/area/mine/abandoned)
+"cS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"cT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"cU" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned)
+"cV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"cW" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel,/area/mine/north_outpost)
+"cX" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel,/area/mine/north_outpost)
+"cY" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/plasteel,/area/mine/north_outpost)
+"cZ" = (/obj/effect/decal/remains/human,/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless,/area/mine/abandoned)
+"da" = (/obj/structure/alien/weeds/node,/turf/simulated/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned)
+"db" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned)
+"dc" = (/obj/structure/rack,/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned)
+"dd" = (/turf/simulated/floor/plating/asteroid/airless,/area/mine/unexplored)
+"de" = (/obj/machinery/door/airlock/external{name = "Mining North Outpost Airlock"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/north_outpost)
+"df" = (/turf/simulated/mineral/random/labormineral,/area/mine/unexplored)
+"dg" = (/obj/item/weapon/rack_parts,/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned)
+"dh" = (/obj/structure/girder/displaced,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned)
+"di" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/explored)
+"dj" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/explored)
+"dk" = (/obj/structure/lattice,/obj/structure/window/reinforced,/turf/space,/area/mine/explored)
+"dl" = (/obj/structure/lattice,/obj/structure/window/reinforced,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/space,/area/mine/north_outpost)
+"dm" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost)
+"dn" = (/turf/simulated/floor/mech_bay_recharge_floor/airless,/area/mine/north_outpost)
+"do" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost)
+"dp" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel,/area/mine/north_outpost)
+"dq" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel,/area/mine/north_outpost)
+"dr" = (/turf/simulated/wall/r_wall,/area/mine/laborcamp)
+"ds" = (/obj/structure/alien/resin/wall,/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"},/area/mine/abandoned)
+"dt" = (/turf/simulated/floor/plasteel/airless{icon_state = "floorgrime"},/area/mine/abandoned)
+"du" = (/obj/structure/girder,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned)
+"dv" = (/obj/machinery/door/airlock/external{name = "Mining Bridge"; req_access_txt = "54"},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost)
+"dw" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel/airless,/area/mine/explored)
+"dx" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/north_outpost)
+"dy" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/north_outpost)
+"dz" = (/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/north_outpost)
+"dA" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/north_outpost)
+"dB" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/machinery/atmospherics/pipe/simple{dir = 9},/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"dC" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/machinery/atmospherics/pipe/simple{dir = 9},/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/obj/machinery/camera{c_tag = "Labor Camp Storage"; dir = 8; network = list("Labor")},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"dD" = (/turf/simulated/mineral/random/labormineral,/area/mine/explored)
+"dE" = (/obj/item/weapon/storage/toolbox/syndicate,/obj/structure/alien/weeds/node,/turf/simulated/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"dF" = (/obj/effect/decal/remains/xeno,/obj/item/clothing/suit/space/syndicate/black/red,/obj/item/clothing/head/helmet/space/syndicate/black/red,/obj/structure/alien/weeds,/turf/simulated/floor/plasteel/airless{icon_state = "damaged4"},/area/mine/abandoned)
+"dG" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/space,/area/mine/north_outpost)
+"dH" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/turf/space,/area/mine/explored)
+"dI" = (/obj/machinery/door/airlock/external{name = "Mining North Outpost Airlock"; req_access_txt = "54"},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost)
+"dJ" = (/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/explored)
+"dK" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "white"; temperature = 273.15},/area/mine/laborcamp)
+"dL" = (/obj/structure/table,/obj/item/device/healthanalyzer,/obj/item/stack/medical/bruise_pack,/turf/simulated/floor/plasteel{icon_state = "white"; temperature = 273.15},/area/mine/laborcamp)
+"dM" = (/obj/structure/sign/bluecross_2{pixel_y = 32},/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "white"; temperature = 273.15},/area/mine/laborcamp)
+"dN" = (/obj/machinery/camera{c_tag = "Labor Camp Medical"; dir = 8; network = list("Labor")},/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor/plasteel{icon_state = "white"; temperature = 273.15},/area/mine/laborcamp)
+"dO" = (/turf/simulated/wall,/area/mine/laborcamp)
+"dP" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"dQ" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"dR" = (/turf/simulated/wall,/area/mine/explored)
+"dS" = (/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/explored)
+"dT" = (/obj/machinery/door/airlock/external{name = "External Airlock"; req_access_txt = "0"},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned)
+"dU" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/weapon/shard{icon_state = "small"},/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"dV" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 10},/area/mine/explored)
+"dW" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored)
+"dX" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/explored)
+"dY" = (/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/north_outpost)
+"dZ" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored)
+"ea" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 5},/area/mine/explored)
+"eb" = (/turf/space,/area)
+"ec" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp)
+"ed" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp)
+"ee" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=1-Storage"; location = "Sleeper"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp)
+"ef" = (/obj/machinery/light/small{dir = 4},/obj/structure/stool/bed/roller,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp)
+"eg" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/closet/crate/internals,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"eh" = (/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"ei" = (/obj/machinery/bot/secbot/beepsky{desc = "Powered by tears and swet of laborer."; name = "Prison Ofitser"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=2-NMine"; location = "1-Storage"},/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp)
+"ej" = (/obj/structure/plasticflaps/mining,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp)
+"ek" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=3-SMine"; location = "2-NMine"},/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp)
+"el" = (/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/explored)
+"em" = (/obj/effect/decal/remains/human,/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/explored)
+"en" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored)
+"eo" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/laborcamp)
+"ep" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/mine/laborcamp)
+"eq" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/laborcamp)
+"er" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/wall,/area/mine/laborcamp)
+"es" = (/obj/machinery/door/airlock{name = "Labor Camp Storage"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"et" = (/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/explored)
+"eu" = (/turf/simulated/wall/r_wall,/area/mine/explored)
+"ev" = (/obj/structure/girder/reinforced,/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/explored)
+"ew" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/abandoned)
+"ex" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/abandoned)
+"ey" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
+"ez" = (/obj/structure/table,/obj/item/trash/plate,/obj/item/weapon/kitchen/utensil/fork,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"eA" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"eB" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"eC" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"eD" = (/obj/machinery/atmospherics/pipe/simple,/obj/item/device/radio/intercom{desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; pixel_x = 0; pixel_y = 24; prison_radio = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"eE" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"eF" = (/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored)
+"eG" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/mineral/random/labormineral,/area/mine/unexplored)
+"eH" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/stack/rods,/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned)
+"eI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned)
+"eJ" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"eK" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=7-Sleeper"; location = "6-Vending"},/mob/living/simple_animal/mouse,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"eL" = (/obj/machinery/door/airlock{name = "Vending"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"eM" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"eN" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"eO" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"eP" = (/obj/machinery/door/poddoor/preopen{id = "Labor"; name = "labor camp blast door"},/obj/machinery/door/airlock{name = "Labor Camp External Access"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp)
+"eQ" = (/obj/structure/ore_box,/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/explored)
+"eR" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 10},/area/mine/unexplored)
+"eS" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/unexplored)
+"eT" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/unexplored)
+"eU" = (/turf/space,/area/shuttle/laborcamp/outpost)
+"eV" = (/obj/machinery/vending/sustenance,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"eW" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"eX" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/wall,/area/mine/laborcamp)
+"eY" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"eZ" = (/obj/machinery/flasher{id = "Labor"; pixel_x = 0; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/simulated/wall,/area/mine/laborcamp)
+"fa" = (/obj/machinery/conveyor_switch/oneway{id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"fb" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; temperature = 273.15},/area/mine/laborcamp)
+"fc" = (/turf/simulated/floor/plasteel{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; temperature = 273.15},/area/mine/explored)
+"fd" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/unexplored)
+"fe" = (/obj/machinery/light_switch{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"ff" = (/obj/machinery/camera{c_tag = "Labor Camp Central"; network = list("Labor")},/obj/machinery/atmospherics/pipe/manifold{dir = 8},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"fg" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 9},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"fh" = (/obj/machinery/conveyor{dir = 2; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"fi" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp)
+"fj" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/turf/simulated/floor/plasteel{tag = "icon-asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/laborcamp)
+"fk" = (/obj/machinery/mineral/unloading_machine{dir = 1; input_dir = 4; output_dir = 8},/turf/simulated/floor/plasteel{tag = "icon-asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/laborcamp)
+"fl" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel{tag = "icon-asteroidwarning (WEST)"; icon_state = "asteroidwarning"; dir = 8; temperature = 273.15},/area/mine/explored)
+"fm" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/explored)
+"fn" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
+"fo" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
+"fp" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Shuttle Security Airlock"; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"fq" = (/obj/machinery/light/small{dir = 1},/obj/machinery/door_control{id = "Labor"; name = "Labor Camp Lockdown"; pixel_x = 0; pixel_y = 28; req_access_txt = "2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"fr" = (/obj/machinery/door/poddoor/preopen{id = "Labor"; name = "labor camp blast door"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"fs" = (/turf/simulated/floor/plasteel,/area/mine/laborcamp)
+"ft" = (/obj/machinery/mineral/processing_unit_console{machinedir = 6},/turf/simulated/wall,/area/mine/laborcamp)
+"fu" = (/obj/structure/plasticflaps,/obj/machinery/conveyor{dir = 2; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"fv" = (/obj/machinery/camera{c_tag = "Labor Camp External"; dir = 4; network = list("Labor")},/turf/simulated/floor/plasteel{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1; temperature = 273.15},/area/mine/explored)
+"fw" = (/turf/simulated/floor/plasteel{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1; temperature = 273.15},/area/mine/explored)
+"fx" = (/obj/machinery/conveyor_switch/oneway{id = "gulag"},/turf/simulated/floor/plasteel{tag = "icon-asteroidwarning (NORTH)"; icon_state = "asteroidwarning"; dir = 1; temperature = 273.15},/area/mine/explored)
+"fy" = (/obj/effect/decal/cleanable/blood/old,/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/explored)
+"fz" = (/obj/machinery/mineral/stacking_unit_console{machinedir = 2},/turf/simulated/wall,/area/mine/laborcamp)
+"fA" = (/obj/machinery/mineral/processing_unit{dir = 1; output_dir = 2},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"fB" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/laborcamp)
+"fC" = (/obj/machinery/computer/shuttle/labor/one_way,/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"fD" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=6-Vending"; location = "5-Central"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"fE" = (/obj/machinery/mineral/stacking_machine{dir = 1; input_dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"fF" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"fG" = (/obj/machinery/conveyor{dir = 10; icon_state = "conveyor0"; id = "gulag"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp)
+"fH" = (/obj/structure/closet/crate,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored)
+"fI" = (/obj/item/stack/sheet/metal{amount = 5},/obj/structure/closet/crate,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored)
+"fJ" = (/turf/simulated/wall/r_wall,/area/mine/laborcamp/security)
+"fK" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp/security)
+"fL" = (/obj/machinery/camera{c_tag = "Labor Camp Security Hallway"; dir = 8; network = list("Labor"); pixel_x = 0; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security)
+"fM" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/wall,/area/mine/laborcamp/security)
+"fN" = (/obj/structure/plasticflaps/mining,/turf/simulated/floor/plating,/area/mine/laborcamp/security)
+"fO" = (/turf/simulated/wall,/area/mine/laborcamp/security)
+"fP" = (/obj/structure/girder,/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/laborcamp/security)
+"fQ" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Shuttle Prisoner Airlock"; req_access_txt = "0"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
+"fR" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Shuttle Prisoner Airlock"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp/security)
+"fS" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/turf/simulated/floor/plasteel{icon_state = "floorgrime"; temperature = 273.15},/area/mine/laborcamp/security)
+"fT" = (/obj/machinery/atmospherics/pipe/manifold,/obj/machinery/door/airlock/glass_security{name = "Labor Camp Backroom"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
+"fU" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/mine/laborcamp/security)
+"fV" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
+"fW" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/mine/laborcamp/security)
+"fX" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Labor Camp APC"; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple{dir = 10},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=5-Central"; location = "4-Maint"},/turf/simulated/floor/plating,/area/mine/laborcamp)
+"fY" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/mine/laborcamp/security)
+"fZ" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp External Access"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
+"ga" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Monitoring"; req_access_txt = "2"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
+"gb" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/laborcamp/security)
+"gc" = (/obj/machinery/door/airlock/maintenance{name = "Labor Camp Maintenance"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
+"gd" = (/obj/structure/plasticflaps/mining,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plating,/area/mine/laborcamp/security)
+"ge" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored)
+"gf" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
+"gg" = (/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
+"gh" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
+"gi" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
+"gj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 4; name = "Labor Camp Security APC"; pixel_x = 24; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple,/obj/machinery/camera{c_tag = "Labor Camp Monitoring"; network = list("Labor")},/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
+"gk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/wall,/area/mine/laborcamp/security)
+"gl" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
+"gm" = (/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
+"gn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/laborcamp/security)
+"go" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
+"gp" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
+"gq" = (/obj/structure/plasticflaps/mining,/turf/simulated/wall,/area/mine/laborcamp/security)
+"gr" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=4-Maint"; location = "3-SMine"},/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/laborcamp)
+"gs" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/closet/crate,/turf/simulated/floor/plasteel{icon_state = "asteroidfloor"; temperature = 273.15},/area/mine/explored)
+"gt" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/closet/crate,/turf/simulated/floor/plating/asteroid{temperature = 273.15},/area/mine/explored)
+"gu" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
+"gv" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall/r_wall,/area/mine/laborcamp/security)
+"gw" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
+"gx" = (/obj/structure/stool/bed/chair/office/dark,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
+"gy" = (/obj/machinery/door_control{id = "Labor"; name = "Labor Camp Lockdown"; pixel_x = 28; pixel_y = 7; req_access_txt = "2"},/obj/machinery/flasher_button{id = "Labor"; pixel_x = 26; pixel_y = -3},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
+"gz" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
+"gA" = (/turf/simulated/floor/plating,/area/mine/laborcamp/security)
+"gB" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/obj/machinery/meter,/turf/simulated/floor/plating,/area/mine/laborcamp/security)
+"gC" = (/obj/machinery/atmospherics/unary/tank/air{dir = 8},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
+"gD" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/laborcamp/security)
+"gE" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
+"gF" = (/obj/machinery/computer/secure_data,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
+"gG" = (/obj/machinery/computer/security{name = "Labor Camp Monitoring"; network = list("Labor")},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
+"gH" = (/obj/machinery/computer/prisoner,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
+"gI" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/simulated/floor/plasteel,/area/mine/laborcamp/security)
+"gJ" = (/obj/machinery/space_heater,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
+"gK" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
+"gL" = (/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/mine/laborcamp/security)
+"gM" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 5},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/mine/laborcamp/security)
+"gN" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/laborcamp/security)
+"gO" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/laborcamp/security)
+"gP" = (/obj/structure/grille,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/laborcamp/security)
+"gQ" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/explored)
+"gR" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
+"gS" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
+"gT" = (/turf/simulated/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/explored)
+"gU" = (/obj/item/clothing/under/soviet,/obj/item/clothing/head/ushanka,/turf/simulated/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/explored)
+"gV" = (/obj/effect/decal/remains/human,/turf/simulated/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/explored)
+"gW" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/explored)
+"gX" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/explored)
+"gY" = (/obj/machinery/door/airlock/external{name = "Mining Bridge"; req_access_txt = "54"},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost)
+"gZ" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/turf/space,/area/mine/explored)
+"ha" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless,/area/mine/explored)
+"hb" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/obj/machinery/light{dir = 1},/turf/space,/area/mine/west_outpost)
+"hc" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/turf/space,/area/mine/explored)
+"hd" = (/obj/structure/lattice,/obj/structure/window/reinforced,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/space,/area/mine/west_outpost)
+"he" = (/obj/structure/lattice,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/space,/area/mine/explored)
+"hf" = (/turf/simulated/wall/r_wall,/area/mine/maintenance)
+"hg" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plasteel/airless,/area/mine/explored)
+"hh" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel/airless,/area/mine/explored)
+"hi" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel/airless,/area/mine/explored)
+"hj" = (/turf/simulated/floor/bluegrid,/area/mine/maintenance)
+"hk" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Mining Communications APC"; pixel_x = 1; pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/mine/maintenance)
+"hl" = (/obj/machinery/telecomms/relay/preset/mining,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 1},/area/mine/maintenance)
+"hm" = (/obj/machinery/alarm{pixel_y = 24},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/mine/maintenance)
+"hn" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/space,/area/mine/explored)
+"ho" = (/obj/structure/lattice,/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/space,/area/mine/explored)
+"hp" = (/obj/structure/lattice,/turf/space,/area/mine/explored)
+"hq" = (/turf/space,/area/mine/unexplored)
+"hr" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/bluegrid,/area/mine/maintenance)
+"hs" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple{dir = 6},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/mine/maintenance)
+"ht" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 9},/obj/machinery/light_switch{pixel_y = -25},/turf/simulated/floor/bluegrid,/area/mine/maintenance)
+"hu" = (/obj/machinery/camera{c_tag = "Communications Relay"; dir = 8; network = list("MINE")},/turf/simulated/floor/bluegrid,/area/mine/maintenance)
+"hv" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
+"hw" = (/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris,/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
+"hx" = (/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
+"hy" = (/turf/simulated/wall,/area/mine/living_quarters)
+"hz" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Communications"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "vault"},/area/mine/maintenance)
+"hA" = (/obj/item/clothing/under/rank/miner,/obj/effect/decal/remains/human,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
+"hB" = (/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris,/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/explored)
+"hC" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/brown,/turf/simulated/floor/fancy/carpet,/area/mine/living_quarters)
+"hD" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm1"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/fancy/carpet,/area/mine/living_quarters)
+"hE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"hF" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/obj/machinery/light,/turf/space,/area/mine/west_outpost)
+"hG" = (/obj/structure/table,/turf/simulated/floor/fancy/carpet,/area/mine/living_quarters)
+"hH" = (/turf/simulated/floor/fancy/carpet,/area/mine/living_quarters)
+"hI" = (/obj/machinery/door/airlock{id_tag = "miningdorm1"; name = "Room 1"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/mine/living_quarters)
+"hJ" = (/obj/structure/disposalpipe/trunk,/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
+"hK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"hL" = (/obj/structure/disposalpipe/segment,/turf/simulated/mineral/random,/area/mine/unexplored)
+"hM" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/fancy/carpet,/area/mine/living_quarters)
+"hN" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/living_quarters)
+"hO" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/west_outpost)
+"hP" = (/obj/machinery/door/airlock{id_tag = "miningdorm2"; name = "Room 2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/mine/living_quarters)
+"hQ" = (/turf/space,/area/mine/explored)
+"hR" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost)
+"hS" = (/turf/simulated/floor/mech_bay_recharge_floor/airless,/area/mine/west_outpost)
+"hT" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost)
+"hU" = (/obj/structure/disposalpipe/segment,/obj/structure/sign/deathsposal,/turf/simulated/wall,/area/mine/living_quarters)
+"hV" = (/turf/simulated/wall,/area/mine/west_outpost)
+"hW" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/west_outpost)
+"hX" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/asteroid/airless,/area/mine/west_outpost)
+"hY" = (/obj/machinery/computer/arcade,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
+"hZ" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
+"ia" = (/obj/machinery/vending/cigarette,/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
+"ib" = (/obj/machinery/vending/snack,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
+"ic" = (/obj/machinery/light/small{dir = 4},/obj/machinery/door_control{id = "miningdorm3"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/simulated/floor/fancy/carpet,/area/mine/living_quarters)
+"id" = (/obj/structure/table,/obj/item/weapon/pickaxe,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"ie" = (/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"if" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"ig" = (/obj/machinery/recharge_station,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost)
+"ih" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost)
+"ii" = (/obj/structure/rack,/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost)
+"ij" = (/obj/structure/rack,/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost)
+"ik" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/trunk,/obj/machinery/door/window/northleft{dir = 2; name = "Pneumatic Tube Access"},/obj/machinery/disposal/deliveryChute{pixel_y = 5},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost)
+"il" = (/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"im" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/west_outpost)
+"in" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/west_outpost)
+"io" = (/obj/structure/table,/obj/machinery/microwave{pixel_y = 6},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
+"ip" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
+"iq" = (/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
+"ir" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
+"is" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 31},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
+"it" = (/obj/machinery/door/airlock{id_tag = "miningdorm3"; name = "Room 3"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/mine/living_quarters)
+"iu" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"iv" = (/obj/machinery/recharge_station,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"iw" = (/obj/structure/closet/secure_closet/miner,/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"ix" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/eva)
+"iy" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/eva)
+"iz" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/eva)
+"iA" = (/turf/simulated/wall,/area/mine/eva)
+"iB" = (/obj/structure/table,/obj/item/weapon/shovel,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"iC" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"iD" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/west_outpost)
+"iE" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/west_outpost)
+"iF" = (/obj/machinery/door/airlock/external{name = "Mining West Outpost Airlock"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"iG" = (/obj/machinery/door/airlock/external{name = "Mining West Outpost Airlock"; req_access_txt = "54"},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost)
+"iH" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/explored)
+"iI" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/beer,/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
+"iJ" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
+"iK" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
+"iL" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
+"iM" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
+"iN" = (/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"iO" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"iP" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/table,/obj/item/weapon/pickaxe,/turf/simulated/floor/plasteel,/area/mine/eva)
+"iQ" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/suit_storage_unit/mining,/turf/simulated/floor/plasteel,/area/mine/eva)
+"iR" = (/obj/machinery/suit_storage_unit/mining,/turf/simulated/floor/plasteel,/area/mine/eva)
+"iS" = (/obj/machinery/light,/turf/simulated/floor/plating/asteroid/airless,/area/mine/explored)
+"iT" = (/obj/structure/table,/obj/item/weapon/storage/backpack/satchel,/obj/item/clothing/glasses/meson,/obj/machinery/light/small{dir = 8},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"iU" = (/obj/machinery/door/airlock/glass_mining{name = "Break Room"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"iV" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"iW" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"iX" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/west_outpost)
+"iY" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
+"iZ" = (/obj/machinery/camera{c_tag = "Crew Area"; dir = 1; network = list("MINE")},/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
+"ja" = (/obj/item/weapon/cigbutt,/turf/simulated/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters)
+"jb" = (/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"jc" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"jd" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"je" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"jf" = (/obj/machinery/mineral/equipment_vendor,/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"jg" = (/obj/machinery/camera{c_tag = "Storage Room"; dir = 1; network = list("MINE")},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"jh" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"ji" = (/turf/simulated/wall,/area/mine/production)
+"jj" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/mine/production)
+"jk" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/production)
+"jl" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/obj/machinery/camera{c_tag = "EVA"; dir = 4; network = list("MINE")},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/table,/obj/item/device/gps/mining,/obj/item/device/gps/mining,/obj/item/device/gps/mining,/obj/item/device/gps/mining,/turf/simulated/floor/plasteel,/area/mine/eva)
+"jm" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/eva)
+"jn" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel,/area/mine/eva)
+"jo" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor/plasteel,/area/mine/eva)
+"jp" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"jq" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"jr" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/west_outpost)
+"js" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"jt" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"ju" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"jv" = (/obj/machinery/conveyor_switch{id = "mining_west"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"jw" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/living_quarters)
+"jx" = (/obj/machinery/door/airlock/glass{name = "Crew Area"; req_access_txt = "48"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"jy" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/door/airlock/mining{name = "Mining Station Storage"; req_access_txt = "48"},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"jz" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/northleft{dir = 2; name = "Pneumatic Tube Access"},/obj/machinery/disposal/deliveryChute{pixel_y = 5},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production)
+"jA" = (/obj/structure/closet/crate,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production)
+"jB" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/obj/structure/closet/crate,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production)
+"jC" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/eva)
+"jD" = (/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 9},/turf/simulated/floor/plasteel,/area/mine/eva)
+"jE" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/eva)
+"jF" = (/turf/simulated/floor/plasteel,/area/mine/eva)
+"jG" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor/plasteel,/area/mine/eva)
+"jH" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/eva)
+"jI" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva)
+"jJ" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"jK" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"jL" = (/obj/machinery/power/apc{dir = 2; name = "Mining West Outpost APC"; pixel_x = 1; pixel_y = -23},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"jM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/camera{c_tag = "West Outpost"; dir = 1; network = list("MINE")},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"jN" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"jO" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"jP" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"},/area/mine/west_outpost)
+"jQ" = (/obj/machinery/mineral/unloading_machine{dir = 2; output_dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/west_outpost)
+"jR" = (/obj/machinery/conveyor{dir = 4; id = "mining_west"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/west_outpost)
+"jS" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal/deliveryChute{dir = 8},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/west_outpost)
+"jT" = (/obj/structure/grille,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/west_outpost)
+"jU" = (/obj/structure/toilet{dir = 4},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/mine/living_quarters)
+"jV" = (/obj/structure/sink{pixel_y = 30},/obj/machinery/light/small,/obj/structure/mirror{pixel_y = -32},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/mine/living_quarters)
+"jW" = (/obj/machinery/door/airlock{name = "Toilet"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/mine/living_quarters)
+"jX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"jY" = (/obj/machinery/power/apc{dir = 1; name = "Mining Station Port Wing APC"; pixel_x = 1; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"jZ" = (/obj/machinery/camera{c_tag = "Crew Area Hallway"; network = list("MINE")},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"ka" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/mine/living_quarters)
+"kb" = (/obj/structure/window/reinforced,/obj/structure/lattice,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/space,/area/mine/living_quarters)
+"kc" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/living_quarters)
+"kd" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/mine/production)
+"ke" = (/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/mine/production)
+"kf" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/production)
+"kg" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/production)
+"kh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/mine/production)
+"ki" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_mining{name = "Mining Station EVA"; req_access_txt = "54"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/eva)
+"kj" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/mine/eva)
+"kk" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/eva)
+"kl" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/eva)
+"km" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva)
+"kn" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "54"},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/eva)
+"ko" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/wall,/area/mine/west_outpost)
+"kp" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/west_outpost)
+"kq" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "54"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/mine/west_outpost)
+"kr" = (/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_west"},/obj/structure/plasticflaps/mining,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/mine/west_outpost)
+"ks" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/mine/west_outpost)
+"kt" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"ku" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"kv" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"kw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"kx" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"ky" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"kz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"kA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/living_quarters)
+"kB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"kC" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"kD" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/production)
+"kE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/turf/simulated/floor/plasteel,/area/mine/production)
+"kF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/production)
+"kG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel,/area/mine/production)
+"kH" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel,/area/mine/production)
+"kI" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production)
+"kJ" = (/obj/machinery/power/apc{dir = 2; name = "Mining EVA APC"; pixel_x = 1; pixel_y = -23},/obj/structure/cable,/obj/structure/table,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/weapon/hand_labeler,/turf/simulated/floor/plasteel,/area/mine/eva)
+"kK" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/mine/eva)
+"kL" = (/turf/simulated/floor/mech_bay_recharge_floor,/area/mine/eva)
+"kM" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor/plasteel,/area/mine/eva)
+"kN" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel,/area/mine/eva)
+"kO" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva)
+"kP" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/meter,/turf/simulated/floor/plating,/area/mine/west_outpost)
+"kQ" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/mine/west_outpost)
+"kR" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/mine/west_outpost)
+"kS" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/item/weapon/storage/box/lights/bulbs,/turf/simulated/floor/plating,/area/mine/west_outpost)
+"kT" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/west_outpost)
+"kU" = (/obj/machinery/conveyor_switch{id = "mining_west"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/west_outpost)
+"kV" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"kW" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"kX" = (/obj/machinery/atmospherics/pipe/manifold,/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"kY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"kZ" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"la" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/light,/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"lb" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/mine/living_quarters)
+"lc" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/living_quarters)
+"ld" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/space,/area/mine/living_quarters)
+"le" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/space,/area/mine/production)
+"lf" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/light{dir = 4},/turf/space,/area/mine/production)
+"lg" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/production)
+"lh" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/production)
+"li" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/mine/production)
+"lj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel,/area/mine/production)
+"lk" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production)
+"ll" = (/obj/machinery/camera{c_tag = "Production Line External"; dir = 4; network = list("MINE")},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/production)
+"lm" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/production)
+"ln" = (/obj/machinery/conveyor_switch{id = "mining_external"},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/production)
+"lo" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/production)
+"lp" = (/obj/machinery/atmospherics/unary/tank/air{dir = 1; initialize_directions = 0; level = 1},/turf/simulated/floor/plating,/area/mine/west_outpost)
+"lq" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/mine/west_outpost)
+"lr" = (/obj/machinery/power/terminal{dir = 4},/obj/machinery/light/small,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/west_outpost)
+"ls" = (/obj/machinery/power/smes,/obj/structure/cable,/turf/simulated/floor/plating,/area/mine/west_outpost)
+"lt" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "whitebluefull"},/area/mine/living_quarters)
+"lu" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/mine/living_quarters)
+"lv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "48"},/turf/simulated/floor/plating,/area/mine/living_quarters)
+"lw" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/wall,/area/mine/living_quarters)
+"lx" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "54"},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"ly" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/production)
+"lz" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/production)
+"lA" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production)
+"lB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock{name = "Closet"; req_access_txt = "0"},/turf/simulated/floor/plating,/area/mine/production)
+"lC" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/mine/production)
+"lD" = (/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)"},/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/mine/production)
+"lE" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/mine/production)
+"lF" = (/obj/machinery/disposal/deliveryChute{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/mine/production)
+"lG" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/turf/simulated/floor/plating,/area/mine/production)
+"lH" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/mine/production)
+"lI" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/obj/structure/plasticflaps/mining,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/production)
+"lJ" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/production)
+"lK" = (/obj/machinery/light/small{dir = 8},/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/mine/living_quarters)
+"lL" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/mine/living_quarters)
+"lM" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/mine/living_quarters)
+"lN" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/mine/living_quarters)
+"lO" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/mine/living_quarters)
+"lP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/mine/living_quarters)
+"lQ" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/mine/living_quarters)
+"lR" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plating,/area/mine/living_quarters)
+"lS" = (/turf/simulated/floor/plating,/area/mine/living_quarters)
+"lT" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/living_quarters)
+"lU" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/mine/living_quarters)
+"lV" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel,/area/mine/living_quarters)
+"lW" = (/obj/structure/sign/xeno_warning_mining,/turf/simulated/wall,/area/mine/living_quarters)
+"lX" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/production)
+"lY" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plasteel,/area/mine/production)
+"lZ" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production)
+"ma" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/production)
+"mb" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/simulated/floor/plasteel{icon_state = "warnwhite"; dir = 1},/area/mine/living_quarters)
+"mc" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warnwhite"},/area/mine/living_quarters)
+"md" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/camera{c_tag = "Sleeper Room"; dir = 1; network = list("MINE")},/turf/simulated/floor/plasteel{icon_state = "white"; temperature = 273.15},/area/mine/living_quarters)
+"me" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/mine/living_quarters)
+"mf" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
+"mg" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/obj/machinery/meter,/turf/simulated/floor/plating,/area/mine/living_quarters)
+"mh" = (/obj/machinery/atmospherics/unary/tank/air{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters)
+"mi" = (/obj/structure/ore_box,/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/living_quarters)
+"mj" = (/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/living_quarters)
+"mk" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/mine/living_quarters)
+"ml" = (/turf/space,/area/shuttle/mining/outpost)
+"mm" = (/obj/machinery/power/apc{dir = 8; name = "Mining Station Starboard Wing APC"; pixel_x = -27; pixel_y = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/production)
+"mn" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel,/area/mine/production)
+"mo" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production)
+"mp" = (/obj/machinery/mineral/equipment_vendor,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production)
+"mq" = (/obj/machinery/mineral/mint{input_dir = 4},/turf/simulated/floor/plasteel,/area/mine/production)
+"mr" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "loadingarea"},/area/mine/production)
+"ms" = (/obj/structure/closet/crate,/obj/machinery/alarm{pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production)
+"mt" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/structure/table,/obj/item/weapon/paper{anchored = 0; info = "A hastily written note has been scribbled here...
Please use the ore redemption machine in the science wing for smelting. PLEASE!
--The Research Staff"; name = "URGENT!"},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production)
+"mu" = (/obj/machinery/conveyor{dir = 2; id = "mining_internal"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/mine/production)
+"mv" = (/obj/structure/cable,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/power/port_gen/pacman{anchored = 1},/turf/simulated/floor/plating,/area/mine/living_quarters)
+"mw" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/living_quarters)
+"mx" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/mine/living_quarters)
+"my" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 5},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/mine/living_quarters)
+"mz" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "54"},/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/living_quarters)
+"mA" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/mine/production)
+"mB" = (/turf/simulated/floor/plasteel{icon_state = "loadingarea"},/area/mine/production)
+"mC" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/mine/production)
+"mD" = (/obj/machinery/door/airlock/glass_mining{name = "Conveyor Access"; req_access_txt = "48"},/obj/structure/barricade/wooden,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production)
+"mE" = (/obj/machinery/conveyor{dir = 2; id = "mining_internal"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/mine/production)
+"mF" = (/turf/simulated/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/explored)
+"mG" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/plating/asteroid/airless,/area/mine/living_quarters)
+"mH" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/production)
+"mI" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/mine/production)
+"mJ" = (/obj/item/device/radio/beacon,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/mine/production)
+"mK" = (/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 4},/area/mine/production)
+"mL" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/computer/shuttle/mining{req_access = "0"},/obj/machinery/light{dir = 4},/obj/machinery/camera{c_tag = "Shuttle Docking Foyer"; dir = 8; network = list("MINE")},/obj/machinery/newscaster{pixel_x = 30; pixel_y = 1},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production)
+"mM" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production)
+"mN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/plasteel,/area/mine/production)
+"mO" = (/obj/machinery/camera{c_tag = "Processing Area Room"; dir = 8; network = list("MINE")},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = 28},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production)
+"mP" = (/obj/machinery/mineral/unloading_machine{dir = 1; icon_state = "unloader-corner"; input_dir = 4; output_dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/mine/production)
+"mQ" = (/obj/machinery/door/airlock/external{name = "Mining Shuttle Airlock"; req_access_txt = "0"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production)
+"mR" = (/turf/simulated/floor/plasteel,/area/mine/production)
+"mS" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/mine/production)
+"mT" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 8},/area/mine/production)
+"mU" = (/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor/plasteel,/area/mine/production)
+"mV" = (/obj/machinery/conveyor_switch/oneway{id = "mining_internal"; name = "mining conveyor"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production)
+"mW" = (/obj/effect/decal/remains/human{desc = "Seems to be all that remains of a poor miner that didn't heed the warning signs."},/turf/simulated/floor/plating/asteroid/airless,/area/mine/explored)
+"mX" = (/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/production)
+"mY" = (/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/mine/production)
+"mZ" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/mine/production)
+"na" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/obj/structure/disposalpipe/junction{dir = 4; icon_state = "pipe-j2"; tag = "icon-pipe-j1 (WEST)"},/turf/simulated/floor/plasteel,/area/mine/production)
+"nb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production)
+"nc" = (/obj/machinery/door/airlock/glass_mining{name = "Processing Area"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production)
+"nd" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/mine/production)
+"ne" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/floor/plasteel{icon_state = "warningcorner"; dir = 4},/area/mine/production)
+"nf" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 9},/turf/simulated/floor/plasteel,/area/mine/production)
+"ng" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production)
+"nh" = (/obj/machinery/mineral/processing_unit_console,/turf/simulated/wall/r_wall,/area/mine/production)
+"ni" = (/obj/machinery/mineral/processing_unit{dir = 1; output_dir = 2},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/mine/production)
+"nj" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel,/area/mine/production)
+"nk" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production)
+"nl" = (/obj/machinery/door/airlock/glass_mining{name = "Processing Area"; req_access_txt = "48"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production)
+"nm" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/production)
+"nn" = (/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/mine/production)
+"no" = (/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/mine/production)
+"np" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/space,/area/space)
+"nq" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/production)
+"nr" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/mine/production)
+"ns" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/window/northleft{name = "Output Access"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production)
+"nt" = (/obj/machinery/door/window/northleft{base_state = "right"; icon_state = "right"; name = "Output Access"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production)
+"nu" = (/obj/machinery/mineral/stacking_unit_console,/turf/simulated/wall/r_wall,/area/mine/production)
+"nv" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/explored)
+"nw" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/mine/explored)
+"nx" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4},/turf/space,/area/space)
+"ny" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/space,/area/space)
+"nz" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/trunk,/obj/machinery/door/window/northleft{name = "Pneumatic Tube Access"},/obj/machinery/disposal/deliveryChute{dir = 1; pixel_y = -1},/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production)
+"nA" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production)
+"nB" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production)
+"nC" = (/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production)
+"nD" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/obj/structure/plasticflaps,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/production)
+"nE" = (/obj/machinery/mineral/stacking_machine{dir = 1; input_dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/mine/production)
+"nF" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/production)
+"nG" = (/obj/machinery/conveyor{icon_state = "conveyor0"; dir = 10; id = "mining_internal"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplatecorner (EAST)"; icon_state = "warnplatecorner"; dir = 4},/area/mine/production)
+"nH" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/explored)
+"nI" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall,/area/mine/production)
+"nJ" = (/obj/structure/disposaloutlet{dir = 1; eject_range = 1},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/production)
+
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -746,175 +750,175 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababadadadadadababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababadadadadadadadadadadadadadadadadadabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadaeadadadadadadadadadadadadadadadabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababadadadadadadadadadadadadaeadadadadabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadaeadadadadadadababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadafadadadadadadadadadadadadadadadabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababadadadadadadadadadadadadadadadadadadadadadadadadababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaabababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafafafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagahagaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafajajajajajajafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakalakamaaaaabababababadadadadadadaeadadadadadadadadadadadadanadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafajajajajajajajajajajajafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoapaqaramaaababababadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaafafafafafafafajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasatalakamaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaafafafafafafajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasauavawamamababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababamamamamamamamamamamafafafafafafajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaacacacacacaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxalayabababababadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadaeadadadadadadadadadabababazazazazazazazazazazafafafafafafajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaacacacacacaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamaAaBalayabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababamamamamamaCamamamafafafafafajajajajajajajajajajajajajajajajajajajajajajafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamaDaEaFaGayabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaafafafafafajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamaHaIaJayaKaLayayayayadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaMaNasaOaPaQagaRaGayaSaSayadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaTaUaNavaVaWaWaXaGaKaYaZaSayadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafafajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaTaUaTasasbbaVaVayaKbcayaSbdayadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaaaaaamafafafafafafafafajajajajajajajajajajajajajajajajajajajajajajajajafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamambebfasbgbhasbbbcbcbibbaKayayayayayayadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababadadadadadababaaaaaaaaaaaaaaaaaaaaaaambjbjbkbjbjbjafafafafafajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamblbmbnasbhasavbobpaKayaWbqaybralaVbsayadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababababababadadadababaaaaaaaaaaaaaaaaaaaaamambjbtbubvbwbjafafafafafafafafafafajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamamadadayaQbbbxasbnaVbybzbAagaWaVaybralalbsayadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababafafafafafafababadadadababaaaaaaaaaaaaaaaaamamambjbBbCbDbEbjafafafafafafafafafafajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamayayayayayayaPaVbFbbaVbcbGbAbAaXalalaybravaKbsayadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadababafafafbHbHbHbHafafafababadababaaaaaaaaaaaaaaambjbjbjbjbjbIbJbjbjbjbjbjbjbjbjbjbHafafafafajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaybKbLbMbNayblbObmaybiaybPbPbPayaValalalalbQbpayadadadadadadadadadadadadanadadadadadadadadadadadadadadadadadadababafafbHbHbHbHbHbHbHbHafafababababaaaaaaaaaaaaaaambjbRbSbTbUbVbWbXbYbYbYbZcacbccbjbHbHafafafafafajajajajajajajajajajajajajafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaybKcdcecdcfaKcgbQaKchbpaRciaKbpaRbbayalbcaKaKayadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabafafbHbHbHbHbHbHbHbHbHbHafafababababaaaaaaaaaaaaambjcjbYckbUcmcncobjbjcpcqcrcrcsbjbHbHafafafafafajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaybKcdctctcfbcaKaKaRaGaKaKaKbQaKaKaKayaKbpchaKayadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabafafbHbHbHbHbHbHbHbHbHbHbHcuafafafafafaaaaaaaaaaaaambjcvcwcxcycxczcAcBcCcDcEcFcGbHbHbHafafafafafajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaybKcHctcIaycJcKbPbPcKbccKbPbPbPaKaKaycLbQaKbcayadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabafcubHbHbHbHbHbHbHbHbHbHbHbHafafafafaaaaaaaaaaaaaaambjcMbYcNbUbYcOcAcPcQcDbHbHbHbHbHafafafafafafajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababayayayayayaycRcKaKaKaKaKbQaKcSbPchbpaycTcUcVcWayadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabafcubHbHbHbHbHbHbHbHbHbHbHbHafafafaaaaaaaaaaaaaaamambjcXbYcYbUcZbYcAcPcQcDbHbHbHbHbHbHafafafafafajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadaycJcKaKbcdadbaGbpaKbPaKaKayaldcdcddaydeadadadadadadadadadadadadadadadadadadadadadadadadadadadadababafafbHbHbHbHbHbHbHbHbHbHbHbHafafafaaaaaaaaaaaaamamambjbjbUbUbjbjbUdibUcQcDbHbHbHbHbHbHafafafafafajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadaycJcKaKbpaKaKcSaKbccKcJayaybraldcdkdldedeadadadadadadadadadadadadadaeadadadadadadadadadadadadadababafafbHbHbHbHbHbHbHbHbHbHbHbHclcldodpdpdpdpdpdpdqclclbHbHdrdsdtbjdubYdvcQcDbHbHbHbHbHbHbHafafafafajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadwdwdwdwdwdwdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadaydxcKcKcKcKcKcKcKcKcKcJaybraldyaldddzdedeadadadadadadadadadadadadadadadadadadadadadadadadadadabababafbHbHbHbHbHbHbHbHbHbHbHbHbHbHdAdBdBdBdBdBdBdBdBdAbHbHbHdCdCdCbjdDdEdFcQcDbHbHbHbHbHbHbHafafafafajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadwdwdwdwdwdwdGdGdGdHdwdjdjdjdIdIdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadaydxcJcJcJdJdKcJcJcJdxdxaybrdydydybsaydededeadadadadadadadadadadadadadadadadadadadadadadadadadabababafbHbHbHbHbHbHbHbHbHbHbHbHbHclcldLdMdMdMdMdMdMdMclclbHbHbHbHbHbjbUdNbUcQdObHbHbHbHbHbHbHafafafafajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadwdPdQdRdSdTdUdVdVdVdwdWdWdWdWdXdIdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababadadadadadadadadadayayayayayayayayayayayayayaycWdYdZayaydedededeadadadadadadadadadadadadadadadadadadadadadadadadabababafbHbHbHbHbHbHbHbHbHbHbHbHbHafaaaaaaaaaaaaaaaaafafafbHbHbHbHbHbHeaebecedeeefbHbHbHbHafafafafafajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaegaaaaaaaaaaaaaadweheiejekdTeldVemeneoepeqeqdWdXerdIdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadaddededeaydcdcdyaydededededeadadadadadadadadadadadadadadadadadadadadadadadadabababafbHbHbHbHbHbHbHbHbHbHbHbHafaaaaaaaaaaaaaaafafafafafafafafbHbHbHbHbHeaesesecbHbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaegaaaaaaaaaadwdwdwdTdfeudgdTewexdTdTdwdwdweyezeAdIdIdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadaddededeayeBeCeBaydededededeadadadadadadadadadadadadadadadadadadadadadadadadadababafbHbHbHbHbHbHbHbHbHbHbHbHafaaaaaaaaaaaaaaafafafafafafafafafafbHbHbHbHeDeDbHbHbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaegamegegegegegdweEeFdTeGdVdUeHeIdVeJdTeKeKeKdXeqeqdIdIdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadaddedeayeLdYeMaydedededeadadadadadadadadadadadadadadadadadadadadadadadadadadababafafbHbHbHbHbHbHbHbHafafafafaaaaaaaaaaaaaaaaafafafafafafafafafafafbHbHeDeDbHbHafafafafafafajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaCaCamamamamamdweNeOePeQeReSdVeGdVdVeTeKeKeqeqeqeqeUdIdjdjdjdjdjdjdjdjaaaaaaaaaaaaaaabababababadadadadadadadaeadadadadadadadadadadadadadadadadaddededeeVeWeXdedededeadadadadadadadadadadadadadadadadadadadadadaeadadadadadabababafafafafafbHbHcucuafababaaaaaaaaaaaaaaaaaaafafafafafafafafafafafafbHeDeDbHbHafafafafafafajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaegegegegegegegameYeYeYeYeYdweZfafbfceRfddVeGfedVdTfffgfgeqeqdXdXdIdIdjdjdjdjdjdjdjdjaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadaddededededefhdedededeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababafafafafafafababaaaaaaaaaaaaaaaaaaafafafajajajafafafafafafbHeDeDbHbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaegegegegegegegameYeYeYeYeYdwdTdTdTfidVfjeRfkdgfmfnfofofpfqeqdXdXfrdIdjdjdjdjdjdjdjdjaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadaddededededededefhdedeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababababababababaaaaaaaaaaaaaaaaaaaaafafafajajajafafafafafbHeDfsftbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaegegegegegegegameYeYeYeYeYfufvfufwfxdVeGdVdVfyfzdTfAfBfCeqeqdXdXfDdIdjdjdjdjdjdjdjdjdjaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadaddedededefhdededededeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababababababaaaaaaaaaaaaaaaaaaaaafafafajajajajajafafafbHfsfteDbHbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaegegegegegegegameYeYeYeYeYdwdwdwdwdVdVeGdgfEdTfFdTeKeKeKdXdXdXdXfGdTdjdjdjdjdjdjdjdjdjdjaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadaddedededededededededeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaafafafafajajajajafafafbHbHeDeDbHbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaegegegegegegegameYeYeYeYeYaaaadwfHdVdVeGfIfJfKfLdTfMfNdXdXdXdXeUdIdIdjdjdjdjdjdjdjdjdjdjamamabababababadadadadadadadadadadadadadadadadadadadadadadadaddededededededededeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaafafafajajajajafafafbHbHeDeDbHbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaegegegegegegegameYeYeYeYeYfOfOfOfPfPfQfRfSfTfTdTfTfTfUdXeqdXdXeUdIdjdjdjdjdjdjdjdjdjdjdjaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadaddedededededeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaafafafafajajajafafafbHbHeDeDbHbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaegegegegegegegameYeYeYeYeYfVfPfWfPfPfXfYfZgagbgcgdgeeKeKdXdXdXdIdIdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadaddededeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaafafafafajajajajafafafbHeDeDbHbHbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaegegegegegegegameYeYeYeYeYfOfTfTfTgffRfTfTggghfSfTfTgieKdXdXdIdIdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaafafafafajajajajafafafbHeDeDbHbHbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaegegegegegegegameYeYeYeYeYfOgjgkglgmgngogpgqgrgsgtfSgugvgwdIdIdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaafafafafajajajajafafafbHeDfsgxftbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaegamamamamamamamgygzgkgAgkgBfTgCgDgDgEgFfTdIdIdIdIdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaafafafajajajajafafafbHfsgxfteDbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaegegamegegegegegdhgHgIgJgKgLfTgMgNgOgPgFfTdIdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaabababadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadanadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaafafafajajajajafafafbHbHbHeDeDbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaegaaaaaaaaaadmetdnfOfOfOfTfTfTfTfTfTfTdIdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaafafafajajajajafafafbHgTeeeeefbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadIdIdIdIdIdIdIdIdIdIdIdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjamamababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaafafafafajajajafafafbHeaesesecbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaafafafafajajajafafafbHbHeDeDbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaabababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadabababababaaaaaaaaaaaaaaafafafafajajajafafafbHbHeDeDbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaaaaaababababababadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaafafafafafajafafafbHbHeDeDbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaafafafafajajafafafbHeDeDbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaaaaaabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaafafajajafafafbHeDeDbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaafajajafafafbHeDeDbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaaaafajajafafafbHeDeDbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaaaaaabababadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaafajajafafafbHeDfsftbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaafajajafafafbHfsfteDbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaaaaaabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababamamamamamamamamafafajajafafafbHbHeDeDbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababazazazazazazazazafafajajafafafbHbHeDeDbHafafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababamamamamamamamamafafajajafafafbHbHeDeDbHafafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaafafajajafafafbHgTeeeeefbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaafafajajafafafbHeaesesecbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaadjdjdjaaaaaaaaaaaaaaaaaaaaaaaaababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaafafafajajafafafbHbHeDeDbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaadjdjdjdjaaaaaaaaaaaaaaaaaaaaaaaaababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaafafafajajafafafbHbHeDeDbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaadjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaababadadadadadadadadadadadadadadadadadadanadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaafafafajajafafafbHgUgVeDbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaadjdjdjdjdjdjamamamamamamamamamababababadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafajajafafafbHeDgUgVbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaadjdjdjdjdjazazazazazazazazazababababadadadaeadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafajafafafbHeDeDbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjamamamamamamamamamababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafbHbHeDeDbHafafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafbHgUgVeDbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafbHeDgUgVbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjgWdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaaadjdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafbHeDeDbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjgXgYdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbHbHbHeDeDbHbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHeDeDbHbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHeDeDbHbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadaeadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHeDeDbHbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHeDeDbHbHbHafafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHbHeDeDbHbHbHafafafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaadjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHbHbHeDeDbHbHbHbHafafafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaaaaaadjdjaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHbHbHeDeDbHbHbHbHbHbHbHbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaadjdjdjdjdjamamamamamamamamamamamabababababaaabababadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHbHbHeDeDbHgTefbHbHbHbHbHbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjdjaadjdjdjdjdjazazazazazazazazazazazabababababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHbHeDfsgxgZhagxgxgxftbHbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjdjabababababababababababababababababababababababababababamamamamamamamamamamamababababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababababaaaaaaaaaaaaaaaaaaaaaabHbHbHbHbHfsgxgxgZhagxgxfteDbHbHbHbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjdjdjdjdjdjdjdjababadadadadadadadadadadadadadadadadadadadabababababababababababababababababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaafafbHbHbHbHbHeaecbHbHeDfsgxftbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjababababababababababadadadadadadadadadadadadadadadadadadadadadadadabababababababababababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaafafafafafafbHbHbHbHbHfsgxfteDbHbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadaeadadadadanadadadadadadadadadaeadadadadadadababababababaaaaaaaaaaaaaaaaaaaaaaafafafafafafafafafbHbHbHeDeDbHbHbHbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababamamamamamamamamamamamafafafafafafafafafafafbHeDfsgxgxftbHbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjabababadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababazazazazazazazazazazazazazazafafafafafafafafafbHfsgxgxfteDbHbHbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababamamamamamamamamamamamamamamamamafafafafafafafafbHbHbHbHeDfsgxgxftbHbHafafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafafafafbHfsgxgxfteDbHbHafafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafafafafbHbHbHbHeDeDbHbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaadeadadadaddedeaaaaaaaaaaaaaaafafafajajajafafafafafafafbHeDfsgxftbHbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadabababaaaaaaaaaaaadedeadadaddededeaaaaaaaaaaaaaaafafafajajajajafafafafafafbHfsgxfteDbHbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaadedeadadaddedeaaaaaaaaaaaaaaaaafafafajajajajafafafafafafbHbHbHeDeDbHbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjdjabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaadedeadadaddedeaaaaaaaaaaaaaaafafafafafajajajajafafafafafbHbHgTeeeeefbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadjdjaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadanadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaadadaddedeaaaaaaaaaaaaafafafafafafafajajajajafafafafafbHbHeaesesecbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafajajajajajajafafafafbHbHbHbHeDeDbHbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafajajajajajafafafbHbHbHbHbHbHeDeDbHbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafajajajajajafafafbHgUgxgxgxgxgVeDbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababababaaaaaaaaaaaaaaaaaaaaaaafafafafafafafajajajajajafafafbHeDgUgxgxgxgxgVbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaafafafafafafafajajajajajafafafbHeDeDbHbHbHbHbHbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaafafafafafafafajajajajajafafafbHeDeDbHbHbHbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaafafafafafafafajajajajafafafbHeDeDbHbHbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaafafafafafafajajajajafafafbHeDeDbHbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaaaaaafafafafafajajafafafafbHeDeDbHbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaabababadadadadaeadadadadadadadadanadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaafafafafajajafafafbHbHeDeDbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaababababadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaaaafafafajajafafafbHgUgVeDbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaafafafajajafafafbHeDgUgVbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaafafafajajafafbHbHeDeDbHbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaafafafajajafafbHgTeeeeefbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaafafafajajafafbHeaesesecbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabafafafabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaafafafafafajajafafbHbHeDeDbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabababadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadababafbHbHafababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababamamamamamamamamamamafafafafafajajafafafbHeDeDbHbHafafafafafajajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabafbHbHbHbHafabadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababazazazazazazazazazafafafafafafajajafafafbHeDeDbHbHbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadabafafbHbHbHbHafabadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababamamamamamamamamamamafafafafafafajajafafafbHeDeDbHbHbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadabafbHbHbHbHafafabadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaaaafafafafajajajajafafafbHeDeDbHbHbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabafbHbHbHbHbHafabadadadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadanadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafajajafafafafafbHeDeDbHbHbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabafbHbHbHbHbHafabadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafajajafafafafafbHeDeDbHbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabafclbHclbHafababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafajajafafafafbHbHeDeDbHbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadaeadadadadadadadadadadadadadadadadadadadadadadadafclhdclbHafababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafajajafafafafbHbHeDeDbHbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadababababadadadadadadadafhehfhgafababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafajajafafafbHbHbHeDeDbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababadadadadadadadadadadadadadadadadadabababafafafafafafafafafafafhehfhhafababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafajajafafafbHbHbHeDeDbHafafafafajajajajajajajajajajajajajajajajajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaabababadadadadadadadadadadadadadadadadadababafbHbHclclhidpdpdpdpdpdphjhfhhafabababadadadadadadadadadadadadadadadadadadanadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadhkhkhkhkhkhkhkadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafajajafafafbHbHbHeDeDbHafafafafajajajajajajajajajajajajajajajajajajajajajajafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababadadadadadadadadadadadadadadadadadabafbHbHbHbHhdhlhlhlhlhlhlhlhmhnhhafababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadhkhohphqhrhohkadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafajajafafafafbHbHeDeDbHafafafafajajajajajajajajajajajajajajajajajajajajafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadabafbHbHbHclcldMdMdMdMdMdMhthfhuhvhwafafafafabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadhkhohxhyhzhAhkadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafajajafafafafbHbHeDeDbHafafafafajajajajajajajajajajajajajajajajajajajajafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadababafbHbHbHafhwhwhwhwhwhwhehfhhhwhwhwbHbHbHafababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadhBhChDadhEhkhkhkhFhkhkhkadadabababaaaaaaaaaaaaaaaaaaaaaaaaafafafafafajajafafafafbHbHeDeDbHafafafafafafajajajajajajajajajajajajajajajajajajafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadabafbHbHafhwhwhwhwhwhwhwhehfhhhwbHbHbHbHbHafafabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadhGhDhHadhEhIhJhEhKhEafafabadabababaaaaaaaaaaaaaaaaaaaaaaafafafafafafajajafafafafafbHeDeDbHbHafafafafafafafajajajajajajajajajajajajajajajajajafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadaeadadadadadadadadababafbHafhwhwhwhwhwhwhwhLhfhhbHbHbHbHbHbHbHafabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadhBdWadhEhMhNhOhKhEbHafafababababaaaaaaaaaaaaaaaaaaaaafafafafafafafajajafafafafafbHeDeDbHbHbHbHafafafafafajajajajajajajajajajajajajajajajajafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababadadadadadadadadadadadadadadadababafafafafafhwhwhwhwclhdclbHbHbHbHbHbHbHafafababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadhPadadhEhEhEhEhQhEbHbHafafafafafaaaaaaaaaaaaaaaaaaaaaaafafafafafafajajafafafafafbHeDeDbHbHbHbHbHbHafafafafajajajajajajajajajajajajajajajajafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadabababababababafhwbHbHclbHclbHbHbHbHbHbHbHbHafababadadadadadadadadadadadadadaeadadadadadadadadadadadadadadababababababadadadadadadadadadadadadadadadadadadadadhRadadhEhIhShEhKevbHbHbHbHbHbHafafaaaaaaaaaaaaaaaaaaaaafafafafafafafafafafafafafbHeDeDbHbHbHbHbHbHbHafafafafafajajajajajajajajajajajajajajafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababadadadadadadadadadadadadadadababababababafbHbHbHbHbHbHbHbHhUhUhUbHbHbHafababadadadadadadadadadadadadadadadadadadadadadadadadadadababababababababababababadadadadadadadadadadadadadadadadhRadadhEhMhNhVhKevbHbHbHbHbHbHbHbHbHaaaaaaaaaaaaaaaaaahXafafafafafafafafafafafbHbHeDeDbHbHbHbHbHbHbHbHbHafafafafajajajajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababadadadadadadadadadadadadadababafafafafafafbHbHbHbHbHbHbHbHhYhZiabHbHbHafababababadadadadadadadadadadadadadadadadadadadadadabababababafafafafafafafabababababababadadadadadadadadadadhEhEibhEhEhEhEhEhEhKevbHbHbHbHbHbHbHbHbHbHbHaaaaaaaaaaaaaaaaaaafafafafafafafbHbHbHbHgTeeeeefbHbHbHbHbHbHbHbHbHafafafafafajajajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababadadadadadadadadadadadadabafafbHbHididididididflflflflididididihbHbHafababababadadadadadadadadadadadadadadadadadadadadadababababafafbHbHbHbHbHafafafafafabababababababadadadadhEhEhEiiijikilhEhIimhEhQhEhEhEevevevhEbHbHbHbHbHbHaaaaaaaaaaaaaaaaaaafafafafafbHbHbHbHbHeaesesecbHbHbHbHbHbHbHbHbHafafafafafajajajajajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababadadadadadadadababafbHbHbHidiqirisfliuiviwixiyfliAiBgGefbHbHafafafafababababababadadadadadadadadadadadadadadabababababafafbHbHbHbHbHbHbHbHbHbHafafafafafabababababadadhEiDiEiFiGiFiHhEhMhNiIhKhEiJiKiLiLiLevbHbHbHbHbHbHbHaaaaaaaaaaaaaaaaaaafafafbHbHbHbHbHbHbHeDiMiNgQgQiQiQbHbHbHbHbHbHafafafafafajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababadadadadadadababafbHbHbHidiRiAiSfliUiUiUiUiViWiAiBiXiYbHbHbHbHbHafafafabababababababadadadadadadadadadadadabababafafafbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHafafabababababadhEiZiFjajbjcjdhEhEhEhEhKhEiJjejejejfevbHbHbHbHbHbHbHaaaaaaaaaaaaaaaaaabHbHbHbHbHbHbHbHgUgxgViQjgjhjijiiQbHjjbHbHbHbHafafafafafajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaababababababababadadadababafbHbHbHidjkiAiAjliAiAiAiAjmfljnjoflecbHbHbHbHbHbHbHafafafafabababababadadadadadadadadababababafafbHbHbHbHbHbHbHbHbHbHgTefbHbHbHbHbHbHafafafafababadhEjpiFjqiFjriFjsjfjtjujvhEjwjejxjejyevbHbHbHbHbHbHaaaaaaaaaaaaaaaaaaaaamaabHbHbHbHbHjzjAgRgRiQjDjEjFjGiQiQiQiQbHbHbHbHafafafafajajajajajajajafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababafafbHbHidjHiAjIgSjKjLjMiAjNidididididgTefbHbHbHbHbHbHbHbHafafafabababadadadadadadadadabababafafbHbHgUgxgxgxgxgxgxgxgxgZhagxgxgxgxftbHbHbHbHafafababhEhEhEhEhEhEhEevhbjQevhbhEhEhEhEhEjRhEhEevevbHbHaaaaaaaaaaaaaaaaaaaaaaamaaaaaabHbHgRgRjVjWjXhcjZkakbkcgQkekfgQefbHbHbHcuafafafafafajajajajajafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababafbHbHidkhiAkiflkjkkkliAkmknkokpkqhsgZhagxgxgxgxgxftbHbHbHbHafafafababadadadadadadabababafafbHbHgUgVgUgxgxgxgxgxgxgxgZhagxgxgxftfsgxftbHbHbHafabababababhEksktkujejykvjfjyjskwkxjejfjyjejekyevevevkAkBkBkBkBkBkBkBkCkCkCkCkCkCkCgRgRgRkFkGkHkIkJkKkakbkbkLkMkNkOiYbHbHbHcuafafafafafajajajajajafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababafbHbHidididididkPkQkRididkSkTkTkTkTgZhagxgxgxgxftfsgxgxftbHbHbHafafabababadadababababafafbHbHgUgVgUgVbHbHbHbHbHbHbHeaecbHbHbHfsgxfteDbHbHbHbHafafafafabhEhEhEhEkUjykVkWkXjukYkZkZlalakZkZlblclblcldldldldldldldldlelelelelelelelflglflglhliljgQlklllmlngQlolpgQecbHbHbHbHafafafafafajajajajajafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababafafbHbHbHbHbHidlqlrlsltidlulvhUbHbHeaecbHbHbHbHfsgxgxfteDbHbHbHbHafafafababababababafafbHbHgUgVgUgVbHbHbHbHafbHbHbHbHbHbHbHbHbHbHeDeDbHbHbHbHbHbHbHafafafafafhEjelwlxlylylxlzlAlBlylylxlxlChThThTlGlGlGlGlGlGlGlGlHlHlHlHlHlHlIhWhWhWlMlNlOlPjzjzjAjzjzjzjzjzjzlQlRlSlRlTcuafafafafafajajajajafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababafafbHbHbHbHidlUlVlWlXidbHbHbHbHbHbHbHbHbHbHbHbHbHbHeDfsftbHbHbHbHbHafafafafafafafafbHbHgUgVgUgVbHbHafafafafafafafbHbHbHbHbHbHbHeDeDbHgTefbHbHbHbHbHbHafafhEhEevlZevhEhEmambmchEhEevmdevhEevbHbHbHaaaaaaaaamaaaaaaamaaaaaaaaaaamaagRgRmgmhmimjmkmlmmmnmomompmqmrmrmrmrlTbHafafafafafajajajajafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababafafbHbHbHididididididbHbHafafafafafafafafafbHbHbHfsftfsgxgxgxftbHbHbHbHbHbHbHbHbHbHbHeDgUgVbHbHafafabababababafbHbHbHbHbHbHbHeDfsgxgZhagxgxgxgxftbHbHafhEmsmtmumvhEmwmxmymzmAhEmBmCmDmEbHbHbHbHbHbHaaaaamaaaaaaamamamamamamamamamjzmFmGmHjzjzjzjzjzjzjzjzjzmIlTlTlTlTbHafafafafafajajajajafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababafbHbHbHbHbHbHbHbHbHbHbHafabababababababafafbHbHbHfsgxgxgxftfsftbHgTefbHbHgUgxgxgxgxgVeDbHbHafafababababababafafbHbHbHbHbHbHfsgxgxgZhagxgxgxfteDbHbHbHhEmJmKmLmMhEmNmAmAmOmPhEmQmRmShEbHbHbHbHbHbHamamamamamamammTmTmTmTmTamaaamjzmUmVmWmXjzmYmZnanbgRndjzbHbHbHbHbHafafafafajajajajajajafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababafbHbHbHbHbHbHbHbHbHafafafabababadadabababafafafbHbHbHbHbHfsftfsgxgZhagxgxgVgUgxgxgxgxgVbHafafababababababababafafafbHbHbHbHbHbHbHeaecbHbHbHeDeDbHbHbHmEhEhEhEhEhEnenfngnhmPhEevnievhEbHbHbHbHbHbHaaaaamaaaaaaammTmTmTmTmTamaagRgRmgnjmWmXhWnlkFkGnmnnnojzbHbHbHbHbHafafafafajajajajajajafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababafafafafbHbHbHbHafafafababadadadadadadadabababafafafbHbHbHbHfsgxgxgZhagxgxgxgVbHbHbHbHbHbHafababababababadadabababafafafafbHbHbHbHbHbHbHbHbHeDfsgxftbHbHbHbHbHbHmEhEhEhEhEhEmEnpnpiYnqbHbHbHbHbHaaaaaaamaaaaaaammTmTmTmTmTicgRientnunjmWnvjznwmgnxnyjznzjzbHbHbHbHafafafafafajajajajajajafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababafafafafafafababababadadadadadadadadababababafafafafbHbHbHbHeaecbHbHbHbHbHbHafafafafafababababababadadadabababababafafafafafafafafbHbHfsgxftfsftbHbHbHbHbHbHbHeaebebebebebebecbHbHbHbHbHbHamamamamamamamammTmTmTmTmTnAmgnAmgnBnCnDnmhWjWmgnEnFgRnojzbHbHbHbHafafafafajajajajajajajafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababadadadadadadadadadadadadabababababafafbHbHbHbHbHbHbHbHbHafafafabababababababadadadadadadadabababababababababababafafbHbHbHfsftfsftnGbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHaaaaaaaaaaaaammTmTmTmTmTgRgRgRnInJnKnLnMnNnOnPnQnRnSnTjzbHbHbHbHafafafafajajajajajajajafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababadadadadadadadadadadadadadadadadadababababafafafbHbHbHafafafafafabababababadadadadadadadadadadadadadababababababababababafbHbHbHbHfsftfsgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxftbHbHbHbHbHbHaaaaaaaaaaammTmTmTmTmTamaagRgRmgnjnUnVnWnXnYnYnZgRnojzbHbHbHbHafafafafajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadabababafafafafafababababababababadadadadadadadadadadadadadadadabababababababababafafafbHbHbHfsgxgxgxgxgxgxgxgxgxgxgxgxgxgxgxfteDbHgTefbHbHbHezezamaaaaammTmTmTmTmTamaaobmmocodnYnZhWoeofoggRgRnojzbHbHbHbHafafafafajajajajajafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadababababababababababababadadadadadadadadadadadadadadadadadadadadadadadadadababababafafafbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHeDfsgxgZhagxgxgxojokolololololololololololomjzonoojWnwjzopoqorosotoujzbHbHafafafafajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababafafafbHbHbHbHbHbHbHafafbHbHbHbHbHbHfsgxgxgZhagxgxgxovokololololololololololololmmowjzgRgRjzoxjzjzjzjzjzjzbHbHafafafafajajajajajajafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababafafafafafafafafafafafbHbHbHbHbHbHbHbHeaecbHbHbHezezamaaaaaaaaaaaaaaaaaaaaamambHbHbHbHjzjzjzbHbHbHbHbHbHbHafafafafajajajajajafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadanadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababababababababababafbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHbHbHbHbHbHbHbHbHbHafafafajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababababababababafbHbHbHbHbHbHbHbHbHbHbHbHafafafafaaaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHbHbHbHbHbHbHbHafafafafajajajajajajafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababababababafafbHbHbHbHbHbHbHbHbHafababababafaaaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHbHbHbHbHbHbHbHafafafafajajajajajafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababababababafafafafafafafafafafafabababababafaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHbHbHbHbHbHbHafafafajajajajajajajafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaabHbHbHbHbHbHbHafafafafafafajajajajajajafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababababababababababababadadababababaaaaaaaaaaaaaaaaaaaaaabHbHafafafafafafafafafafajajajajajajajafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaafafafafafafafafajajajajajajajajafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafajajajajajajajajajafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadanadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafajajajajajajajafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafajajajajafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadanadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadaeadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaabababababababadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadaeadaeadafadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaiahaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagajajajajajajagagagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakalakamaaaaabababababadadadadadadafadadadadadadadadadadadadanadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagajajajajajajajajajajajagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoapaqaramaaababababadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaagagagagagagagajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasatalakamaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadaeadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaagagagagagagajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasauavawamamababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaeadadadadadadadadadadadadadadabababamamamamamamamamamamagagagagagagajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaacacacacacaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxalayabababababadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadafadadadadadadadadadabababazazazazazazazazazazagagagagagagajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaacacacacacaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamaAaBalayabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababamamamamamaCamamamagagagagagajajajajajajajajajajajajajajajajajajajajajajagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamaDaEaFaGayabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaagagagagagajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamaHaIaJayaKaLayayayayadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaMaNasaOaPaQahaRaGayaSaSayadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaTaUaNavaVaWaWaXaGaKaYaZaSayadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaTaUaTasasbbaVaVayaKbcayaSbdayadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaaaaaamagagagagagagagagajajajajajajajajajajajajajajajajajajajajajajajajagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamambebfasbgbhasbbbcbcbibbaKayayayayayayadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababadadadadadababaaaaaaaaaaaaaaaaaaaaaaambjbjbkbjbjbjagagagagagajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamblbmbnasbhasavbobpaKayaWbqaybralaVbsayadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababababababadadadababaaaaaaaaaaaaaaaaaaaaamambjbtbubvbwbjagagagagagagagagagagajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamamamadadayaQbbbxasbnaVbybzbAahaWaVaybralalbsayadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababagagagagagagababadadadababaaaaaaaaaaaaaaaaamamambjbBbCbDbEbjagagagagagagagagagagajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamayayayayayayaPaVbFbbaVbcbGbAbAaXalalaybravaKbsayadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadababagagagbHbHbHbHagagagababadababaaaaaaaaaaaaaaambjbjbjbjbjbIbJbjbjbjbjbjbjbjbjbjbHagagagagajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamaybKbLbMbNayblbObmaybiaybPbPbPayaValalalalbQbpayadadadadadadadadadadadadanadadadadadadadadadadadadadadadadadadababagagbHbHbHbHbHbHbHbHagagababababaaaaaaaaaaaaaaambjbRbSbTbUbVbWbXbYbYbYbZcacbccbjbHbHagagagagagajajajajajajajajajajajajajagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaybKcdcecdcfaKcgbQaKchbpaRciaKbpaRbbayalbcaKaKayadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabagagbHbHbHbHbHbHbHbHbHbHagagababababaaaaaaaaaaaaambjcjbYckbUclcmcnbjbjcocpcqcqcrbjbHbHagagagagagajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaybKcdcscscfbcaKaKaRaGaKaKaKbQaKaKaKayaKbpchaKayadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabagagbHbHbHbHbHbHbHbHbHbHbHctagagagagagaaaaaaaaaaaaambjcucvcwcxcwcyczcAcBcCcDcEcFbHbHbHagagagagagajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaybKcGcscHaycIcJbPbPcJbccJbPbPbPaKaKaycKbQaKbcayadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabagctbHbHbHbHbHbHbHbHbHbHbHbHagagagagaaaaaaaaaaaaaaambjcLbYcMbUbYcNczcOcPcCbHbHbHbHbHagagagagagagajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababayayayayayaycQcJaKaKaKaKbQaKcRbPchbpaycScTcUcVayadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabagctbHbHbHbHbHbHbHbHbHbHbHbHagagagaaaaaaaaaaaaaaamambjcWbYcXbUcYbYczcOcPcCbHbHbHbHbHbHagagagagagajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadaycIcJaKbccZdaaGbpaKbPaKaKayaldbdbdcayddadadadadadadadadadadadadadadadadadadadadadadadadadadadadababagagbHbHbHbHbHbHbHbHbHbHbHbHagagagaaaaaaaaaaaaamamambjbjbUbUbjbjbUdebUcPcCbHbHbHbHbHbHagagagagagajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadaycIcJaKbpaKaKcRaKbccJcIayaybraldbdgdhddddadadadadadadadadadadadadadafadadadadadadadadadadadadadababagagbHbHbHbHbHbHbHbHbHbHbHbHdididjdkdkdkdkdkdkdldidibHbHdmdndobjdpbYdqcPcCbHbHbHbHbHbHbHagagagagajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrdrdrdrdrdrdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadaydscJcJcJcJcJcJcJcJcJcIaybraldtaldcduddddadadadadadadadadadadadadadadadadadadadadadadadadadadabababagbHbHbHbHbHbHbHbHbHbHbHbHbHbHdvdwdwdwdwdwdwdwdwdvbHbHbHdxdxdxbjdydzdAcPcCbHbHbHbHbHbHbHagagagagajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrdrdrdrdrdrdBdBdBdCdrdfdfdfdDdDdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadaydscIcIcIdEdFcIcIcIdsdsaybrdtdtdtbsayddddddadadadadadadadadadadadadadadadadadadadadadadadadadabababagbHbHbHbHbHbHbHbHbHbHbHbHbHdididGdHdHdHdHdHdHdHdidibHbHbHbHbHbjbUdIbUcPdJbHbHbHbHbHbHbHagagagagajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrdKdLdMdNdOdPdQdQdQdrdRdRdRdRdSdDdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababadadadadadadadadadayayayayayayayayayayayayayaycVdTdUayayddddddddadadadadadadadadadadadadadadadadadadadadadadadadabababagbHbHbHbHbHbHbHbHbHbHbHbHbHagaaaaaaaaaaaaaaaaagagagbHbHbHbHbHbHdVdWdXdYdZeabHbHbHbHagagagagagajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaebaaaaaaaaaaaaaadrecedeeefdOegdQeheiejekeleldRdSemdDdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadadddddddaydbdbdtayddddddddddadadadadadadadadadadadadadadadadadadadadadadadadabababagbHbHbHbHbHbHbHbHbHbHbHbHagaaaaaaaaaaaaaaagagagagagagagagbHbHbHbHbHdVenendXbHbHbHagagagagagajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaebaaaaaaaaaadrdrdrdOeoepeqdOeresdOdOdrdrdreteuevdDdDdfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadddddddayewexewayddddddddddadadadadadadadadadadadadadadadadadadadadadadadadadababagbHbHbHbHbHbHbHbHbHbHbHbHagaaaaaaaaaaaaaaagagagagagagagagagagbHbHbHbHeyeybHbHbHbHagagagagagajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaebamebebebebebdrezeAdOeBdQdPeCeDdQeEdOeFeFeFdSeleldDdDdfdfdfeGdfdfdfaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadddddayeHdTeIayddddddddadadadadadadadadadadadadadadadadadadadadadadadadadadababagagbHbHbHbHbHbHbHbHagagagagaaaaaaaaaaaaaaaaagagagagagagagagagagagbHbHeyeybHbHagagagagagagajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaCaCamamamamamdreJeKeLeMeNeOdQeBdQdQePeFeFeleleleleQdDdfdfdfdfdfdfdfdfaaaaaaaaaaaaaaabababababadadadadadadadafadadadadadadadadadadadadadadadadadddddddeReSeTddddddddadadadadadadadadadadadadadadadadadadadadadafadadadadadabababagagagagagbHbHctctagababaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagbHeyeybHbHagagagagagagajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaebebebebebebebameUeUeUeUeUdreVeWeXeYeNeZdQeBfadQdOfbfcfceleldSdSdDdDdfdfdfdfdfdfdfdfaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadddddddddddfdddddddddadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababagagagagagagababaaaaaaaaaaaaaaaaaaagagagajajajagagagagagagbHeyeybHbHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaebebebebebebebameUeUeUeUeUdrdOdOdOfedQffeNfgeqfhfifjfjfkfleldSdSfmdDdfdfdfdfdfdfdfdfaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadddddddddddddddfdddddadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababababababababaaaaaaaaaaaaaaaaaaaaagagagajajajagagagagagbHeyfnfobHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaebebebebebebebameUeUeUeUeUfpfqfpfrfsdQeBdQdQftfudOfvfwfxeleldSdSfydDdfdfdfdfdfdfdfdfdfaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadddddddddfdddddddddddadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababababababaaaaaaaaaaaaaaaaaaaaagagagajajajajajagagagbHfnfoeybHbHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaebebebebebebebameUeUeUeUeUdrdrdrdrdQdQeBeqfzdOfAdOeFeFeFdSdSdSdSfBdOdfdfdfdfdfdfdfdfdfdfaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadddddddddddddddddddddadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaagagagagajajajajagagagbHbHeyeybHbHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaebebebebebebebameUeUeUeUeUaaaadrfCdQdQeBfDfEfFfGdOfHfIdSdSdSdSeQdDdDdfdfdfdfdfdfdfdfdfdfamamabababababadadadadadadadadadadadadadadadadadadadadadadadadddddddddddddddddddadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaagagagajajajajagagagbHbHeyeybHbHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaebebebebebebebameUeUeUeUeUfJfJfJfKfKfLfMfNfOfOdOfOfOfPdSeldSdSeQdDdfdfdfdfdfdfdfdfdfdfdfaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadddddddddddddadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaagagagagajajajagagagbHbHeyeybHbHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaebebebebebebebameUeUeUeUeUfQfKfRfKfKfSfTfUfVfWfXfYfZeFeFdSdSdSdDdDdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadddddddadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaagagagagajajajajagagagbHeyeybHbHbHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaebebebebebebebameUeUeUeUeUfJfOfOfOgafMfOfOgbgcgdfOfOgeeFdSdSdDdDdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaagagagagajajajajagagagbHeyeybHbHbHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaebebebebebebebameUeUeUeUeUfJgfggghgigjgkglgmgngogpgqgrgsgtdDdDdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaagagagagajajajajagagagbHeyfngufobHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaebamamamamamamamgvgwgggxgggyfOgzgAgAgBgCfOdDdDdDdDdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaagagagajajajajagagagbHfngufoeybHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaebebamebebebebebgDgEgFgGgHgIfOgJgKgLgMgCfOdDdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaabababadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadanadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaagagagajajajajagagagbHbHbHeyeybHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaebaaaaaaaaaagNgOgPfJfJfJfOfOfOfOfOfOfOdDdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaagagagajajajajagagagbHgQdZdZeabHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadDdDdDdDdDdDdDdDdDdDdDdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfamamababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaagagagagajajajagagagbHdVenendXbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaagagagagajajajagagagbHbHeyeybHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaabababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadabababababaaaaaaaaaaaaaaagagagagajajajagagagbHbHeyeybHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaaaaaababababababadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaagagagagagajagagagbHbHeyeybHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaagagagagajajagagagbHeyeybHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaaaaaabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaagagajajagagagbHeyeybHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaaaaaaaababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaagajajagagagbHeyeybHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaaaagajajagagagbHeyeybHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaaaaaabababadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaagajajagagagbHeyfnfobHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaagajajagagagbHfnfoeybHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaaaaaabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababamamamamamamamamagagajajagagagbHbHeyeybHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababazazazazazazazazagagajajagagagbHbHeyeybHagagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababamamamamamamamamagagajajagagagbHbHeyeybHagagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaagagajajagagagbHgQdZdZeabHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaagagajajagagagbHdVenendXbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaadfdfdfaaaaaaaaaaaaaaaaaaaaaaaaababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaagagagajajagagagbHbHeyeybHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaadfdfdfdfaaaaaaaaaaaaaaaaaaaaaaaaababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaagagagajajagagagbHbHeyeybHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaadfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaababadadadadadadadadadadadadadadadadadadanadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaagagagajajagagagbHgRgSeybHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaadfdfdfdfdfdfamamamamamamamamamababababadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagajajagagagbHeygRgSbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaadfdfdfdfdfazazazazazazazazazababababadadadafadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagajagagagbHeyeybHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfamamamamamamamamamababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagbHbHeyeybHagagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagbHgRgSeybHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagbHeygRgSbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfgTdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaaadfdfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagbHeyeybHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfgUgVdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagbHbHbHeyeybHbHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHeyeybHbHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHeyeybHbHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadafadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHeyeybHbHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHeyeybHbHbHagagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHbHeyeybHbHbHagagagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaadfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHbHbHeyeybHbHbHbHagagagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaaaaaadfdfaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHbHbHeyeybHbHbHbHbHbHbHbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaadfdfdfdfdfamamamamamamamamamamamabababababaaabababadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHbHbHeyeybHgQeabHbHbHbHbHbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfdfaadfdfdfdfdfazazazazazazazazazazazabababababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHbHeyfngugWgXgugugufobHbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfdfabababababababababababababababababababababababababababamamamamamamamamamamamababababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababababaaaaaaaaaaaaaaaaaaaaaabHbHbHbHbHfngugugWgXgugufoeybHbHbHbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfdfdfdfdfdfdfdfababadadadadadadadadadadadadadadadadadadadabababababababababababababababababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaagagbHbHbHbHbHdVdXbHbHeyfngufobHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfababababababababababadadadadadadadadadadadadadadadadadadadadadadadabababababababababababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaagagagagagagbHbHbHbHbHfngufoeybHbHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadafadadadadanadadadadadadadadadafadadadadadadababababababaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagbHbHbHeyeybHbHbHbHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababamamamamamamamamamamamagagagagagagagagagagagbHeyfngugufobHbHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfabababadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababazazazazazazazazazazazazazazagagagagagagagagagbHfngugufoeybHbHbHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababamamamamamamamamamamamamamamamamagagagagagagagagbHbHbHbHeyfngugufobHbHagagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagbHfngugufoeybHbHagagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagbHbHbHbHeyeybHbHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaddadadadadddddaaaaaaaaaaaaaaagagagajajajagagagagagagagbHeyfngufobHbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadabababaaaaaaaaaaaaddddadadadddddddaaaaaaaaaaaaaaagagagajajajajagagagagagagbHfngufoeybHbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaddddadadadddddaaaaaaaaaaaaaaaaagagagajajajajagagagagagagbHbHbHeyeybHbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfdfabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaddddadadadddddaaaaaaaaaaaaaaagagagagagajajajajagagagagagbHbHgQdZdZeabHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfdfaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadanadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaadadadddddaaaaaaaaaaaaagagagagagagagajajajajagagagagagbHbHdVenendXbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagajajajajajajagagagagbHbHbHbHeyeybHbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagajajajajajagagagbHbHbHbHbHbHeyeybHbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagajajajajajagagagbHgRgugugugugSeybHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababababaaaaaaaaaaaaaaaaaaaaaaagagagagagagagajajajajajagagagbHeygRgugugugugSbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaagagagagagagagajajajajajagagagbHeyeybHbHbHbHbHbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaagagagagagagagajajajajajagagagbHeyeybHbHbHbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaagagagagagagagajajajajagagagbHeyeybHbHbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaagagagagagagajajajajagagagbHeyeybHbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaaaaaagagagagagajajagagagagbHeyeybHbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaabababadadadadafadadadadadadadadanadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaagagagagajajagagagbHbHeyeybHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaababababadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaaaagagagajajagagagbHgRgSeybHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaagagagajajagagagbHeygRgSbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaagagagajajagagbHbHeyeybHbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaagagagajajagagbHgQdZdZeabHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaagagagajajagagbHdVenendXbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabagagagabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaagagagagagajajagagbHbHeyeybHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabababadadadadadadadadafadadadadadadadadadadadadadadadadadadadadababagbHbHagababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababamamamamamamamamamamagagagagagajajagagagbHeyeybHbHagagagagagajajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabagbHbHbHbHagabadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababazazazazazazazazazagagagagagagajajagagagbHeyeybHbHbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadabagagbHbHbHbHagabadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababamamamamamamamamamamagagagagagagajajagagagbHeyeybHbHbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadabagbHbHbHbHagagabadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaaaagagagagajajajajagagagbHeyeybHbHbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabagbHbHbHbHbHagabadadadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadanadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagajajagagagagagbHeyeybHbHbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabagbHbHbHbHbHagabadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagajajagagagagagbHeyeybHbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabagdibHdibHagababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagajajagagagagbHbHeyeybHbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadafadadadadadadadadadadadadadadadadadadadadadadadagdigYdibHagababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagajajagagagagbHbHeyeybHbHagagagagajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadababababadadadadadadadaggZhahbagababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagajajagagagbHbHbHeyeybHagagagagajajajajajajajajajajajajajajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababadadadadadadadadadadadadadadadadadabababagagagagagagagagagagaggZhahcagababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagajajagagagbHbHbHeyeybHagagagagajajajajajajajajajajajajajajajajajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaabababadadadadadadadadadadadadadadadadadababagbHbHdidihddkdkdkdkdkdkhehahcagabababadadadadadadadadadadadadadadadadadadanadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadhfhfhfhfhfhfhfadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagajajagagagbHbHbHeyeybHagagagagajajajajajajajajajajajajajajajajajajajajajajagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababadadadadadadadadadadadadadadadadadabagbHbHbHbHgYhghghghghghghghhhihcagababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadhfhjhkhlhmhjhfadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagajajagagagagbHbHeyeybHagagagagajajajajajajajajajajajajajajajajajajajajagagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadabagbHbHbHdididHdHdHdHdHdHhnhahohphqagagagagabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadhfhjhrhshthuhfadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagajajagagagagbHbHeyeybHagagagagajajajajajajajajajajajajajajajajajajajajagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadababagbHbHbHaghqhqhqhqhqhqgZhahchqhqhqbHbHbHagababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadhvhwhxadhyhfhfhfhzhfhfhfadadabababaaaaaaaaaaaaaaaaaaaaaaaaagagagagagajajagagagagbHbHeyeybHagagagagagagajajajajajajajajajajajajajajajajajajagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadabagbHbHaghqhqhqhqhqhqhqgZhahchqbHbHbHbHbHagagabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadhAhxhBadhyhChDhyhEhyagagabadabababaaaaaaaaaaaaaaaaaaaaaaagagagagagagajajagagagagagbHeyeybHbHagagagagagagagajajajajajajajajajajajajajajajajajagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadafadadadadadadadadababagbHaghqhqhqhqhqhqhqhFhahcbHbHbHbHbHbHbHagabababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadhvdRadhyhGhHhIhEhybHagagababababaaaaaaaaaaaaaaaaaaaaagagagagagagagajajagagagagagbHeyeybHbHbHbHagagagagagajajajajajajajajajajajajajajajajajagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababadadadadadadadadadadadadadadadababagagagagaghqhqhqhqdigYdibHbHbHbHbHbHbHagagababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadhJadadhyhyhyhyhKhybHbHagagagagagaaaaaaaaaaaaaaaaaaaaaaagagagagagagajajagagagagagbHeyeybHbHbHbHbHbHagagagagajajajajajajajajajajajajajajajajagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadabababababababaghqbHbHdibHdibHbHbHbHbHbHbHbHagababadadadadadadadadadadadadadafadadadadadadadadadadadadadadababababababadadadadadadadadadadadadadadadadadadadadhLadadhyhChMhyhEhNbHbHbHbHbHbHagagaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagagbHeyeybHbHbHbHbHbHbHagagagagagajajajajajajajajajajajajajajagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababadadadadadadadadadadadadadadababababababagbHbHbHbHbHbHbHbHhOhOhObHbHbHagababadadadadadadadadadadadadadadadadadadadadadadadadadadababababababababababababadadadadadadadadadadadadadadadadhLadadhyhGhHhPhEhNbHbHbHbHbHbHbHbHbHaaaaaaaaaaaaaaaaaahQagagagagagagagagagagagbHbHeyeybHbHbHbHbHbHbHbHbHagagagagajajajajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababadadadadadadadadadadadadadababagagagagagagbHbHbHbHbHbHbHbHhRhShTbHbHbHagababababadadadadadadadadadadadadadadadadadadadadadabababababagagagagagagagabababababababadadadadadadadadadadhyhyhUhyhyhyhyhyhyhEhNbHbHbHbHbHbHbHbHbHbHbHaaaaaaaaaaaaaaaaaaagagagagagagagbHbHbHbHgQdZdZeabHbHbHbHbHbHbHbHbHagagagagagajajajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababadadadadadadadadadadadadabagagbHbHhVhVhVhVhVhVhWhWhWhWhVhVhVhVhXbHbHagababababadadadadadadadadadadadadadadadadadadadadadababababagagbHbHbHbHbHagagagagagabababababababadadadadhyhyhyhYhZiaibhyhCichyhKhyhyhyhNhNhNhybHbHbHbHbHbHaaaaaaaaaaaaaaaaaaagagagagagbHbHbHbHbHdVenendXbHbHbHbHbHbHbHbHbHagagagagagajajajajajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababadadadadadadadababagbHbHbHhVidieifhWigihiiijikhWilimineabHbHagagagagababababababadadadadadadadadadadadadadadabababababagagbHbHbHbHbHbHbHbHbHbHagagagagagabababababadadhyioipiqiriqishyhGhHithEhyiuiviwiwiwhNbHbHbHbHbHbHbHaaaaaaaaaaaaaaaaaaagagagbHbHbHbHbHbHbHeyixiyiziziAiAbHbHbHbHbHbHagagagagagajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababadadadadadadababagbHbHbHhViBiliChWiDiDiDiDiEiFilimiGiHbHbHbHbHbHagagagabababababababadadadadadadadadadadadabababagagagbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHagagabababababadhyiIiqiJiKiLiMhyhyhyhyhEhyiuiNiNiNiOhNbHbHbHbHbHbHbHaaaaaaaaaaaaaaaaaabHbHbHbHbHbHbHbHgRgugSiAiPiQiRiRiAbHiSbHbHbHbHagagagagagajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaababababababababadadadababagbHbHbHhViTililiUililililiVhWiWiXhWdXbHbHbHbHbHbHbHagagagagabababababadadadadadadadadababababagagbHbHbHbHbHbHbHbHbHbHgQeabHbHbHbHbHbHagagagagababadhyiYiqiZiqjaiqjbiOjcjdjehyjfiNjgiNjhhNbHbHbHbHbHbHaaaaaaaaaaaaaaaaaaaaamaabHbHbHbHbHjijjjkjkiAjljmjnjoiAiAiAiAbHbHbHbHagagagagajajajajajajajagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababagagbHbHhVjpiljqjrjsjtjuiljvhVhVhVhVhVgQeabHbHbHbHbHbHbHbHagagagabababadadadadadadadadabababagagbHbHgRgugugugugugugugugWgXgugugugufobHbHbHbHagagababhyhyhyhyhyhyhyhNjwjxhNjwhyhyhyhyhyjyhyhyhNhNbHbHaaaaaaaaaaaaaaaaaaaaaaamaaaaaabHbHjkjkjzjAjBjCjDjEjFjGizjHjIizeabHbHbHctagagagagagajajajajajagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababagbHbHhVjJiljKhWjLjMjNiljOjPjQjRjSjTgWgXgugugugugufobHbHbHbHagagagababadadadadadadabababagagbHbHgRgSgRgugugugugugugugWgXgugugufofngufobHbHbHagabababababhyjUjVjWiNjhjXiOjhjbjYjZiNiOjhiNiNkahNhNhNkbkckckckckckckckdkdkdkdkdkdkdjkjkjkkekfkgkhkikjjEjFjFkkklkmkniHbHbHbHctagagagagagajajajajajagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababagbHbHhVhVhVhVhVkokpkqhVhVkrksksksksgWgXgugugugufofngugufobHbHbHagagabababadadababababagagbHbHgRgSgRgSbHbHbHbHbHbHbHdVdXbHbHbHfngufoeybHbHbHbHagagagagabhyhyhyhyktjhkukvkwjdkxkykykzkzkykykAkBkAkBkCkCkCkCkCkCkCkCkDkDkDkDkDkDkDkEkFkEkFkGkHkIizkJkKkLkMizkNkOizdXbHbHbHbHagagagagagajajajajajagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababagagbHbHbHbHbHhVkPkQkRkShVkTkUhObHbHdVdXbHbHbHbHfngugufoeybHbHbHbHagagagababababababagagbHbHgRgSgRgSbHbHbHbHagbHbHbHbHbHbHbHbHbHbHeyeybHbHbHbHbHbHbHagagagagaghyiNkVkWkXkXkWkYkZlakXkXkWkWlblclclcldldldldldldldldlelelelelelelflglglglhliljlkjijijjjijijijijijilllmlnlmloctagagagagagajajajajagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababagagbHbHbHbHhVlplqlrlshVbHbHbHbHbHbHbHbHbHbHbHbHbHbHeyfnfobHbHbHbHbHagagagagagagagagbHbHgRgSgRgSbHbHagagagagagagagbHbHbHbHbHbHbHeyeybHgQeabHbHbHbHbHbHagaghyhyhNlthNhyhylulvlwhyhyhNlxhNhyhNbHbHbHaaaaaaaaamaaaaaaamaaaaaaaaaaamaajkjklylzlAlBlClDlElFlGlGlHlIlJlJlJlJlobHagagagagagajajajajagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababagagbHbHbHhVhVhVhVhVhVbHbHagagagagagagagagagbHbHbHfnfofngugugufobHbHbHbHbHbHbHbHbHbHbHeygRgSbHbHagagabababababagbHbHbHbHbHbHbHeyfngugWgXgugugugufobHbHaghylKlLlMlNhylOlPlQlRlShylTlUlVlWbHbHbHbHbHbHaaaaamaaaaaaamamamamamamamamamjilXlYlZjijijijijijijijijimalolololobHagagagagagajajajajagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababagbHbHbHbHbHbHbHbHbHbHbHagabababababababagagbHbHbHfngugugufofnfobHgQeabHbHgRgugugugugSeybHbHagagababababababagagbHbHbHbHbHbHfngugugWgXgugugufoeybHbHbHhymbmcmdmehymflSlSmgmhhymimjmkhybHbHbHbHbHbHamamamamamamammlmlmlmlmlamaaamjimmmnmompjimqmrmsmtjkmujibHbHbHbHbHagagagagajajajajajajagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababagbHbHbHbHbHbHbHbHbHagagagabababadadabababagagagbHbHbHbHbHfnfofngugWgXgugugSgRgugugugugSbHagagababababababababagagagbHbHbHbHbHbHbHdVdXbHbHbHeyeybHbHbHlWhyhyhyhyhymvmwmxmymhhyhNmzhNhybHbHbHbHbHbHaaaaamaaaaaaammlmlmlmlmlamaajkjklymAmomplgmBkekfmCmDmEjibHbHbHbHbHagagagagajajajajajajagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababagagagagbHbHbHbHagagagababadadadadadadadabababagagagbHbHbHbHfngugugWgXgugugugSbHbHbHbHbHbHagababababababadadabababagagagagbHbHbHbHbHbHbHbHbHeyfngufobHbHbHbHbHbHlWhyhyhyhyhylWmFmFiHmGbHbHbHbHbHaaaaaaamaaaaaaammlmlmlmlmlmHjkmImJmKmAmomLjimMlymNmOjimPjibHbHbHbHagagagagagajajajajajajagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababagagagagagagababababadadadadadadadadababababagagagagbHbHbHbHdVdXbHbHbHbHbHbHagagagagagababababababadadadabababababagagagagagagagagbHbHfngufofnfobHbHbHbHbHbHbHdVdWdWdWdWdWdWdXbHbHbHbHbHbHamamamamamamamammlmlmlmlmlmQlymQlymRmSmTmClgjAlymUmVjkmEjibHbHbHbHagagagagajajajajajajajagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababadadadadadadadadadadadadabababababagagbHbHbHbHbHbHbHbHbHagagagabababababababadadadadadadadabababababababababababagagbHbHbHfnfofnfomWbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHaaaaaaaaaaaaammlmlmlmlmljkjkjkmXmYmZnanbncndnenfngnhnijibHbHbHbHagagagagajajajajajajajagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababadadadadadadadadadadadadadadadadadababababagagagbHbHbHagagagagagabababababadadadadadadadadadadadadadababababababababababagbHbHbHbHfnfofngugugugugugugugugugugugugugugufobHbHbHbHbHbHaaaaaaaaaaammlmlmlmlmlamaajkjklymAnjnknlnmnnnnnojkmEjibHbHbHbHagagagagajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadabababagagagagagababababababababadadadadadadadadadadadadadadadabababababababababagagagbHbHbHfngugugugugugugugugugugugugugugufoeybHgQeabHbHbHeueuamaaaaammlmlmlmlmlamaanplEnqnrnnnolgnsntnujkjkmEjibHbHbHbHagagagagajajajajajagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadababababababababababababadadadadadadadadadadadadadadadadadadadadadadadadadababababagagagbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHeyfngugWgXgugugunvnwnxnxnxnxnxnxnxnxnxnxnxnyjinznAjAmMjinBnCnDnEnFnGjibHbHagagagagajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababagagagbHbHbHbHbHbHbHagagbHbHbHbHbHbHfngugugWgXgugugunHnwnxnxnxnxnxnxnxnxnxnxnxnxlEnIjijkjkjinJjijijijijijibHbHagagagagajajajajajajagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababagagagagagagagagagagagbHbHbHbHbHbHbHbHdVdXbHbHbHeueuamaaaaaaaaaaaaaaaaaaaaamambHbHbHbHjijijibHbHbHbHbHbHbHagagagagajajajajajagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadanadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababababababababababagbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHbHaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHbHbHbHbHbHbHbHbHbHagagagajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababababababababagbHbHbHbHbHbHbHbHbHbHbHbHagagagagaaaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHbHbHbHbHbHbHbHagagagagajajajajajajagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababababababagagbHbHbHbHbHbHbHbHbHagababababagaaaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHbHbHbHbHbHbHbHagagagagajajajajajagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababababababagagagagagagagagagagagabababababagaaaaaaaaaaaaaaaaaaaaaaaabHbHbHbHbHbHbHbHbHbHagagagajajajajajajajagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaabHbHbHbHbHbHbHagagagagagagajajajajajajagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababababababababababababadadababababaaaaaaaaaaaaaaaaaaaaaabHbHagagagagagagagagagagajajajajajajajagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagajajajajajajajajagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagajajajajajajajajajagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababadadadadadadadadadadadadadadadadadadanadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagajajajajajajajagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagajajajajagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagagagagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadanadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaababababababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadanadadadadadadadadadadadadadadadadababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -964,4 +968,3 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}
-
diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm
index f7098594a93..abf71c4ea0d 100644
--- a/code/ATMOSPHERICS/atmospherics.dm
+++ b/code/ATMOSPHERICS/atmospherics.dm
@@ -93,14 +93,11 @@ Pipelines + Other Objects -> Pipe network
return ..()
/obj/machinery/atmospherics/Deconstruct()
- var/turf/T = loc
- stored.loc = T
- transfer_fingerprints_to(stored)
- if(istype(src, /obj/machinery/atmospherics/pipe))
- for(var/obj/machinery/meter/meter in T)
- if(meter.target == src)
- new /obj/item/pipe_meter(T)
- qdel(meter)
+ if(can_unwrench)
+ var/turf/T = loc
+ stored.loc = T
+ transfer_fingerprints_to(stored)
+
qdel(src)
/obj/machinery/atmospherics/proc/nullifyPipenet(datum/pipeline/P)
@@ -127,7 +124,7 @@ Pipelines + Other Objects -> Pipe network
return img
-/obj/machinery/atmospherics/proc/construction(D, P)
+/obj/machinery/atmospherics/construction(D, P)
dir = D
initialize_directions = P
var/turf/T = loc
diff --git a/code/ATMOSPHERICS/pipes.dm b/code/ATMOSPHERICS/pipes.dm
index 7884a5ad12c..571b32cbc48 100644
--- a/code/ATMOSPHERICS/pipes.dm
+++ b/code/ATMOSPHERICS/pipes.dm
@@ -34,10 +34,19 @@
if(istype(W, /obj/item/device/analyzer))
atmosanalyzer_scan(parent.air, user)
- if(istype(W,/obj/item/device/pipe_painter))
+ if(istype(W,/obj/item/device/pipe_painter) || istype(W,/obj/item/weapon/pipe_dispenser))
return
return ..()
/obj/machinery/atmospherics/pipe/setPipenet(datum/pipeline/P)
- parent = P
\ No newline at end of file
+ parent = P
+
+/obj/machinery/atmospherics/pipe/Destroy()
+ var/turf/T = loc
+ for(var/obj/machinery/meter/meter in T)
+ if(meter.target == src)
+ var/obj/item/pipe_meter/PM = new (T)
+ meter.transfer_fingerprints_to(PM)
+ qdel(meter)
+ ..()
diff --git a/code/ATMOSPHERICS/pipes/manifold.dm b/code/ATMOSPHERICS/pipes/manifold.dm
index 29f16311b63..434a4b3c9e7 100644
--- a/code/ATMOSPHERICS/pipes/manifold.dm
+++ b/code/ATMOSPHERICS/pipes/manifold.dm
@@ -25,6 +25,8 @@
/obj/machinery/atmospherics/pipe/manifold/New()
color = pipe_color
+ ..()
+
switch(dir)
if(NORTH)
initialize_directions = EAST|SOUTH|WEST
@@ -34,7 +36,6 @@
initialize_directions = SOUTH|WEST|NORTH
if(WEST)
initialize_directions = NORTH|EAST|SOUTH
- ..()
/obj/machinery/atmospherics/pipe/manifold/initialize()
for(var/D in cardinal)
diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm
index 9875fd0a84c..206536abb4a 100644
--- a/code/__DEFINES/combat.dm
+++ b/code/__DEFINES/combat.dm
@@ -14,6 +14,7 @@
#define STUTTER "stutter"
#define EYE_BLUR "eye_blur"
#define DROWSY "drowsy"
+#define JITTER "jitter"
//I hate adding defines like this but I'd much rather deal with bitflags than lists and string searches
#define BRUTELOSS 1
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index a85c69e7b81..928561abe94 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -1314,44 +1314,32 @@ var/global/list/common_tools = list(
Checks if that loc and dir has a item on the wall
*/
var/list/WALLITEMS = list(
- "/obj/machinery/power/apc", "/obj/machinery/alarm", "/obj/item/device/radio/intercom",
- "/obj/structure/extinguisher_cabinet", "/obj/structure/reagent_dispensers/peppertank",
- "/obj/machinery/status_display", "/obj/machinery/requests_console", "/obj/machinery/light_switch", "/obj/effect/sign",
- "/obj/machinery/newscaster", "/obj/machinery/firealarm", "/obj/structure/noticeboard", "/obj/machinery/door_control",
- "/obj/machinery/computer/security/telescreen", "/obj/machinery/embedded_controller/radio/simple_vent_controller",
- "/obj/item/weapon/storage/secure/safe", "/obj/machinery/door_timer", "/obj/machinery/flasher", "/obj/machinery/keycard_auth",
- "/obj/structure/mirror", "/obj/structure/closet/fireaxecabinet", "/obj/machinery/computer/security/telescreen/entertainment"
+ /obj/machinery/power/apc, /obj/machinery/alarm, /obj/item/device/radio/intercom,
+ /obj/structure/extinguisher_cabinet, /obj/structure/reagent_dispensers/peppertank,
+ /obj/machinery/status_display, /obj/machinery/requests_console, /obj/machinery/light_switch, /obj/structure/sign,
+ /obj/machinery/newscaster, /obj/machinery/firealarm, /obj/structure/noticeboard, /obj/machinery/door_control,
+ /obj/machinery/computer/security/telescreen, /obj/machinery/embedded_controller/radio/simple_vent_controller,
+ /obj/item/weapon/storage/secure/safe, /obj/machinery/door_timer, /obj/machinery/flasher, /obj/machinery/keycard_auth,
+ /obj/structure/mirror, /obj/structure/closet/fireaxecabinet, /obj/machinery/computer/security/telescreen/entertainment
)
/proc/gotwallitem(loc, dir)
+ var/locdir = get_step(loc, dir)
for(var/obj/O in loc)
- for(var/item in WALLITEMS)
- if(istype(O, text2path(item)))
- //Direction works sometimes
- if(O.dir == dir)
- return 1
-
- //Some stuff doesn't use dir properly, so we need to check pixel instead
- switch(dir)
- if(SOUTH)
- if(O.pixel_y > 10)
- return 1
- if(NORTH)
- if(O.pixel_y < -10)
- return 1
- if(WEST)
- if(O.pixel_x > 10)
- return 1
- if(EAST)
- if(O.pixel_x < -10)
- return 1
+ if(is_type_in_list(O, WALLITEMS))
+ //Direction works sometimes
+ if(O.dir == dir)
+ return 1
+ //Some stuff doesn't use dir properly, so we need to check pixel instead
+ //That's exactly what get_wall_mounted_turf() does
+ if(get_wall_mounted_turf(O) == locdir)
+ return 1
//Some stuff is placed directly on the wallturf (signs)
- for(var/obj/O in get_step(loc, dir))
- for(var/item in WALLITEMS)
- if(istype(O, text2path(item)))
- if(O.pixel_x == 0 && O.pixel_y == 0)
- return 1
+ for(var/obj/O in locdir)
+ if(is_type_in_list(O, WALLITEMS))
+ if(O.pixel_x == 0 && O.pixel_y == 0)
+ return 1
return 0
/proc/format_text(text)
@@ -1405,3 +1393,21 @@ var/list/WALLITEMS = list(
step(AM, pick(alldirs))
chance = max(chance - (initial_chance / steps), 0)
steps--
+
+/proc/get_wall_mounted_turf(atom/A)
+ /* This proc uses the pixel_x/y vars to guess the fake turf of a wall mounted atom.
+ Needless to say, this is an error prone method and possibly open to exploits.
+ It is however faster than using icon procs to get a more accurate reading.
+ I've only tested this proc on APCs. Use it with care.*/
+ if(is_type_in_list(A, WALLITEMS))
+ var/stepdir = 0
+
+ if(A.pixel_x > 10) stepdir |= EAST
+ if(A.pixel_x < -10) stepdir |= WEST
+ if(A.pixel_y > 10) stepdir |= NORTH
+ if(A.pixel_y < -10) stepdir |= SOUTH
+
+ if(stepdir)
+ return get_step(A, stepdir)
+ return get_turf(A)
+
diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm
index 0501caf3db1..127acb23565 100644
--- a/code/controllers/configuration.dm
+++ b/code/controllers/configuration.dm
@@ -109,6 +109,7 @@
var/rename_cyborg = 0
var/ooc_during_round = 0
+ var/emojis = 0
//Used for modifying movement speed for mobs.
//Unversal modifiers
@@ -300,6 +301,8 @@
config.rename_cyborg = 1
if("ooc_during_round")
config.ooc_during_round = 1
+ if("emojis")
+ config.emojis = 1
if("run_delay")
config.run_speed = text2num(value)
if("walk_delay")
diff --git a/code/controllers/voting.dm b/code/controllers/voting.dm
index 1af635b5d18..c9754a87c48 100644
--- a/code/controllers/voting.dm
+++ b/code/controllers/voting.dm
@@ -176,7 +176,7 @@ var/datum/controller/vote/vote = new()
if(mode == "custom")
text += "\n[question]"
log_vote(text)
- world << "\n[text]\nType vote to place your votes.\nYou have [config.vote_period/10] seconds to vote."
+ world << "\n[text]\nType vote or click here to place your votes.\nYou have [config.vote_period/10] seconds to vote."
time_remaining = round(config.vote_period/10)
return 1
return 0
diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm
index e98fec043ed..368a3e69c93 100644
--- a/code/datums/datacore.dm
+++ b/code/datums/datacore.dm
@@ -79,6 +79,105 @@
if(foundrecord)
foundrecord.fields["rank"] = assignment
+/obj/effect/datacore/proc/get_manifest(monochrome, OOC)
+ var/list/heads = list()
+ var/list/sec = list()
+ var/list/eng = list()
+ var/list/med = list()
+ var/list/sci = list()
+ var/list/civ = list()
+ var/list/bot = list()
+ var/list/misc = list()
+ var/dat = {"
+
+
+ | Name | Rank |
+ "}
+ var/even = 0
+ // sort mobs
+ for(var/datum/data/record/t in data_core.general)
+ var/name = t.fields["name"]
+ var/rank = t.fields["rank"]
+ var/department = 0
+ if(rank in command_positions)
+ heads[name] = rank
+ department = 1
+ if(rank in security_positions)
+ sec[name] = rank
+ department = 1
+ if(rank in engineering_positions)
+ eng[name] = rank
+ department = 1
+ if(rank in medical_positions)
+ med[name] = rank
+ department = 1
+ if(rank in science_positions)
+ sci[name] = rank
+ department = 1
+ if(rank in civilian_positions)
+ civ[name] = rank
+ department = 1
+ if(rank in nonhuman_positions)
+ bot[name] = rank
+ department = 1
+ if(!department && !(name in heads))
+ misc[name] = rank
+ if(heads.len > 0)
+ dat += "| Heads |
"
+ for(name in heads)
+ dat += "| [name] | [heads[name]] |
"
+ even = !even
+ if(sec.len > 0)
+ dat += "| Security |
"
+ for(name in sec)
+ dat += "| [name] | [sec[name]] |
"
+ even = !even
+ if(eng.len > 0)
+ dat += "| Engineering |
"
+ for(name in eng)
+ dat += "| [name] | [eng[name]] |
"
+ even = !even
+ if(med.len > 0)
+ dat += "| Medical |
"
+ for(name in med)
+ dat += "| [name] | [med[name]] |
"
+ even = !even
+ if(sci.len > 0)
+ dat += "| Science |
"
+ for(name in sci)
+ dat += "| [name] | [sci[name]] |
"
+ even = !even
+ if(civ.len > 0)
+ dat += "| Civilian |
"
+ for(name in civ)
+ dat += "| [name] | [civ[name]] |
"
+ even = !even
+ // in case somebody is insane and added them to the manifest, why not
+ if(bot.len > 0)
+ dat += "| Silicon |
"
+ for(name in bot)
+ dat += "| [name] | [bot[name]] |
"
+ even = !even
+ // misc guys
+ if(misc.len > 0)
+ dat += "| Miscellaneous |
"
+ for(name in misc)
+ dat += "| [name] | [misc[name]] |
"
+ even = !even
+
+ dat += "
"
+ dat = replacetext(dat, "\n", "")
+ dat = replacetext(dat, "\t", "")
+ return dat
+
+
var/record_id_num = 1001
/obj/effect/datacore/proc/manifest_inject(var/mob/living/carbon/human/H)
if(H.mind && (H.mind.assigned_role != "MODE"))
diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm
index d6cd804fe4f..932d76f958f 100644
--- a/code/datums/supplypacks.dm
+++ b/code/datums/supplypacks.dm
@@ -219,9 +219,9 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine
/datum/supply_packs/security/taser
name = "Stun Guns Crate"
- contains = list(/obj/item/weapon/gun/energy/taser,
- /obj/item/weapon/gun/energy/taser,
- /obj/item/weapon/gun/energy/taser)
+ contains = list(/obj/item/weapon/gun/energy/gun/advtaser,
+ /obj/item/weapon/gun/energy/gun/advtaser,
+ /obj/item/weapon/gun/energy/gun/advtaser)
cost = 15
containername = "stun gun crate"
diff --git a/code/datums/wires/autolathe.dm b/code/datums/wires/autolathe.dm
index ccfa7f10221..80f5b4ace97 100644
--- a/code/datums/wires/autolathe.dm
+++ b/code/datums/wires/autolathe.dm
@@ -27,7 +27,7 @@ var/const/AUTOLATHE_DISABLE_WIRE = 4
var/obj/machinery/autolathe/A = holder
switch(index)
if(AUTOLATHE_HACK_WIRE)
- A.hacked = !mended
+ A.adjust_hacked(!mended)
if(AUTOLATHE_SHOCK_WIRE)
A.shocked = !mended
if(AUTOLATHE_DISABLE_WIRE)
@@ -39,10 +39,10 @@ var/const/AUTOLATHE_DISABLE_WIRE = 4
var/obj/machinery/autolathe/A = holder
switch(index)
if(AUTOLATHE_HACK_WIRE)
- A.hacked = !A.hacked
+ A.adjust_hacked(!A.hacked)
spawn(50)
if(A && !IsIndexCut(index))
- A.hacked = 0
+ A.adjust_hacked(0)
Interact(usr)
if(AUTOLATHE_SHOCK_WIRE)
A.shocked = !A.shocked
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index b1ae4c99fd7..f0443ee1683 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -395,4 +395,7 @@ var/list/blood_splatter_icons = list()
return
/atom/proc/emag_act()
- return
+ return
+
+/atom/proc/narsie_act()
+ return
\ No newline at end of file
diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm
index 16d32663163..84f5828ea77 100644
--- a/code/game/gamemodes/nuclear/pinpointer.dm
+++ b/code/game/gamemodes/nuclear/pinpointer.dm
@@ -23,7 +23,11 @@
icon_state = "pinoff"
usr << "You deactivate the pinpointer."
-/obj/item/weapon/pinpointer/proc/point_at(atom/target)
+/obj/item/weapon/pinpointer/proc/scandisk()
+ if(!the_disk)
+ the_disk = locate()
+
+/obj/item/weapon/pinpointer/proc/point_at(atom/target, spawnself = 1)
if(!active)
return
if(!target)
@@ -46,13 +50,15 @@
icon_state = "pinonmedium"
if(16 to INFINITY)
icon_state = "pinonfar"
- spawn(5)
- .()
+ if(spawnself)
+ spawn(5)
+ .()
/obj/item/weapon/pinpointer/proc/workdisk()
- if(!the_disk)
- the_disk = locate()
- point_at(the_disk)
+ scandisk()
+ point_at(the_disk, 0)
+ spawn(5)
+ .()
/obj/item/weapon/pinpointer/examine(mob/user)
..()
@@ -183,14 +189,10 @@
playsound(loc, 'sound/machines/twobeep.ogg', 50, 1) //Plays a beep
visible_message("Shuttle Locator active.") //Lets the mob holding it know that the mode has changed
return //Get outta here
+ scandisk()
if(!the_disk)
- the_disk = locate()
- if(!the_disk)
- icon_state = "pinonnull"
- return
-// if(loc.z != the_disk.z) //If you are on a different z-level from the disk
-// icon_state = "pinonnull"
-// else
+ icon_state = "pinonnull"
+ return
dir = get_dir(src, the_disk)
switch(get_dist(src, the_disk))
if(0)
diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm
index 75a07818aa2..8672a86d5a8 100644
--- a/code/game/gamemodes/wizard/rightandwrong.dm
+++ b/code/game/gamemodes/wizard/rightandwrong.dm
@@ -1,6 +1,6 @@
//In this file: Summon Magic/Summon Guns/Summon Events
-/proc/rightandwrong(var/summon_type, var/mob/user) //0 = Summon Guns, 1 = Summon Magic
+/proc/rightandwrong(var/summon_type, var/mob/user, var/survivor_probability) //0 = Summon Guns, 1 = Summon Magic
var/list/gunslist = list("taser","egun","laser","revolver","detective","c20r","nuclear","deagle","gyrojet","pulse","suppressed","cannon","doublebarrel","shotgun","combatshotgun","bulldog","mateba","sabr","uzi","crossbow","saw","car")
var/list/magiclist = list("fireball","smoke","blind","mindswap","forcewall","knock","horsemask","charge","wandnothing", "wanddeath", "wandresurrection", "wandpolymorph", "wandteleport", "wanddoor", "wandfireball", "staffchange", "staffhealing", "armor", "scrying", "staffdoor", "special")
var/list/magicspeciallist = list("staffchange","staffanimation", "wandbelt", "contract", "staffchaos")
@@ -13,7 +13,7 @@
if(H.stat == 2 || !(H.client)) continue
if(H.mind)
if(H.mind.special_role == "Wizard" || H.mind.special_role == "apprentice") continue
- if(prob(25) && !(H.mind in ticker.mode.traitors))
+ if(prob(survivor_probability) && !(H.mind in ticker.mode.traitors))
ticker.mode.traitors += H.mind
H.mind.special_role = "traitor"
var/datum/objective/survive/survive = new
@@ -31,7 +31,7 @@
if(!summon_type)
switch (randomizeguns)
if("taser")
- new /obj/item/weapon/gun/energy/taser(get_turf(H))
+ new /obj/item/weapon/gun/energy/gun/advtaser(get_turf(H))
if("egun")
new /obj/item/weapon/gun/energy/gun(get_turf(H))
if("laser")
@@ -45,7 +45,7 @@
if("nuclear")
new /obj/item/weapon/gun/energy/gun/nuclear(get_turf(H))
if("deagle")
- new /obj/item/weapon/gun/projectile/automatic/deagle/camo(get_turf(H))
+ new /obj/item/weapon/gun/projectile/automatic/pistol/deagle/camo(get_turf(H))
if("gyrojet")
new /obj/item/weapon/gun/projectile/automatic/gyropistol(get_turf(H))
if("pulse")
@@ -62,7 +62,7 @@
if("combatshotgun")
new /obj/item/weapon/gun/projectile/shotgun/combat(get_turf(H))
if("bulldog")
- new /obj/item/weapon/gun/projectile/automatic/bulldog(get_turf(H))
+ new /obj/item/weapon/gun/projectile/automatic/shotgun/bulldog(get_turf(H))
if("mateba")
new /obj/item/weapon/gun/projectile/revolver/mateba(get_turf(H))
if("sabr")
diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm
index 09cad46c59b..79037b550d6 100644
--- a/code/game/gamemodes/wizard/spellbook.dm
+++ b/code/game/gamemodes/wizard/spellbook.dm
@@ -11,6 +11,7 @@
var/max_uses = 5
var/op = 1
var/activepage
+ var/list/active_challenges = list()
/obj/item/weapon/spellbook/attackby(obj/item/O as obj, mob/user as mob)
if(istype(O, /obj/item/weapon/antag_spawner/contract))
@@ -37,7 +38,7 @@
dat += "
"
dat += "Learn and Improve Magical Abilities
"
dat += "Summon Magical Tools and Weapons
"
- dat += "Cast Powerful One Time Spells
"
+ dat += "Raise The Stakes For More Power
"
dat += "
"
dat += "Re-memorize Spells
"
@@ -94,26 +95,28 @@
dat += "Flesh to Stone (60)
"
dat += "This spell will curse a person to immediately turn into an unmoving statue. The effect will eventually wear off if the statue is not destroyed.
"
+ dat += "Summon Events (One time use, persistent global spell)
"
+ dat += "Give Murphy's law a little push and replace all events with special wizard ones that will confound and confuse everyone. Multiple castings increase the rate of these events.
"
+
dat += "
"
dat += "Return
"
- else if (activepage == "oneuse")
+ else if (activepage == "challenge")
- dat += "One Time Spells:
"
- dat += "These potent spells can only be used once and will be used automatically upon purchase.
"
- dat += "The effects are global and irreversable, these spells cannot be unlearned, but they can be bought multiple times.
"
+ dat += "Challenges:
"
+ dat += "The Wizard Federation typically has hard limits on the potency and number of spells brought to the station based on risk.
"
+ dat += "Arming the station against you will increases the risk, but will grant you one more charge for your spellbook.
"
dat += "
"
- dat += "Summon Guns (One time use, global spell)
"
- dat += "Nothing could possibly go wrong with arming a crew of lunatics just itching for an excuse to kill eachother. Just be careful not to get hit in the crossfire!
"
+ if(!("summon guns" in active_challenges))
+ dat += "Summon Guns (Single use only, global spell)
"
+ dat += "Nothing could possibly go wrong with arming a crew of lunatics just itching for an excuse to kill you. Just be careful not to stand still too long!
"
- dat += "Summon Magic (One time use, global spell)
"
- dat += "Share the wonders of magic with the crew and show them why they aren't to be trusted with it at the same time.
"
-
- dat += "Summon Events (One time use, persistent global spell)
"
- dat += "Give Murphy's law a little push and replace all events with special wizard ones that will confound and confuse everyone. Multiple castings increase the rate of these events.
"
+ if(!("summon magic" in active_challenges))
+ dat += "Summon Magic (Single use only, global spell)
"
+ dat += "Share the wonders of magic with the crew and show them why they aren't to be trusted with it at the same time.
"
dat += "
"
@@ -193,7 +196,7 @@
feedback_add_details("wizard_spell_learned","UM") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
else
temp = "You may only re-memorize spells whilst located inside the wizard sanctuary."
- else if(href_list["spell_choice"] == "spells" || href_list["spell_choice"] == "artifacts" || href_list["spell_choice"] == "oneuse" || href_list["spell_choice"] == "return")
+ else if(href_list["spell_choice"] == "spells" || href_list["spell_choice"] == "artifacts" || href_list["spell_choice"] == "challenge" || href_list["spell_choice"] == "return")
activepage = href_list["spell_choice"]
else if(uses >= 1 && max_uses >=1)
uses--
@@ -295,14 +298,18 @@
temp = "You have learned flesh to stone."
if("summonguns")
feedback_add_details("wizard_spell_learned","SG") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
- rightandwrong(0, H)
- max_uses--
- temp = "You have cast summon guns."
+ rightandwrong(0, H, 0)
+ uses++
+ max_uses++
+ active_challenges += "summon guns"
+ temp = "You have cast summon guns and gained an extra charge for your spellbook."
if("summonmagic")
feedback_add_details("wizard_spell_learned","SU") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
- rightandwrong(1, H)
- max_uses--
- temp = "You have cast summon magic."
+ rightandwrong(1, H, 0)
+ uses++
+ max_uses++
+ active_challenges += "summon magic"
+ temp = "You have cast summon magic and gained an extra charge for your spellbook."
if("summonevents")
feedback_add_details("wizard_spell_learned","SE") //please do not change the abbreviation to keep data processing consistent. Add a unique id to any new spells
summonevents()
diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm
index cd7cb743573..fdd010fd10f 100644
--- a/code/game/jobs/access.dm
+++ b/code/game/jobs/access.dm
@@ -402,7 +402,7 @@
return "Code Gold"
/proc/get_all_jobs()
- return list("Assistant", "Captain", "Head of Personnel", "Bartender", "Chef", "Botanist", "Quartermaster", "Cargo Technician",
+ return list("Assistant", "Captain", "Head of Personnel", "Bartender", "Cook", "Botanist", "Quartermaster", "Cargo Technician",
"Shaft Miner", "Clown", "Mime", "Janitor", "Librarian", "Lawyer", "Chaplain", "Chief Engineer", "Station Engineer",
"Atmospheric Technician", "Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist",
"Research Director", "Scientist", "Roboticist", "Head of Security", "Warden", "Detective", "Security Officer")
diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm
index dc1e5110c05..2c5791a9ff0 100644
--- a/code/game/jobs/job/civilian.dm
+++ b/code/game/jobs/job/civilian.dm
@@ -50,26 +50,26 @@ Bartender
H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack)
/*
-Chef
+Cook
*/
-/datum/job/chef
- title = "Chef"
- flag = CHEF
+/datum/job/cook
+ title = "Cook"
+ flag = COOK
department_head = list("Head of Personnel")
department_flag = CIVILIAN
faction = "Station"
- total_positions = 1
+ total_positions = 2
spawn_positions = 1
supervisors = "the head of personnel"
selection_color = "#dddddd"
- default_pda = /obj/item/device/pda/chef
+ default_pda = /obj/item/device/pda/cook
default_headset = /obj/item/device/radio/headset/headset_srv
access = list(access_hydroponics, access_bar, access_kitchen, access_morgue)
minimal_access = list(access_kitchen, access_morgue)
-/datum/job/chef/equip_items(var/mob/living/carbon/human/H)
+/datum/job/cook/equip_items(var/mob/living/carbon/human/H)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chef(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/chef(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes)
@@ -283,7 +283,7 @@ Janitor
department_head = list("Head of Personnel")
department_flag = CIVILIAN
faction = "Station"
- total_positions = 1
+ total_positions = 2
spawn_positions = 1
supervisors = "the head of personnel"
selection_color = "#dddddd"
diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm
index d126b5c0a0b..3a1912542cd 100644
--- a/code/game/jobs/job/security.dm
+++ b/code/game/jobs/job/security.dm
@@ -86,6 +86,7 @@ Warden
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/security/sunglasses(H), slot_glasses)
H.equip_to_slot_or_del(new /obj/item/device/flash/handheld(H), slot_l_store)
+ H.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun/advtaser(H), slot_s_store)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/restraints/handcuffs(H), slot_l_hand)
@@ -178,7 +179,7 @@ Security Officer
H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/clothing/head/beret/sec(H), slot_head)
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
- H.equip_to_slot_or_del(new /obj/item/weapon/restraints/handcuffs(H), slot_s_store)
+ H.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun/advtaser(H), slot_s_store)
H.equip_to_slot_or_del(new /obj/item/device/flash/handheld(H), slot_l_store)
if(H.backbag == 1)
@@ -272,4 +273,4 @@ var/list/sec_departments = list("engineering", "supply", "medical", "science")
/obj/item/device/radio/headset/headset_sec/alt/department/sci
keyslot = new /obj/item/device/encryptionkey/headset_sec
- keyslot2 = new /obj/item/device/encryptionkey/headset_sci
\ No newline at end of file
+ keyslot2 = new /obj/item/device/encryptionkey/headset_sci
diff --git a/code/game/jobs/jobs.dm b/code/game/jobs/jobs.dm
index 14bf5181d8f..4b185dfd7fc 100644
--- a/code/game/jobs/jobs.dm
+++ b/code/game/jobs/jobs.dm
@@ -30,7 +30,7 @@ var/const/CIVILIAN =(1<<2)
var/const/HOP =(1<<0)
var/const/BARTENDER =(1<<1)
var/const/BOTANIST =(1<<2)
-var/const/CHEF =(1<<3)
+var/const/COOK =(1<<3)
var/const/JANITOR =(1<<4)
var/const/LIBRARIAN =(1<<5)
var/const/QUARTERMASTER =(1<<6)
@@ -90,7 +90,7 @@ var/list/civilian_positions = list(
"Head of Personnel",
"Bartender",
"Botanist",
- "Chef",
+ "Cook",
"Janitor",
"Librarian",
"Quartermaster",
diff --git a/code/game/machinery/Freezer.dm b/code/game/machinery/Freezer.dm
index f8974fd36c8..78a56a386f0 100644
--- a/code/game/machinery/Freezer.dm
+++ b/code/game/machinery/Freezer.dm
@@ -21,6 +21,9 @@
component_parts += new /obj/item/stack/cable_coil(null, 1)
RefreshParts()
+/obj/machinery/atmospherics/unary/cold_sink/freezer/construction()
+ ..(dir,dir)
+
/obj/machinery/atmospherics/unary/cold_sink/freezer/RefreshParts()
var/H
var/T
@@ -141,6 +144,9 @@
component_parts += new /obj/item/stack/cable_coil(null, 1)
RefreshParts()
+/obj/machinery/atmospherics/unary/heat_reservoir/heater/construction()
+ ..(dir,dir)
+
/obj/machinery/atmospherics/unary/heat_reservoir/heater/RefreshParts()
var/H
var/T
@@ -204,7 +210,7 @@
//user << browse(dat, "window=freezer;size=400x500")
//onclose(user, "freezer")
- var/datum/browser/popup = new(user, "freezer", "Cryo Gas Cooling System", 400, 240) // Set up the popup browser window
+ var/datum/browser/popup = new(user, "freezer", "Cryo Gas Heating System", 400, 240) // Set up the popup browser window
popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
popup.set_content(dat)
popup.open()
diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm
index ca428f7c6c2..b94220d792b 100644
--- a/code/game/machinery/autolathe.dm
+++ b/code/game/machinery/autolathe.dm
@@ -1,74 +1,3 @@
-//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
-
-var/global/list/autolathe_recipes = list( \
- /* screwdriver removed*/ \
- new /obj/item/weapon/reagent_containers/glass/bucket(), \
- new /obj/item/weapon/crowbar(), \
- new /obj/item/device/flashlight(), \
- new /obj/item/weapon/extinguisher(), \
- new /obj/item/device/multitool(), \
- new /obj/item/device/analyzer(), \
- new /obj/item/device/t_scanner(), \
- new /obj/item/weapon/weldingtool(), \
- new /obj/item/weapon/screwdriver(), \
- new /obj/item/weapon/wirecutters(), \
- new /obj/item/weapon/wrench(), \
- new /obj/item/clothing/head/welding(), \
- new /obj/item/weapon/stock_parts/console_screen(), \
- new /obj/item/weapon/airlock_electronics(), \
- new /obj/item/weapon/airalarm_electronics(), \
- new /obj/item/weapon/firealarm_electronics(), \
- new /obj/item/device/pipe_painter(), \
- new /obj/item/stack/sheet/metal(), \
- new /obj/item/stack/sheet/glass(), \
- new /obj/item/stack/sheet/rglass(), \
- new /obj/item/stack/rods(), \
- new /obj/item/weapon/rcd_ammo(), \
- new /obj/item/weapon/kitchenknife(), \
- new /obj/item/weapon/scalpel(), \
- new /obj/item/weapon/circular_saw(), \
- new /obj/item/weapon/surgicaldrill(),\
- new /obj/item/weapon/retractor(),\
- new /obj/item/weapon/cautery(),\
- new /obj/item/weapon/hemostat(),\
- new /obj/item/weapon/reagent_containers/glass/beaker(), \
- new /obj/item/weapon/reagent_containers/glass/beaker/large(), \
- new /obj/item/ammo_casing/shotgun/beanbag(), \
- new /obj/item/ammo_box/c38(), \
- new /obj/item/device/taperecorder/empty(), \
- new /obj/item/device/tape(), \
- new /obj/item/device/assembly/igniter(), \
- new /obj/item/device/assembly/signaler(), \
- new /obj/item/device/radio/headset(), \
- new /obj/item/device/radio/off(), \
- new /obj/item/device/assembly/infra(), \
- new /obj/item/device/assembly/timer(), \
- new /obj/item/device/assembly/voice(), \
- new /obj/item/weapon/light/tube(), \
- new /obj/item/weapon/light/bulb(), \
- new /obj/item/weapon/camera_assembly(), \
- new /obj/item/newscaster_frame(), \
- new /obj/item/weapon/reagent_containers/syringe(), \
- new /obj/item/device/assembly/prox_sensor(), \
- )
-
-var/global/list/autolathe_recipes_hidden = list( \
- new /obj/item/weapon/flamethrower/full(), \
- new /obj/item/weapon/rcd(), \
- new /obj/item/device/electropack(), \
- new /obj/item/weapon/weldingtool/largetank(), \
- new /obj/item/weapon/restraints/handcuffs(), \
- new /obj/item/ammo_box/a357(), \
- new /obj/item/ammo_box/c10mm(), \
- new /obj/item/ammo_box/c45(), \
- new /obj/item/ammo_box/c9mm(), \
- new /obj/item/ammo_casing/shotgun(), \
- new /obj/item/ammo_casing/shotgun/buckshot(), \
- new /obj/item/ammo_casing/shotgun/dart(), \
- new /obj/item/ammo_casing/shotgun/incendiary(), \
- /* new /obj/item/weapon/shield/riot(), */ \
- )
-
/obj/machinery/autolathe
name = "autolathe"
desc = "It produces items using metal and glass."
@@ -98,6 +27,21 @@ var/global/list/autolathe_recipes_hidden = list( \
var/prod_coeff
var/datum/wires/autolathe/wires = null
+ var/datum/design/being_built
+ var/datum/research/files
+ var/selected_category
+ var/screen = 1
+
+ var/list/categories = list(
+ "Tools",
+ "Electronics",
+ "Construction",
+ "T-Comm",
+ "Security",
+ "Medical",
+ "Misc"
+ )
+
/obj/machinery/autolathe/New()
..()
component_parts = list()
@@ -110,13 +54,30 @@ var/global/list/autolathe_recipes_hidden = list( \
RefreshParts()
wires = new(src)
- src.L = autolathe_recipes
- src.LL = autolathe_recipes_hidden
+ files = new /datum/research/autolathe(src)
/obj/machinery/autolathe/interact(mob/user)
+ if(!is_operational())
+ return
+
if(shocked && !(stat & NOPOWER))
shock(user,50)
- regular_win(user)
+
+ var/dat
+
+ if(panel_open)
+ dat = wires.GetInteractWindow()
+
+ else
+ if(screen == 1)
+ dat = main_win(user)
+ else
+ dat += category_win(user,selected_category)
+
+ var/datum/browser/popup = new(user, "autolathe", name, 400, 500)
+ popup.set_content(dat)
+ popup.open()
+
return
/obj/machinery/autolathe/attackby(obj/item/O, mob/user)
@@ -198,73 +159,68 @@ var/global/list/autolathe_recipes_hidden = list( \
if(..())
return
if (!busy)
+ if(href_list["menu"])
+ screen = text2num(href_list["menu"])
+
+ if(href_list["category"])
+ selected_category = href_list["category"]
+
if(href_list["make"])
- var/coeff = 2 ** prod_coeff
+
var/turf/T = get_step(src.loc, get_dir(src,usr))
- // critical exploit fix start -walter0o
- var/obj/item/template = null
- var/attempting_to_build = locate(href_list["make"])
-
- if(!attempting_to_build)
+ /////////////////
+ //href protection
+ being_built = files.FindDesignByID(href_list["make"]) //check if it's a valid design
+ if(!being_built)
return
- if(locate(attempting_to_build, src.L) || locate(attempting_to_build, src.LL)) // see if the requested object is in one of the construction lists, if so, it is legit -walter0o
- template = attempting_to_build
-
- else // somebody is trying to exploit, alert admins -walter0o
-
- var/turf/LOC = get_turf(usr)
- message_admins("[key_name_admin(usr)] tried to exploit an autolathe to duplicate [attempting_to_build] ! ([LOC ? "JMP" : "null"])", 0)
- log_admin("EXPLOIT : [key_name(usr)] tried to exploit an autolathe to duplicate [attempting_to_build] !")
- return
-
- // now check for legit multiplier, also only stacks should pass with one to prevent raw-materials-manipulation -walter0o
-
+ //multiplier checks : only stacks can have one and its value is 1, 10 ,25 or max_multiplier
var/multiplier = text2num(href_list["multiplier"])
+ var/max_multiplier = min(50, being_built.materials["$metal"] ?round(m_amount/being_built.materials["$metal"]):INFINITY,being_built.materials["$glass"]?round(g_amount/being_built.materials["$glass"]):INFINITY)
+ var/is_stack = ispath(being_built.build_path, /obj/item/stack)
- if (!multiplier) multiplier = 1
- var/max_multiplier = 1
-
- if(istype(template, /obj/item/stack)) // stacks are the only items which can have a multiplier higher than 1 -walter0o
- var/obj/item/stack/S = template
- max_multiplier = min(S.max_amount, S.m_amt?round(m_amount/S.m_amt):INFINITY, S.g_amt?round(g_amount/S.g_amt):INFINITY) // pasta from regular_win() to make sure the numbers match -walter0o
-
- if( (multiplier > max_multiplier) || (multiplier <= 0) ) // somebody is trying to exploit, alert admins-walter0o
-
- var/turf/LOC = get_turf(usr)
- message_admins("[key_name_admin(usr)] tried to exploit an autolathe with multiplier set to [multiplier] on [template] ! ([LOC ? "JMP" : "null"])" , 0)
- log_admin("EXPLOIT : [key_name(usr)] tried to exploit an autolathe with multiplier set to [multiplier] on [template] !")
+ if(!is_stack && (multiplier > 1))
return
+ if (!(multiplier in list(1,10,25,max_multiplier))) //"enough materials ?" is checked further down
+ return
+ /////////////////
- var/power = max(2000, (template.m_amt+template.g_amt)*multiplier/5)
- if(src.m_amount >= template.m_amt*multiplier/coeff && src.g_amount >= template.g_amt*multiplier/coeff)
+ var/coeff = (is_stack ? 1 : 2 ** prod_coeff) //stacks are unaffected by production coefficient
+ var/metal_cost = being_built.materials["$metal"]
+ var/glass_cost = being_built.materials["$glass"]
+
+ var/power = max(2000, (metal_cost+glass_cost)*multiplier/5)
+
+ if((m_amount >= metal_cost*multiplier/coeff) && (g_amount >= glass_cost*multiplier/coeff))
busy = 1
use_power(power)
icon_state = "autolathe"
flick("autolathe_n",src)
spawn(32/coeff)
use_power(power)
- if(istype(template, /obj/item/stack))
- src.m_amount -= template.m_amt*multiplier
- src.g_amount -= template.g_amt*multiplier
- var/obj/item/new_item = new template.type(T)
- var/obj/item/stack/S = new_item
+ if(is_stack)
+ m_amount -= metal_cost*multiplier
+ g_amount -= glass_cost*multiplier
+ var/obj/item/stack/S = new being_built.build_path(T)
S.amount = multiplier
else
- src.m_amount -= template.m_amt/coeff
- src.g_amount -= template.g_amt/coeff
- var/obj/item/new_item = new template.type(T)
+ m_amount -= metal_cost/coeff
+ g_amount -= glass_cost/coeff
+ var/obj/item/new_item = new being_built.build_path(T)
new_item.m_amt /= coeff
new_item.g_amt /= coeff
- if(src.m_amount < 0)
- src.m_amount = 0
- if(src.g_amount < 0)
- src.g_amount = 0
+ if(m_amount < 0)
+ m_amount = 0
+ if(g_amount < 0)
+ g_amount = 0
busy = 0
+ src.updateUsrDialog()
else
usr << "The autolathe is busy. Please wait for completion of previous operation."
+
src.updateUsrDialog()
+
return
/obj/machinery/autolathe/RefreshParts()
@@ -278,45 +234,71 @@ var/global/list/autolathe_recipes_hidden = list( \
for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts)
prod_coeff += M.rating - 1
-/obj/machinery/autolathe/proc/regular_win(mob/user)
+/obj/machinery/autolathe/proc/main_win(mob/user)
+ var/dat = "Autolathe Menu:
"
+ dat += "
Metal amount: [src.m_amount] / [max_m_amount] cm
3"
+ dat += "
Glass amount: [src.g_amount] / [max_g_amount] cm
3
"
+
+ var/line_length = 1
+ dat += "
"
+
+ for(var/C in categories)
+ if(line_length > 2)
+ dat += "
"
+ line_length = 1
+
+ dat += "| [C] | "
+ line_length++
+
+ dat += "
"
+ return dat
+
+/obj/machinery/autolathe/proc/category_win(mob/user,var/selected_category)
+ var/dat = "Return to category screen"
+ dat += "Browsing [selected_category]:
"
+ dat += "
Metal amount: [src.m_amount] / [max_m_amount] cm
3"
+ dat += "
Glass amount: [src.g_amount] / [max_g_amount] cm
3
"
+
+ for(var/datum/design/D in files.known_designs)
+ if(!(selected_category in D.category))
+ continue
+
+ if(disabled || !can_build(D))
+ dat += "
[D.name]"
+ else
+ dat += "
[D.name]"
+
+ if(ispath(D.build_path, /obj/item/stack))
+ var/max_multiplier = min(50, D.materials["$metal"] ?round(m_amount/D.materials["$metal"]):INFINITY,D.materials["$glass"]?round(g_amount/D.materials["$glass"]):INFINITY)
+ if (max_multiplier>10 && !disabled)
+ dat += "
x10"
+ if (max_multiplier>25 && !disabled)
+ dat += "
x25"
+ if(max_multiplier > 0 && !disabled)
+ dat += "
x[max_multiplier]"
+
+ dat += "[get_design_cost(D)]
"
+
+ dat += "
"
+ return dat
+
+/obj/machinery/autolathe/proc/can_build(var/datum/design/D)
+ var/coeff = (ispath(D.build_path,/obj/item/stack) ? 1 : 2 ** prod_coeff)
+
+ if(D.materials["$metal"] && (m_amount < (D.materials["$metal"] / coeff)))
+ return 0
+ if(D.materials["$glass"] && (g_amount < (D.materials["$glass"] / coeff)))
+ return 0
+ return 1
+
+/obj/machinery/autolathe/proc/get_design_cost(var/datum/design/D)
+ var/coeff = (ispath(D.build_path,/obj/item/stack) ? 1 : 2 ** prod_coeff)
var/dat
- if(!panel_open)
- if(stat)
- return
- var/coeff = 2 ** prod_coeff
- dat = "Metal amount: [src.m_amount] / [max_m_amount] cm
3"
- dat += "
Glass amount: [src.g_amount] / [max_g_amount] cm
3
"
- var/list/objs = list()
- objs += src.L
- if(src.hacked)
- objs += src.LL
- for(var/obj/item/t in objs)
- if(disabled || m_amount
[t]", "The ", "")
- else
- dat += replacetext("[t]", "The ", "")
-
- if(istype(t, /obj/item/stack))
- var/obj/item/stack/S = t
- var/max_multiplier = min(S.max_amount, S.m_amt?round(m_amount/S.m_amt):INFINITY, S.g_amt?round(g_amount/S.g_amt):INFINITY)
- if (max_multiplier>10 && !disabled)
- dat += " x[10]"
- if (max_multiplier>25 && !disabled)
- dat += " x[25]"
- if (max_multiplier>1 && !disabled)
- dat += " x[max_multiplier]"
- dat += " [t.m_amt] m / [t.g_amt] g"
- else
- dat += " [t.m_amt/coeff] m / [t.g_amt/coeff] g"
- dat += "
"
- dat += ""
- else
- dat = wires.GetInteractWindow()
-
- var/datum/browser/popup = new(user, "autolathe", name, 400, 500)
- popup.set_content(dat)
- popup.open()
- return
+ if(D.materials["$metal"])
+ dat += "[D.materials["$metal"] / coeff] metal "
+ if(D.materials["$glass"])
+ dat += "[D.materials["$glass"] / coeff] glass"
+ return dat
/obj/machinery/autolathe/proc/shock(mob/user, prb)
if(stat & (BROKEN|NOPOWER)) // unpowered, no shock
@@ -330,3 +312,15 @@ var/global/list/autolathe_recipes_hidden = list( \
return 1
else
return 0
+
+/obj/machinery/autolathe/proc/adjust_hacked(var/hack)
+ hacked = hack
+
+ if(hack)
+ for(var/datum/design/D in files.possible_designs)
+ if((D.build_type & 4) && ("hacked" in D.category))
+ files.known_designs += D
+ else
+ for(var/datum/design/D in files.known_designs)
+ if("hacked" in D.category)
+ files.known_designs -= D
diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm
index b5de2fb95a7..3c83caa461d 100644
--- a/code/game/machinery/bots/ed209bot.dm
+++ b/code/game/machinery/bots/ed209bot.dm
@@ -418,7 +418,7 @@ Auto Patrol[]"},
new /obj/item/device/assembly/prox_sensor(Tsec)
if(!lasercolor)
- var/obj/item/weapon/gun/energy/taser/G = new /obj/item/weapon/gun/energy/taser(Tsec)
+ var/obj/item/weapon/gun/energy/gun/advtaser/G = new /obj/item/weapon/gun/energy/gun/advtaser(Tsec)
G.power_supply.charge = 0
G.update_icon()
else if(lasercolor == "b")
@@ -645,7 +645,7 @@ Auto Patrol[]"},
return
name = "redtag ED-209 assembly"
if("")
- if(!istype(W, /obj/item/weapon/gun/energy/taser))
+ if(!istype(W, /obj/item/weapon/gun/energy/gun/advtaser))
return
name = "taser ED-209 assembly"
else
diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm
index 22d472812f9..ca16ad5dbc3 100644
--- a/code/game/machinery/camera/camera.dm
+++ b/code/game/machinery/camera/camera.dm
@@ -269,7 +269,7 @@
/obj/machinery/camera/proc/cancelCameraAlarm()
alarm_on = 0
for(var/mob/living/silicon/S in mob_list)
- S.cancelAlarm("Camera", get_area(src), list(src), src)
+ S.cancelAlarm("Camera", get_area(src), src)
/obj/machinery/camera/proc/can_use()
if(!status)
diff --git a/code/game/machinery/camera/motion.dm b/code/game/machinery/camera/motion.dm
index e80f0799943..4454d5a89cb 100644
--- a/code/game/machinery/camera/motion.dm
+++ b/code/game/machinery/camera/motion.dm
@@ -42,7 +42,8 @@
/obj/machinery/camera/proc/cancelAlarm()
if (detectTime == -1)
for (var/mob/living/silicon/aiPlayer in player_list)
- if (status) aiPlayer.cancelAlarm("Motion", src.loc.loc)
+ if (status)
+ aiPlayer.cancelAlarm("Motion", get_area(src), src)
detectTime = 0
return 1
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 6513c71ab6b..88e83f4127e 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -122,7 +122,7 @@
//Clonepod
//Start growing a human clone in the pod!
-/obj/machinery/clonepod/proc/growclone(var/ckey, var/clonename, var/ui, var/se, var/mindref, var/datum/species/mrace, var/mcolor)
+/obj/machinery/clonepod/proc/growclone(var/ckey, var/clonename, var/ui, var/se, var/mindref, var/datum/species/mrace, var/mcolor, var/factions)
if(panel_open)
return 0
if(mess || attempting)
@@ -173,6 +173,7 @@
H << "Consciousness slowly creeps over you as your body regenerates.
So this is what cloning feels like?"
hardset_dna(H, ui, se, null, null, mrace, mcolor)
+ H.faction |= factions
if(efficiency > 2)
for(var/A in bad_se_blocks)
diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm
index 5d49b12a1e5..2c68d334bd1 100644
--- a/code/game/machinery/computer/cloning.dm
+++ b/code/game/machinery/computer/cloning.dm
@@ -35,7 +35,7 @@
if(!(pod1.occupant || pod1.mess) && (pod1.efficiency > 5))
for(var/datum/data/record/R in records)
if(!(pod1.occupant || pod1.mess))
- if(pod1.growclone(R.fields["ckey"], R.fields["name"], R.fields["UI"], R.fields["SE"], R.fields["mind"], R.fields["mrace"], R.fields["mcolor"]))
+ if(pod1.growclone(R.fields["ckey"], R.fields["name"], R.fields["UI"], R.fields["SE"], R.fields["mind"], R.fields["mrace"], R.fields["mcolor"], R.fields["factions"]))
records -= R
/obj/machinery/computer/cloning/proc/updatemodules()
@@ -329,7 +329,7 @@
temp = "Clonepod malfunction."
else if(!config.revival_cloning)
temp = "Unable to initiate cloning cycle."
- else if(pod1.growclone(C.fields["ckey"], C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"], C.fields["mcolor"]))
+ else if(pod1.growclone(C.fields["ckey"], C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"], C.fields["mcolor"], C.fields["factions"]))
temp = "[C.fields["name"]] => Cloning cycle in progress..."
records.Remove(C)
if(active_record == C)
@@ -381,7 +381,7 @@
R.fields["SE"] = subject.dna.struc_enzymes
R.fields["blood_type"] = subject.dna.blood_type
R.fields["mcolor"] = subject.dna.mutant_color
-
+ R.fields["factions"] = subject.faction
//Add an implant if needed
var/obj/item/weapon/implant/health/imp = locate(/obj/item/weapon/implant/health, subject)
if(!imp)
diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm
index f68c7bf7c36..8486b010252 100644
--- a/code/game/machinery/computer/crew.dm
+++ b/code/game/machinery/computer/crew.dm
@@ -56,7 +56,7 @@ proc/crewmonitor(mob/user,var/atom/source)
jobs["Shaft Miner"] = 52
jobs["Cargo Technician"] = 53
jobs["Bartender"] = 61
- jobs["Chef"] = 62
+ jobs["Cook"] = 62
jobs["Botanist"] = 63
jobs["Librarian"] = 64
jobs["Chaplain"] = 65
@@ -64,7 +64,7 @@ proc/crewmonitor(mob/user,var/atom/source)
jobs["Mime"] = 67
jobs["Janitor"] = 68
jobs["Assistant"] = 99 //Unknowns/custom jobs should appear after civilians, and before assistants
-
+
var/t = "Name | Vitals | Position |
"
var/list/logs = list()
var/list/tracked = crewscan()
@@ -86,15 +86,15 @@ proc/crewmonitor(mob/user,var/atom/source)
var/ijob = jobs[I.assignment]
if(ijob % 10 == 0)
style += "font-weight: bold; " //head roles always end in 0
- if(ijob >= 10 && ijob < 20)
+ if(ijob >= 10 && ijob < 20)
style += "color: #E74C3C; " //security
- if(ijob >= 20 && ijob < 30)
+ if(ijob >= 20 && ijob < 30)
style += "color: #3498DB; " //medical
- if(ijob >= 30 && ijob < 40)
- style += "color: #9B59B6; " //science
- if(ijob >= 40 && ijob < 50)
+ if(ijob >= 30 && ijob < 40)
+ style += "color: #9B59B6; " //science
+ if(ijob >= 40 && ijob < 50)
style += "color: #F1C40F; " //engineering
- if(ijob >= 50 && ijob < 60)
+ if(ijob >= 50 && ijob < 60)
style += "color: #F39C12; " //cargo
log += "[ijob]]| [I.registered_name] ([I.assignment]) | " //ijob does not get displayed, nor does it take up space, it's just used for the positioning of an entry
else
diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm
index d7bde33688d..8441647f791 100644
--- a/code/game/machinery/constructable_frame.dm
+++ b/code/game/machinery/constructable_frame.dm
@@ -130,6 +130,7 @@
if(component_check)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
var/obj/machinery/new_machine = new src.circuit.build_path(src.loc)
+ new_machine.construction()
for(var/obj/O in new_machine.component_parts)
qdel(O)
new_machine.component_parts = list()
diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm
index eb5faffcafd..24312770103 100644
--- a/code/game/machinery/cryo.dm
+++ b/code/game/machinery/cryo.dm
@@ -18,7 +18,6 @@
/obj/machinery/atmospherics/unary/cryo_cell/New()
..()
initialize_directions = dir
- initialize()
component_parts = list()
component_parts += new /obj/item/weapon/circuitboard/cryo_tube(null)
component_parts += new /obj/item/weapon/stock_parts/matter_bin(null)
@@ -29,6 +28,9 @@
component_parts += new /obj/item/stack/cable_coil(null, 1)
RefreshParts()
+/obj/machinery/atmospherics/unary/cryo_cell/construction()
+ ..(dir,dir)
+
/obj/machinery/atmospherics/unary/cryo_cell/RefreshParts()
var/C
for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts)
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index 857008e4edf..3f799cc41a8 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -242,7 +242,8 @@ Class Procs:
return
//stop AIs from leaving windows open and using then after they lose vision
//apc_override is needed here because AIs use their own APC when powerless
- if(cameranet && !cameranet.checkTurfVis(get_turf(M)) && !apc_override)
+ //the snowflake get_wall_mounted_turf() is because APCs in maint aren't actually in view of the inner camera
+ if(cameranet && !cameranet.checkTurfVis(get_wall_mounted_turf(M)) && !apc_override)
return
return 1
@@ -334,8 +335,8 @@ Class Procs:
/obj/machinery/proc/default_change_direction_wrench(var/mob/user, var/obj/item/weapon/wrench/W)
if(panel_open && istype(W))
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
- dir = pick(WEST,EAST,SOUTH,NORTH)
- user << "You clumsily rotate [src]."
+ dir = turn(dir,-90)
+ user << "You rotate [src]."
return 1
return 0
@@ -381,3 +382,7 @@ Class Procs:
W.play_rped_sound()
return 1
return 0
+
+//called on machinery construction (i.e from frame to machinery) but not on initialization
+/obj/machinery/proc/construction()
+ return
diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm
index f63ea425196..85fc2a42869 100644
--- a/code/game/machinery/newscaster.dm
+++ b/code/game/machinery/newscaster.dm
@@ -517,6 +517,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
return
if ((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
usr.set_machine(src)
+ scan_user(usr)
if(href_list["set_channel_name"])
src.channel_name = stripped_input(usr, "Provide a Feed Channel Name", "Network Channel Handler", "", MAX_NAME_LEN)
while (findtext(src.channel_name," ") == 1)
@@ -547,6 +548,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
else
var/choice = alert("Please confirm Feed channel creation","Network Channel Handler","Confirm","Cancel")
if(choice=="Confirm")
+ scan_user(usr)
news_network.CreateFeedChannel(src.channel_name, src.scanned_user, c_locked)
feedback_inc("newscaster_channels",1)
src.screen=5
@@ -632,6 +634,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
else
var/choice = alert("Please confirm Wanted Issue [(input_param==1) ? ("creation.") : ("edit.")]","Network Security Handler","Confirm","Cancel")
if(choice=="Confirm")
+ scan_user(usr)
if(input_param==1) //If input_param == 1 we're submitting a new wanted issue. At 2 we're just editing an existing one. See the else below
var/datum/feed_message/WANTED = new /datum/feed_message
WANTED.author = src.channel_name
@@ -752,6 +755,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
var/datum/feed_message/FM = locate(href_list["new_comment"])
var/cominput = copytext(stripped_input(usr, "Write your message:", "New comment", null),1,141)
if(cominput)
+ scan_user(usr)
var/datum/feed_comment/FC = new/datum/feed_comment
FC.author = scanned_user
FC.body = cominput
@@ -1054,9 +1058,11 @@ obj/item/weapon/newspaper/attackby(obj/item/weapon/W as obj, mob/user as mob)
src.scanned_user ="Unknown"
else
src.scanned_user ="Unknown"
- else
+ else if(istype(user,/mob/living/silicon))
var/mob/living/silicon/ai_user = user
src.scanned_user = "[ai_user.name] ([ai_user.job])"
+ else
+ ERROR("Newscaster used by non-human/silicon mob: [user.type]")
/obj/machinery/newscaster/proc/print_paper()
diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm
index bb16ba4c47c..c1fa0980810 100644
--- a/code/game/machinery/pipe/construction.dm
+++ b/code/game/machinery/pipe/construction.dm
@@ -22,6 +22,15 @@ Buildable meters
#define PIPE_HEAT_EXCHANGE 17
#define PIPE_DVALVE 18
#define PIPE_4WAYMANIFOLD 19
+//Disposal piping numbers - do NOT hardcode these, use the defines
+#define DISP_PIPE_STRAIGHT 0
+#define DISP_PIPE_BENT 1
+#define DISP_JUNCTION 2
+#define DISP_YJUNCTION 3
+#define DISP_END_TRUNK 4
+#define DISP_END_BIN 5
+#define DISP_END_OUTLET 6
+#define DISP_END_CHUTE 7
/obj/item/pipe
name = "pipe"
@@ -95,6 +104,28 @@ Buildable meters
src.pixel_y = rand(-5, 5)
//update the name and icon of the pipe item depending on the type
+var/global/list/pipeID2State = list(
+ "simple", \
+ "simple", \
+ "he", \
+ "he", \
+ "connector", \
+ "manifold", \
+ "junction", \
+ "uvent", \
+ "mvalve", \
+ "pump", \
+ "scrubber", \
+ "insulated", \
+ "insulated", \
+ "filter", \
+ "mixer", \
+ "passivegate", \
+ "volumepump", \
+ "heunary", \
+ "dvalve", \
+ "manifold4w", \
+)
/obj/item/pipe/proc/update()
var/list/nlist = list( \
@@ -120,29 +151,7 @@ Buildable meters
"4-way manifold", \
)
name = nlist[pipe_type+1] + " fitting"
- var/list/islist = list( \
- "simple", \
- "simple", \
- "he", \
- "he", \
- "connector", \
- "manifold", \
- "junction", \
- "uvent", \
- "mvalve", \
- "pump", \
- "scrubber", \
- "insulated", \
- "insulated", \
- "filter", \
- "mixer", \
- "passivegate", \
- "volumepump", \
- "heunary", \
- "dvalve", \
- "manifold4w", \
- )
- icon_state = islist[pipe_type + 1]
+ icon_state = pipeID2State[pipe_type + 1]
//called when a turf is attacked with a pipe item
// place the pipe on the turf, setting pipe level to 1 (underfloor) if the turf is not intact
@@ -423,24 +432,3 @@ Buildable meters
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
user << "You have fastened the meter to the pipe."
qdel(src)
-
-#undef PIPE_SIMPLE_STRAIGHT
-#undef PIPE_SIMPLE_BENT
-#undef PIPE_HE_STRAIGHT
-#undef PIPE_HE_BENT
-#undef PIPE_CONNECTOR
-#undef PIPE_MANIFOLD
-#undef PIPE_JUNCTION
-#undef PIPE_UVENT
-#undef PIPE_MVALVE
-#undef PIPE_PUMP
-#undef PIPE_SCRUBBER
-#undef PIPE_INSULATED_STRAIGHT
-#undef PIPE_INSULATED_BENT
-#undef PIPE_GAS_FILTER
-#undef PIPE_GAS_MIXER
-#undef PIPE_PASSIVE_GATE
-#undef PIPE_VOLUME_PUMP
-#undef PIPE_OUTLET_INJECT
-#undef PIPE_DVALVE
-#undef PIPE_4WAYMANIFOLD
\ No newline at end of file
diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm
index e409a1bc686..5c3b993beec 100644
--- a/code/game/machinery/portable_turret.dm
+++ b/code/game/machinery/portable_turret.dm
@@ -119,7 +119,7 @@
if(/obj/item/weapon/gun/energy/lasercannon)
iconholder = 1
- if(/obj/item/weapon/gun/energy/taser)
+ if(/obj/item/weapon/gun/energy/gun/advtaser)
eprojectile = /obj/item/projectile/beam
eshot_sound = 'sound/weapons/Laser.ogg'
diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm
index 62c7846c807..743da789536 100644
--- a/code/game/machinery/rechargestation.dm
+++ b/code/game/machinery/rechargestation.dm
@@ -168,7 +168,7 @@
O:icon_state = "flash"
// Engineering
// Security
- if(istype(O,/obj/item/weapon/gun/energy/taser/cyborg))
+ if(istype(O,/obj/item/weapon/gun/energy/gun/advtaser/cyborg))
if(O:power_supply.charge < O:power_supply.maxcharge)
var/obj/item/weapon/gun/energy/G = O
var/obj/item/ammo_casing/energy/S = G.ammo_type[G.select]
diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm
index eee59dd82b2..30e11d25386 100644
--- a/code/game/machinery/turrets.dm
+++ b/code/game/machinery/turrets.dm
@@ -354,12 +354,16 @@
var/atom/cur_target = null
var/scan_range = 9 //You will never see them coming
var/health = 200 //Because it lacks a cover, and is mostly to keep people from touching the syndie shuttle.
+ var/base_icon_state = "syndieturret"
+ var/projectile_type = /obj/item/projectile/bullet
+ var/fire_sound = 'sound/weapons/Gunshot.ogg'
icon = 'icons/obj/turrets.dmi'
icon_state = "syndieturret0"
/obj/machinery/gun_turret/New()
..()
take_damage(0) //check your health
+ icon_state = "[base_icon_state]" + "0"
/obj/machinery/gun_turret/ex_act(severity, target)
switch(severity)
@@ -377,7 +381,7 @@
/obj/machinery/gun_turret/update_icon()
if(state > 2 || state < 0) //someone fucked up the vars so fix them
take_damage(0)
- icon_state = "syndieturret" + "[state]"
+ icon_state = "[base_icon_state]" + "[state]"
return
@@ -479,8 +483,8 @@
return
if (targloc == curloc)
return
- playsound(src, 'sound/weapons/Gunshot.ogg', 50, 1)
- var/obj/item/projectile/A = new /obj/item/projectile/bullet(curloc)
+ playsound(src, fire_sound, 50, 1)
+ var/obj/item/projectile/A = new projectile_type(curloc)
A.current = curloc
A.yo = targloc.y - curloc.y
A.xo = targloc.x - curloc.x
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index bdb48027570..1021962de57 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -767,7 +767,7 @@
products = list(/obj/item/weapon/reagent_containers/glass/bottle/antitoxin = 4,/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline = 4,
/obj/item/weapon/reagent_containers/glass/bottle/stoxin = 4,/obj/item/weapon/reagent_containers/glass/bottle/toxin = 4,
/obj/item/weapon/reagent_containers/syringe/antiviral = 4,/obj/item/weapon/reagent_containers/syringe = 12,/obj/item/weapon/reagent_containers/hypospray/medipen = 5,
- /obj/item/device/healthanalyzer = 5,/obj/item/weapon/reagent_containers/glass/beaker = 4, /obj/item/weapon/reagent_containers/dropper = 2)
+ /obj/item/device/healthanalyzer = 5,/obj/item/weapon/reagent_containers/glass/beaker = 4, /obj/item/weapon/reagent_containers/dropper = 2, /obj/item/device/sensor_device = 2)
contraband = list(/obj/item/weapon/reagent_containers/pill/tox = 3,/obj/item/weapon/reagent_containers/pill/stox = 4,/obj/item/weapon/reagent_containers/pill/antitox = 6)
@@ -877,7 +877,8 @@
/obj/item/clothing/suit/wizrobe/fake = 1,/obj/item/clothing/head/wizard/fake = 1,/obj/item/weapon/staff = 3,/obj/item/clothing/mask/gas/sexyclown = 1,
/obj/item/clothing/under/sexyclown = 1,/obj/item/clothing/mask/gas/sexymime = 1,/obj/item/clothing/under/sexymime = 1,/obj/item/clothing/suit/apron/overalls = 1,
/obj/item/clothing/head/rabbitears =1, /obj/item/clothing/head/sombrero = 1, /obj/item/clothing/head/sombrero/green = 1, /obj/item/clothing/suit/poncho = 1,
- /obj/item/clothing/suit/poncho/green = 1, /obj/item/clothing/suit/poncho/red = 1, /obj/item/clothing/tie/blue = 1, /obj/item/clothing/tie/red = 1, /obj/item/clothing/tie/black = 1, /obj/item/clothing/tie/horrible = 1)
+ /obj/item/clothing/suit/poncho/green = 1, /obj/item/clothing/suit/poncho/red = 1, /obj/item/clothing/tie/blue = 1, /obj/item/clothing/tie/red = 1, /obj/item/clothing/tie/black = 1, /obj/item/clothing/tie/horrible = 1,
+ /obj/item/clothing/under/maid = 1, /obj/item/clothing/under/janimaid = 1)
contraband = list(/obj/item/clothing/suit/judgerobe = 1,/obj/item/clothing/head/powdered_wig = 1,/obj/item/weapon/gun/magic/wand = 1)
premium = list(/obj/item/clothing/suit/hgpirate = 1, /obj/item/clothing/head/hgpiratecap = 1, /obj/item/clothing/head/helmet/roman = 1, /obj/item/clothing/head/helmet/roman/legionaire = 1, /obj/item/clothing/under/roman = 1, /obj/item/clothing/shoes/roman = 1, /obj/item/weapon/shield/riot/roman = 1)
refill_canister = /obj/item/weapon/vending_refill/autodrobe
@@ -975,7 +976,7 @@
/obj/item/clothing/tie/scarf/lightblue=1,/obj/item/clothing/tie/scarf/white=1,/obj/item/clothing/tie/scarf/black=1,
/obj/item/clothing/tie/scarf/zebra=1,/obj/item/clothing/tie/scarf/christmas=1,/obj/item/clothing/tie/stripedredscarf=1,
/obj/item/clothing/tie/stripedbluescarf=1,/obj/item/clothing/tie/stripedgreenscarf=1,/obj/item/clothing/tie/waistcoat=1,
- /obj/item/clothing/under/sundress=2,/obj/item/clothing/under/blacktango=1,/obj/item/clothing/suit/jacket=3,
+ /obj/item/clothing/under/sundress=2,/obj/item/clothing/under/stripeddress = 1, /obj/item/clothing/under/sailordress = 1, /obj/item/clothing/under/redeveninggown = 1, /obj/item/clothing/under/blacktango=1,/obj/item/clothing/suit/jacket=3,
/obj/item/clothing/glasses/regular=2,/obj/item/clothing/head/sombrero=1,/obj/item/clothing/suit/poncho=1,
/obj/item/clothing/suit/ianshirt=1,/obj/item/clothing/shoes/laceup=2,/obj/item/clothing/shoes/sneakers/black=4,
/obj/item/clothing/shoes/sandal=1)
diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm
index 73b14346a40..5d4b86c77da 100644
--- a/code/game/objects/effects/spawners/lootdrop.dm
+++ b/code/game/objects/effects/spawners/lootdrop.dm
@@ -26,7 +26,7 @@
/obj/item/weapon/gun/projectile/automatic/pistol = 8,
/obj/item/weapon/gun/projectile/shotgun/combat = 5,
/obj/item/weapon/gun/projectile/revolver/mateba,
- /obj/item/weapon/gun/projectile/automatic/deagle
+ /obj/item/weapon/gun/projectile/automatic/pistol/deagle
)
/obj/effect/spawner/lootdrop/maintenance
diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm
index 96d2f3ff66d..f6369e0c1af 100644
--- a/code/game/objects/effects/step_triggers.dm
+++ b/code/game/objects/effects/step_triggers.dm
@@ -3,6 +3,7 @@
/obj/effect/step_trigger
var/affect_ghosts = 0
var/stopper = 1 // stops throwers
+ var/mobs_only = 0
invisibility = 101 // nope cant see this shit
anchored = 1
@@ -15,10 +16,11 @@
return
if(istype(H, /mob/dead/observer) && !affect_ghosts)
return
+ if(!istype(H, /mob) && mobs_only)
+ return
Trigger(H)
-
/* Tosses things in a certain direction */
/obj/effect/step_trigger/thrower
@@ -114,3 +116,30 @@
A.x = rand(teleport_x, teleport_x_offset)
A.y = rand(teleport_y, teleport_y_offset)
A.z = rand(teleport_z, teleport_z_offset)
+
+
+/* Simple sound player, Mapper friendly! */
+
+/obj/effect/step_trigger/sound_effect
+ var/sound //eg. path to the sound, inside '' eg: 'growl.ogg'
+ var/volume = 100
+ var/freq_vary = 1 //Should the frequency of the sound vary?
+ var/extra_range = 0 // eg World.view = 7, extra_range = 1, 7+1 = 8, 8 turfs radius
+ var/happens_once = 0
+ var/triggerer_only = 0 //Whether the triggerer is the only person who hears this
+
+
+/obj/effect/step_trigger/sound_effect/Trigger(var/atom/movable/A)
+ var/turf/T = get_turf(A)
+
+ if(!T)
+ return
+
+ if(triggerer_only)
+ A.playsound_local(T, sound, volume, freq_vary)
+ else
+ playsound(T, sound, volume, freq_vary, extra_range)
+
+ if(happens_once)
+ qdel(src)
+
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index df3c30675bd..82cf59a988e 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -119,7 +119,7 @@
if (istype(src.loc, /obj/item/weapon/storage))
//If the item is in a storage item, take it out
var/obj/item/weapon/storage/S = src.loc
- S.remove_from_storage(src)
+ S.remove_from_storage(src, user.loc)
src.throwing = 0
if (loc == user)
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index ab970a7db47..296b2a2d6dd 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -161,6 +161,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
/obj/item/device/pda/librarian
icon_state = "pda-library"
+ default_cartridge = /obj/item/weapon/cartridge/librarian
desc = "A portable microcomputer by Thinktronic Systems, LTD. This is model is a WGW-11 series e-reader."
note = "Congratulations, your station has chosen the Thinktronic 5290 WGW-11 Series E-reader and Personal Data Assistant!"
silent = 1 //Quiet in the library!
@@ -170,8 +171,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
desc = "A portable microcomputer by Thinktronic Systems, LTD. This is model is a special edition with a transparent case."
note = "Congratulations, you have chosen the Thinktronic 5230 Personal Data Assistant Deluxe Special Max Turbo Limited Edition!"
-/obj/item/device/pda/chef
- icon_state = "pda-chef"
+/obj/item/device/pda/cook
+ icon_state = "pda-cook"
/obj/item/device/pda/bar
icon_state = "pda-bartender"
@@ -343,6 +344,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
dat += "
Cleanbot Access"
if (istype(cartridge.radio, /obj/item/radio/integrated/signal))
dat += "
Signaler System"
+ if (cartridge.access_newscaster)
+ dat += "
Newscaster Access "
if (cartridge.access_reagent_scanner)
dat += "
[scanmode == 3 ? "Disable" : "Enable"] Reagent Scanner"
if (cartridge.access_engine)
diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm
index e42c3cf453a..c38f0e68912 100644
--- a/code/game/objects/items/devices/PDA/cart.dm
+++ b/code/game/objects/items/devices/PDA/cart.dm
@@ -17,6 +17,7 @@
var/access_janitor = 0
// var/access_flora = 0
var/access_reagent_scanner = 0
+ var/access_newscaster = 0
var/access_remote_door = 0 //Control some blast doors remotely!!
var/remote_door_id = ""
var/access_status_display = 0
@@ -32,6 +33,7 @@
var/message1 // used for status_displays
var/message2
var/list/stored_data = list()
+ var/current_channel
/obj/item/weapon/cartridge/engineering
name = "\improper Power-ON cartridge"
@@ -115,6 +117,12 @@
icon_state = "cart-mi"
access_mime = 1
var/mime_charges = 5
+
+/obj/item/weapon/cartridge/librarian
+ name = "\improper Lib-Tweet cartridge"
+ icon_state = "cart-s"
+ access_newscaster = 1
+
/*
/obj/item/weapon/cartridge/botanist
name = "\improper Green Thumb v4.20 cartridge"
@@ -700,6 +708,20 @@ Code:
var/obj/item/radio/integrated/medbot/SC = radio
bot_control(SC)
+ if (53) // Newscaster
+ menu = "
Newscaster Access
"
+ menu += "
Current Newsfeed: [current_channel ? current_channel : "None"]
"
+ var/datum/feed_channel/current
+ for(var/datum/feed_channel/chan in news_network.network_channels)
+ if (chan.channel_name == current_channel)
+ current = chan
+ if(!current)
+ menu += " ERROR : NO CHANNEL FOUND
"
+ return
+ for(var/datum/feed_message/msg in current.messages)
+ menu +="-[msg.body]
\[Story by [msg.author]\]
"
+ menu += "
Post Message"
+
/obj/item/weapon/cartridge/Topic(href, href_list)
..()
@@ -762,5 +784,32 @@ Code:
loc:mode = 433
mode = 433
+ if("Newscaster Access")
+ mode = 53
+
+ if("Newscaster Message")
+ var/obj/item/device/pda/pda = loc
+ var/pda_owner_name = pda.id ? "[pda.id.registered_name] ([pda.id.assignment])" : "Unknown"
+ var/message = pda.msg_input()
+ var/datum/feed_channel/current
+ for(var/datum/feed_channel/chan in news_network.network_channels)
+ if (chan.channel_name == current_channel)
+ current = chan
+ if(current.locked && current.author != pda_owner_name)
+ pda.cart += " ERROR : NOT AUTHORIZED [pda.id ? "" : "- ID SLOT EMPTY"]
"
+ pda.Topic(null,list("choice"="Refresh"))
+ return
+ news_network.SubmitArticle(message,pda.owner,current_channel)
+ pda.Topic(null,list("choice"=num2text(mode)))
+ return
+
+ if("Newscaster Switch Channel")
+ var/obj/item/device/pda/pda = loc
+ current_channel = pda.msg_input()
+ pda.Topic(null,list("choice"=num2text(mode)))
+ return
+
+
+
generate_menu()
print_to_host(menu)
diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm
index 5735a6af412..71959e986ae 100644
--- a/code/game/objects/items/devices/flash.dm
+++ b/code/game/objects/items/devices/flash.dm
@@ -2,7 +2,7 @@
name = "flash"
desc = "A powerful and versatile flashbulb device, with applications ranging from disorienting attackers to acting as visual receptors in robot production."
icon_state = "flash"
- item_state = "flashbang" //looks exactly like a flash (and nothing like a flashbang)
+ item_state = "flashtool"
throwforce = 0
w_class = 1
throw_speed = 3
diff --git a/code/game/objects/items/devices/sensor_device.dm b/code/game/objects/items/devices/sensor_device.dm
new file mode 100644
index 00000000000..2bcddf5de79
--- /dev/null
+++ b/code/game/objects/items/devices/sensor_device.dm
@@ -0,0 +1,11 @@
+/obj/item/device/sensor_device
+ name = "handheld crew monitor" //Thanks to Gun Hog for the name!
+ desc = "A miniature machine that tracks suit sensors across the station."
+ icon = 'icons/obj/device.dmi'
+ icon_state = "scanner"
+ w_class = 2.0
+ slot_flags = SLOT_BELT
+ origin_tech = "programming=3;materials=3;magnets=3"
+
+/obj/item/device/sensor_device/attack_self(mob/user as mob)
+ crewmonitor(user,src) //Proc already exists, just had to call it
diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm
index 64951705275..00ea33f28ef 100644
--- a/code/game/objects/items/devices/transfer_valve.dm
+++ b/code/game/objects/items/devices/transfer_valve.dm
@@ -10,8 +10,6 @@
var/valve_open = 0
var/toggle = 1
-/obj/item/device/transfer_valve/proc/process_activation(var/obj/item/device/D)
-
/obj/item/device/transfer_valve/IsAssemblyHolder()
return 1
@@ -44,7 +42,7 @@
user << "The device is secured."
return
if(attached_device)
- user << "There is already an device attached to the valve, remove it first."
+ user << "There is already a device attached to the valve, remove it first."
return
user.remove_from_mob(item)
attached_device = A
@@ -114,7 +112,7 @@
return
return
-/obj/item/device/transfer_valve/process_activation(var/obj/item/device/D)
+/obj/item/device/transfer_valve/proc/process_activation(var/obj/item/device/D)
if(toggle)
toggle = 0
toggle_valve()
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index a3fb7b85c82..10adc58768c 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -113,7 +113,7 @@
usr << "There's no mounting point for the module!"
return 0
- var/obj/item/weapon/gun/energy/taser/cyborg/T = locate() in R.module
+ var/obj/item/weapon/gun/energy/gun/advtaser/cyborg/T = locate() in R.module
if(!T)
T = locate() in R.module.contents
if(!T)
diff --git a/code/game/objects/items/weapons/RPD.dm b/code/game/objects/items/weapons/RPD.dm
new file mode 100644
index 00000000000..799f1e823ae
--- /dev/null
+++ b/code/game/objects/items/weapons/RPD.dm
@@ -0,0 +1,553 @@
+//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
+
+/*
+CONTAINS:
+RPD
+*/
+#define PIPE_BINARY 0
+#define PIPE_BENT 1
+#define PIPE_TRINARY 2
+#define PIPE_TRIN_M 3
+#define PIPE_UNARY 4
+
+#define PAINT_MODE -2
+#define EATING_MODE -1
+#define ATMOS_MODE 0
+#define METER_MODE 1
+#define DISPOSALS_MODE 2
+
+/datum/pipe_info
+ var/id=-1
+ var/dir=SOUTH
+ var/dirtype=PIPE_BINARY
+ var/icon = 'icons/obj/pipe-item.dmi'
+ var/icon_state=""
+ var/selected=0
+
+/datum/pipe_info/New(var/pid,var/direction,var/dt)
+ src.id=pid
+ src.icon_state=pipeID2State[pid+1]
+ src.dir=direction
+ src.dirtype=dt
+
+/datum/pipe_info/proc/Render(var/dispenser,var/label)
+ return "[label]"
+
+/datum/pipe_info/meter
+ icon = 'icons/obj/pipes.dmi'
+ icon_state = "meterX"
+
+/datum/pipe_info/meter/New()
+ return
+
+/datum/pipe_info/meter/Render(var/dispenser,var/label)
+ return "[label]" //hardcoding is no
+
+var/global/list/disposalpipeID2State=list(
+ "pipe-s",
+ "pipe-c",
+ "pipe-j1",
+ "pipe-j2",
+ "pipe-y",
+ "pipe-t",
+ "condisposal",
+ "outlet",
+ "intake",
+ "pipe-j1s",
+ "pipe-j2s"
+)
+
+/datum/pipe_info/disposal
+ icon = 'icons/obj/pipes/disposal.dmi'
+ icon_state = "meterX"
+
+/datum/pipe_info/disposal/New(var/pid,var/dt)
+ src.id=pid
+ src.icon_state=disposalpipeID2State[pid+1]
+ src.dir=2
+ src.dirtype=dt
+ if(pid<6 || pid>8)
+ icon_state = "con[icon_state]"
+
+/datum/pipe_info/disposal/Render(var/dispenser,var/label)
+ return "[label]" //avoid hardcoding.
+
+//find these defines in code\game\machinery\pipe\consruction.dm
+var/global/list/RPD_recipes=list(
+ "Regular Pipes" = list(
+ "Pipe" = new /datum/pipe_info(PIPE_SIMPLE_STRAIGHT, 1, PIPE_BINARY),
+ "Bent Pipe" = new /datum/pipe_info(PIPE_SIMPLE_BENT, 5, PIPE_BENT),
+ "Manifold" = new /datum/pipe_info(PIPE_MANIFOLD, 1, PIPE_TRINARY),
+ "Manual Valve" = new /datum/pipe_info(PIPE_MVALVE, 1, PIPE_BINARY),
+ "Digital Valve" = new /datum/pipe_info(PIPE_DVALVE, 1, PIPE_BINARY),
+ "4-Way Manifold" = new /datum/pipe_info(PIPE_4WAYMANIFOLD, 1, PIPE_BINARY),
+ ),
+ "Devices"=list(
+ "Connector" = new /datum/pipe_info(PIPE_CONNECTOR, 1, PIPE_UNARY),
+ "Unary Vent" = new /datum/pipe_info(PIPE_UVENT, 1, PIPE_UNARY),
+ "Gas Pump" = new /datum/pipe_info(PIPE_PUMP, 1, PIPE_UNARY),
+ "Passive Gate" = new /datum/pipe_info(PIPE_PASSIVE_GATE, 1, PIPE_UNARY),
+ "Volume Pump" = new /datum/pipe_info(PIPE_VOLUME_PUMP, 1, PIPE_UNARY),
+ "Scrubber" = new /datum/pipe_info(PIPE_SCRUBBER, 1, PIPE_UNARY),
+ "Meter" = new /datum/pipe_info/meter(),
+ "Gas Filter" = new /datum/pipe_info(PIPE_GAS_FILTER, 1, PIPE_TRIN_M),
+ "Gas Mixer" = new /datum/pipe_info(PIPE_GAS_MIXER, 1, PIPE_TRIN_M),
+// "Injector" = new /datum/pipe_info(PIPE_INJECTOR, 1, PIPE_UNARY),
+ ),
+ "Heat Exchange" = list(
+ "Pipe" = new /datum/pipe_info(PIPE_HE_STRAIGHT, 1, PIPE_BINARY),
+ "Bent Pipe" = new /datum/pipe_info(PIPE_HE_BENT, 5, PIPE_BENT),
+ "Junction" = new /datum/pipe_info(PIPE_JUNCTION, 1, PIPE_UNARY),
+ "Heat Exchanger" = new /datum/pipe_info(PIPE_HEAT_EXCHANGE, 1, PIPE_UNARY),
+ ),
+ "Insulated Pipes" = list(
+ "Pipe" = new /datum/pipe_info(PIPE_INSULATED_STRAIGHT,1, PIPE_BINARY),
+ "Bent Pipe" = new /datum/pipe_info(PIPE_INSULATED_BENT, 5, PIPE_BENT),
+ ),
+ "Disposal Pipes" = list(
+ "Pipe" = new /datum/pipe_info/disposal(DISP_PIPE_STRAIGHT, PIPE_BINARY),
+ "Bent Pipe" = new /datum/pipe_info/disposal(DISP_PIPE_BENT, PIPE_BENT),
+ "Junction" = new /datum/pipe_info/disposal(DISP_JUNCTION, PIPE_TRINARY),
+ "Y-Junction" = new /datum/pipe_info/disposal(DISP_YJUNCTION, PIPE_TRINARY),
+ "Trunk" = new /datum/pipe_info/disposal(DISP_END_TRUNK, PIPE_TRINARY),
+ "Bin" = new /datum/pipe_info/disposal(DISP_END_BIN, PIPE_UNARY),
+ "Outlet" = new /datum/pipe_info/disposal(DISP_END_OUTLET, PIPE_UNARY),
+ "Chute" = new /datum/pipe_info/disposal(DISP_END_CHUTE, PIPE_UNARY),
+ )
+)
+/obj/item/weapon/pipe_dispenser
+ name = "Rapid Piping Device (RPD)"
+ desc = "A device used to rapidly pipe things."
+ icon = 'icons/obj/items.dmi'
+ icon_state = "rpd"
+ opacity = 0
+ density = 0
+ anchored = 0.0
+ flags = CONDUCT
+ force = 10.0
+ throwforce = 10.0
+ throw_speed = 1
+ throw_range = 5
+ w_class = 3.0
+ m_amt = 75000
+ g_amt = 37500
+ origin_tech = "engineering=4;materials=2"
+ var/datum/effect/effect/system/spark_spread/spark_system
+ var/working = 0
+ var/p_type = 0
+ var/p_conntype = 0
+ var/p_dir = 1
+ var/p_class = ATMOS_MODE
+ var/p_disposal = 0
+ var/list/paint_colors = list(
+ "grey" = "#cccccc",
+ "red" = "#800000",
+ "blue" = "#000080",
+ "cyan" = "#1C94C4",
+ "green" = "#00CC00",
+ "yellow" = "#FFCC00",
+ "purple" = "#822BFF"
+ )
+ var/paint_color="grey"
+
+/obj/item/weapon/pipe_dispenser/New()
+ . = ..()
+ spark_system = new /datum/effect/effect/system/spark_spread
+ spark_system.set_up(5, 0, src)
+ spark_system.attach(src)
+
+/obj/item/weapon/pipe_dispenser/attack_self(mob/user as mob)
+ show_menu(user)
+
+/obj/item/weapon/pipe_dispenser/proc/render_dir_img(var/_dir,var/pic,var/title)
+ var/selected=""
+ if(_dir == p_dir)
+ selected=" class=\"selected\""
+ return "
"
+
+/obj/item/weapon/pipe_dispenser/proc/show_menu(mob/user as mob)
+ if(!user || !src) return 0
+ var/dat = {"Type
+Utilities:
+"}
+ var/icon/preview=null
+ for(var/category in RPD_recipes)
+ dat += "[category]:"
+ var/list/cat=RPD_recipes[category]
+ for(var/label in cat)
+ var/datum/pipe_info/I = cat[label]
+ var/found=0
+ if(I.id == p_type)
+ if(p_class==ATMOS_MODE && I.type==/datum/pipe_info)
+ found=1
+ else if(p_class==DISPOSALS_MODE && I.type==/datum/pipe_info/disposal)
+ found=1
+ if(found)
+ preview=new /icon(I.icon,I.icon_state)
+ dat += I.Render(src,label)
+ dat += "
"
+
+ var/color_css=""
+ var/color_picker=""
+ for(var/color_name in paint_colors)
+ var/color=paint_colors[color_name]
+ color_css += {"
+ a.color.[color_name] {
+ color: [color];
+ }
+ a.color.[color_name]:hover {
+ border:1px solid [color];
+ }
+ a.color.[color_name].selected {
+ background-color: [color];
+ }
+ "}
+ var/selected=""
+ if(color_name==paint_color)
+ selected = " selected"
+ color_picker += {"•"}
+
+ var/dirsel="Direction
"
+ switch(p_conntype)
+ if(-1)
+ if(p_class==PAINT_MODE)
+ dirsel = "Direction
[color_picker]"
+
+ if(PIPE_BINARY) // Straight, N-S, W-E
+ if(preview)
+ user << browse_rsc(new /icon(preview, dir=NORTH), "vertical.png")
+ user << browse_rsc(new /icon(preview, dir=EAST), "horizontal.png")
+
+ dirsel += ""
+ dirsel += render_dir_img(1,"vertical.png","Vertical")
+ dirsel += render_dir_img(4,"horizontal.png","Horizontal")
+ dirsel += "
"
+ else
+ dirsel+={"
+
+ ↕
+ ↔
+
+ "}
+ if(PIPE_BENT) // Bent, N-W, N-E etc
+ if(preview)
+ user << browse_rsc(new /icon(preview, dir=NORTHWEST), "nw.png")
+ user << browse_rsc(new /icon(preview, dir=NORTHEAST), "ne.png")
+ user << browse_rsc(new /icon(preview, dir=SOUTHWEST), "sw.png")
+ user << browse_rsc(new /icon(preview, dir=SOUTHEAST), "se.png")
+
+ dirsel += ""
+ dirsel += render_dir_img(9,"nw.png","West to North")
+ dirsel += render_dir_img(5,"ne.png","North to East")
+ dirsel += "
"
+ dirsel += render_dir_img(10,"sw.png","South to West")
+ dirsel += render_dir_img(6,"se.png","East to South")
+ dirsel += "
"
+ else
+ dirsel+={"
+
+ ╝
+ ╚
+
+ ╗
+ ╔
+
+ "}
+ if(PIPE_TRINARY) // Manifold
+ if(preview)
+ user << browse_rsc(new /icon(preview, dir=NORTH), "s.png")
+ user << browse_rsc(new /icon(preview, dir=EAST), "w.png")
+ user << browse_rsc(new /icon(preview, dir=SOUTH), "n.png")
+ user << browse_rsc(new /icon(preview, dir=WEST), "e.png")
+
+ dirsel += ""
+ dirsel += render_dir_img(1,"s.png","West South East")
+ dirsel += render_dir_img(4,"w.png","North West South")
+ dirsel += "
"
+ dirsel += render_dir_img(2,"n.png","East North West")
+ dirsel += render_dir_img(8,"e.png","South East North")
+ dirsel += "
"
+ else
+ dirsel+={"
+
+ ╦
+ ╣
+
+ ╩
+ ╠
+
+ "}
+ if(PIPE_TRIN_M) // Mirrored ones
+ if(preview)
+ user << browse_rsc(new /icon(preview, dir=NORTH), "s.png")
+ user << browse_rsc(new /icon(preview, dir=EAST), "w.png")
+ user << browse_rsc(new /icon(preview, dir=SOUTH), "n.png")
+ user << browse_rsc(new /icon(preview, dir=WEST), "e.png")
+ user << browse_rsc(new /icon(preview, dir=SOUTHEAST), "sm.png") //each mirror icon is 45 anticlockwise from it's real direction
+ user << browse_rsc(new /icon(preview, dir=NORTHEAST), "wm.png")
+ user << browse_rsc(new /icon(preview, dir=NORTHWEST), "nm.png")
+ user << browse_rsc(new /icon(preview, dir=SOUTHWEST), "em.png")
+
+ dirsel += ""
+ dirsel += render_dir_img(1,"s.png","West South East")
+ dirsel += render_dir_img(4,"w.png","North West South")
+ dirsel += "
"
+ dirsel += render_dir_img(2,"n.png","East North West")
+ dirsel += render_dir_img(8,"e.png","South East North")
+ dirsel += "
"
+ dirsel += render_dir_img(6,"sm.png","West South East")
+ dirsel += render_dir_img(5,"wm.png","North West South")
+ dirsel += "
"
+ dirsel += render_dir_img(9,"nm.png","East North West")
+ dirsel += render_dir_img(10,"em.png","South East North")
+ dirsel += "
"
+ else
+ dirsel+={"
+
+ ╦
+ ╣
+
+ ╩
+ ╠
+
+ ╦
+ ╣
+
+ ╩
+ ╠
+
+ "}
+ if(PIPE_UNARY) // Unary
+ if(preview)
+ user << browse_rsc(new /icon(preview, dir=NORTH), "n.png")
+ user << browse_rsc(new /icon(preview, dir=EAST), "e.png")
+ user << browse_rsc(new /icon(preview, dir=SOUTH), "s.png")
+ user << browse_rsc(new /icon(preview, dir=WEST), "w.png")
+
+ dirsel += ""
+ dirsel += render_dir_img(NORTH,"n.png","North")
+ dirsel += render_dir_img(EAST, "e.png","East")
+ dirsel += render_dir_img(SOUTH,"s.png","South")
+ dirsel += render_dir_img(WEST, "w.png","West")
+ dirsel += "
"
+ else
+ dirsel+={"
+
+ ↑
+ →
+ ↓
+ ←
+
+ "}
+
+ dat = {"
+
+
+ [name]
+
+
+
+[dirsel][dat]
+
+
+"}
+ user << browse(dat, "window=pipedispenser")
+ onclose(user, "pipedispenser")
+ return
+
+/obj/item/weapon/pipe_dispenser/Topic(href, href_list)
+ if(usr.stat || usr.restrained())
+ usr << browse(null, "window=pipedispenser")
+ return
+ usr.set_machine(src)
+ src.add_fingerprint(usr)
+ if(href_list["setdir"])
+ p_dir= text2num(href_list["setdir"])
+ show_menu(usr)
+
+ if(href_list["eatpipes"])
+ p_class = EATING_MODE
+ p_conntype=-1
+ p_dir=1
+ src.spark_system.start()
+ playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
+ show_menu(usr)
+
+ if(href_list["paintpipes"])
+ p_class = PAINT_MODE
+ p_conntype=-1
+ p_dir=1
+ src.spark_system.start()
+ playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
+ show_menu(usr)
+
+ if(href_list["set_color"])
+ paint_color=href_list["set_color"]
+ src.spark_system.start()
+ playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
+ show_menu(usr)
+
+ if(href_list["makepipe"])
+ p_type = text2num(href_list["makepipe"])
+ p_dir = text2num(href_list["dir"])
+ p_conntype = text2num(href_list["type"])
+ p_class = ATMOS_MODE
+ src.spark_system.start()
+ playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
+ show_menu(usr)
+
+ if(href_list["makemeter"])
+ p_class = METER_MODE
+ p_conntype=-1
+ p_dir=1
+ src.spark_system.start()
+ playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
+ show_menu(usr)
+
+ if(href_list["dmake"])
+ p_type = text2num(href_list["dmake"])
+ p_conntype = text2num(href_list["type"])
+ p_dir = 1
+ p_class = DISPOSALS_MODE
+ src.spark_system.start()
+ playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
+ show_menu(usr)
+
+
+/obj/item/weapon/pipe_dispenser/afterattack(atom/A, mob/user)
+ if(!in_range(A,user))
+ return
+ if(loc != user)
+ return
+ if(!isrobot(user) && !ishuman(user))
+ return 0
+ if(istype(A,/area/shuttle)||istype(A,/turf/space/transit))
+ return 0
+
+ switch(p_class)
+ if(PAINT_MODE) // Paint pipes
+ if(!istype(A,/obj/machinery/atmospherics/pipe) || istype(A,/obj/machinery/atmospherics/pipe/simple/heat_exchanging) || istype(A,/obj/machinery/atmospherics/pipe/simple/insulated))
+ // Avoid spewing errors about invalid mode -2 when clicking on stuff that aren't pipes.
+ user << "\The [src]'s error light flickers. Perhaps you need to only use it on pipes and pipe meters?"
+ return 0
+ var/obj/machinery/atmospherics/pipe/P = A
+ playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
+ P.pipe_color = paint_color
+ user.visible_message("[user] paints \the [P] [paint_color].","You paint \the [P] [paint_color].")
+ P.update_icon()
+ return 1
+ if(EATING_MODE) // Eating pipes
+ // Must click on an actual pipe or meter.
+ if(istype(A,/obj/item/pipe) || istype(A,/obj/item/pipe_meter) || istype(A,/obj/structure/disposalconstruct))
+ user << "Destroying Pipe..."
+ playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
+ if(do_after(user, 5))
+ activate()
+ del(A)
+ return 1
+ return 0
+
+ // Avoid spewing errors about invalid mode -1 when clicking on stuff that aren't pipes.
+ user << "The [src]'s error light flickers. Perhaps you need to only use it on pipes and pipe meters?"
+ return 0
+ if(ATMOS_MODE)
+ if(!(istype(A, /turf)))
+ user << "The [src]'s error light flickers."
+ return 0
+ user << "Building Pipes ..."
+ playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
+ if(do_after(user, 20))
+ activate()
+ var/obj/item/pipe/P = new (A, pipe_type=p_type, dir=p_dir)
+ P.update()
+ P.add_fingerprint(usr)
+ return 1
+ return 0
+
+ if(METER_MODE)
+ if(!(istype(A, /turf)))
+ user << "The [src]'s error light flickers."
+ return 0
+ user << "Building Meter..."
+ playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
+ if(do_after(user, 20))
+ activate()
+ new /obj/item/pipe_meter(A)
+ return 1
+ return 0
+
+ if(DISPOSALS_MODE)
+ if(!(istype(A, /turf)))
+ user << "The [src]'s error light flickers."
+ return 0
+ user << "Building Pipes..."
+ playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
+ if(do_after(user, 20))
+ activate()
+ var/obj/structure/disposalconstruct/C = new (A)
+ // This may still produce runtimes, but I checked and /obj/structure/disposalconstruct
+ // DOES have a dir property, inherited from /obj/structure. - N3X
+ C.dir=p_dir
+ switch(p_type)
+ if(0)
+ C.ptype = 0
+ if(1)
+ C.ptype = 1
+ if(2)
+ C.ptype = 2
+ if(3)
+ C.ptype = 4
+ if(4)
+ C.ptype = 5
+ if(5)
+ C.ptype = 6
+ C.density = 1
+ if(6)
+ C.ptype = 7
+ C.density = 1
+ if(7)
+ C.ptype = 8
+ C.density = 1
+ C.add_fingerprint(usr)
+ C.update()
+ return 1
+ return 0
+ else
+ ..()
+ return 0
+
+
+/obj/item/weapon/pipe_dispenser/proc/activate()
+ playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
+
diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm
index 3d5cebfd920..f28044bff28 100644
--- a/code/game/objects/items/weapons/grenades/chem_grenade.dm
+++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm
@@ -76,8 +76,6 @@
else if(stage == EMPTY && istype(I, /obj/item/device/assembly_holder))
var/obj/item/device/assembly_holder/A = I
- if(!A.secured)
- return
if(isigniter(A.a_left) == isigniter(A.a_right)) //Check if either part of the assembly has an igniter, but if both parts are igniters, then fuck it
return
diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm
index 8ef7199f100..f7cd722f7d4 100644
--- a/code/game/objects/items/weapons/storage/storage.dm
+++ b/code/game/objects/items/weapons/storage/storage.dm
@@ -304,16 +304,10 @@
if(M.client)
M.client.screen -= W
- if(new_location)
- if(ismob(loc))
- W.dropped(usr)
- if(ismob(new_location))
- W.layer = 20
- else
- W.layer = initial(W.layer)
- W.loc = new_location
- else
- W.loc = get_turf(src)
+ if(ismob(loc))
+ W.dropped(usr)
+ W.layer = initial(W.layer)
+ W.loc = new_location
if(usr)
orient2hud(usr)
diff --git a/code/game/objects/items/weapons/tanks/jetpack.dm b/code/game/objects/items/weapons/tanks/jetpack.dm
index f261c0aeb09..6bb7562f847 100644
--- a/code/game/objects/items/weapons/tanks/jetpack.dm
+++ b/code/game/objects/items/weapons/tanks/jetpack.dm
@@ -41,6 +41,7 @@
icon_state = initial(icon_state)
// item_state = initial(item_state)
ion_trail.stop()
+ usr << "You toggle the jetpack [on? "on":"off"]."
return
diff --git a/code/game/objects/items/weapons/vending_items.dm b/code/game/objects/items/weapons/vending_items.dm
index daca863af4f..c88351ffb13 100644
--- a/code/game/objects/items/weapons/vending_items.dm
+++ b/code/game/objects/items/weapons/vending_items.dm
@@ -56,7 +56,7 @@
/obj/item/weapon/vending_refill/autodrobe
machine_name = "AutoDrobe"
icon_state = "refill_costume"
- charges = 19// of 58
+ charges = 20// of 60
/obj/item/weapon/vending_refill/clothing
machine_name = "ClothesMate"
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
index 439fb0a86ff..ae268783c38 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
@@ -125,8 +125,8 @@
/obj/structure/closet/secure_closet/atmospherics/New()
..()
- sleep(2)
new /obj/item/device/radio/headset/headset_eng(src)
+ new /obj/item/weapon/pipe_dispenser(src)
new /obj/item/weapon/storage/toolbox/mechanical(src)
new /obj/item/weapon/storage/backpack/satchel_norm(src)
new /obj/item/weapon/tank/emergency_oxygen/engi(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index 1406b2f5630..325757eef6d 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -82,7 +82,7 @@
new /obj/item/clothing/mask/gas/sechailer/swat(src)
new /obj/item/weapon/shield/riot/tele(src)
new /obj/item/weapon/melee/baton/loaded(src)
- new /obj/item/weapon/gun/energy/gun(src)
+ new /obj/item/weapon/gun/energy/gun/advtaser(src)
new /obj/item/weapon/storage/belt/security(src)
new /obj/item/clothing/suit/toggle/wintercoat/security(src)
return
@@ -112,7 +112,7 @@
new /obj/item/weapon/storage/box/zipties(src)
new /obj/item/weapon/reagent_containers/spray/pepper(src)
new /obj/item/weapon/melee/baton/loaded(src)
- new /obj/item/weapon/gun/energy/taser(src)
+ new /obj/item/weapon/gun/energy/gun/advtaser(src)
new /obj/item/weapon/storage/belt/security(src)
new /obj/item/clothing/suit/toggle/wintercoat/security(src)
return
@@ -137,7 +137,6 @@
new /obj/item/weapon/reagent_containers/spray/pepper(src)
new /obj/item/device/flash/handheld(src)
new /obj/item/weapon/grenade/flashbang(src)
- new /obj/item/weapon/gun/energy/taser(src)
new /obj/item/weapon/storage/belt/security(src)
new /obj/item/clothing/glasses/hud/security/sunglasses(src)
new /obj/item/clothing/suit/toggle/wintercoat/security(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm
index ae31fa0fdec..4522ee5f51e 100644
--- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm
+++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm
@@ -12,10 +12,9 @@
/obj/structure/closet/syndicate/personal/New()
..()
new /obj/item/clothing/under/syndicate(src)
- new /obj/item/clothing/suit/armor/vest(src)
- new /obj/item/clothing/head/helmet/swat/syndicate(src)
- new /obj/item/ammo_box/magazine/m10mm(src)
+ new /obj/item/clothing/shoes/sneakers/black(src)
new /obj/item/device/radio/headset/syndicate(src)
+ new /obj/item/ammo_box/magazine/m10mm(src)
new /obj/item/weapon/storage/belt/military(src)
new /obj/item/weapon/crowbar/red(src)
new /obj/item/clothing/glasses/night(src)
@@ -33,11 +32,11 @@
new /obj/item/ammo_box/magazine/m10mm(src)
new /obj/item/weapon/storage/box/flashbangs(src)
new /obj/item/weapon/storage/box/teargas(src)
- new /obj/item/weapon/gun/projectile/automatic/bulldog(src)
- new /obj/item/weapon/gun/projectile/automatic/bulldog(src)
- new /obj/item/weapon/gun/projectile/automatic/bulldog(src)
- new /obj/item/weapon/gun/projectile/automatic/bulldog(src)
- new /obj/item/weapon/gun/projectile/automatic/bulldog(src)
+ new /obj/item/weapon/gun/projectile/automatic/shotgun/bulldog(src)
+ new /obj/item/weapon/gun/projectile/automatic/shotgun/bulldog(src)
+ new /obj/item/weapon/gun/projectile/automatic/shotgun/bulldog(src)
+ new /obj/item/weapon/gun/projectile/automatic/shotgun/bulldog(src)
+ new /obj/item/weapon/gun/projectile/automatic/shotgun/bulldog(src)
new /obj/item/weapon/pinpointer/nukeop(src)
new /obj/item/weapon/pinpointer/nukeop(src)
new /obj/item/weapon/pinpointer/nukeop(src)
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 3b7ab8924b7..7111ef392aa 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -184,12 +184,11 @@
..()
if(severity == 3)
if(prob(25))
- density = 0
+ table_destroy(1)
/obj/structure/table/blob_act()
if(prob(75))
table_destroy(1)
- qdel(src)
return
/obj/structure/table/attack_alien(mob/living/user)
@@ -231,8 +230,11 @@
else
return 0
-
-/obj/structure/table/MouseDrop_T(obj/O, mob/user)
+/obj/structure/table/MouseDrop_T(atom/movable/O, mob/user)
+ if(ismob(O) && user == O && ishuman(user))
+ if(user.canmove)
+ climb_table(user)
+ return
if ((!( istype(O, /obj/item/weapon) ) || user.get_active_hand() != O))
return
if(isrobot(user))
@@ -358,10 +360,6 @@
* TABLE CLIMBING
*/
-/obj/structure/table/MouseDrop_T(mob/target, mob/living/carbon/human/user)
- if(istype(target) && user == target && istype(user))
- if(user.canmove)
- climb_table(user)
/obj/structure/table/proc/climb_table(mob/user)
src.add_fingerprint(user)
@@ -494,21 +492,20 @@
if(1.0)
qdel(src)
if(2.0)
- qdel(src)
if(prob(50))
- new /obj/item/weapon/rack_parts(src.loc)
+ rack_destroy()
+ else
+ qdel(src)
if(3.0)
if(prob(25))
- qdel(src)
- new /obj/item/weapon/rack_parts(src.loc)
+ rack_destroy()
/obj/structure/rack/blob_act()
if(prob(75))
qdel(src)
return
else if(prob(50))
- new /obj/item/weapon/rack_parts(src.loc)
- qdel(src)
+ rack_destroy()
return
/obj/structure/rack/CanPass(atom/movable/mover, turf/target, height=0)
@@ -534,9 +531,8 @@
/obj/structure/rack/attackby(obj/item/weapon/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/wrench))
- new /obj/item/weapon/rack_parts( src.loc )
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
- qdel(src)
+ rack_destroy()
return
if(isrobot(user))
@@ -559,38 +555,42 @@
"You kick [src].")
if(HULK in user.mutations)
- health -= 5
+ rack_destroy()
else
health -= rand(1,2)
- healthcheck()
+ healthcheck()
/obj/structure/rack/attack_alien(mob/living/user)
user.do_attack_animation(src)
visible_message("[user] slices [src] apart!")
- new /obj/item/weapon/rack_parts(loc)
- density = 0
- qdel(src)
+ rack_destroy()
/obj/structure/rack/attack_animal(mob/living/simple_animal/user)
if(user.environment_smash)
user.do_attack_animation(src)
visible_message("[user] smashes [src] apart!")
- new /obj/item/weapon/rack_parts(loc)
- density = 0
- qdel(src)
+ rack_destroy()
/obj/structure/rack/attack_tk() // no telehulk sorry
return
/obj/structure/rack/proc/healthcheck()
if(health <= 0)
- density = 0
- var/obj/item/weapon/rack_parts/newparts = new(loc)
- transfer_fingerprints_to(newparts)
- qdel(src)
+ rack_destroy()
return
+/*
+ * Rack destruction
+ */
+
+/obj/structure/rack/proc/rack_destroy()
+ density = 0
+ var/obj/item/weapon/rack_parts/newparts = new(loc)
+ transfer_fingerprints_to(newparts)
+ qdel(src)
+
+
/*
* Rack Parts
*/
diff --git a/code/game/sound.dm b/code/game/sound.dm
index b1a7042b8b3..14aace39369 100644
--- a/code/game/sound.dm
+++ b/code/game/sound.dm
@@ -20,8 +20,7 @@
M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, surround)
-/mob/proc/playsound_local(var/turf/turf_source, soundin, vol as num, vary, frequency, falloff, surround = 1)
- if(!src.client || ear_deaf > 0) return
+/atom/proc/playsound_local(var/turf/turf_source, soundin, vol as num, vary, frequency, falloff, surround = 1)
soundin = get_sfx(soundin)
var/sound/S = sound(soundin)
@@ -74,6 +73,11 @@
src << S
+/mob/playsound_local(var/turf/turf_source, soundin, vol as num, vary, frequency, falloff, surround = 1)
+ if(!client || ear_deaf > 0)
+ return
+ ..()
+
/client/proc/playtitlemusic()
if(!ticker || !ticker.login_music) return
if(prefs.toggles & SOUND_LOBBY)
@@ -96,4 +100,4 @@
if ("hiss") soundin = pick('sound/voice/hiss1.ogg','sound/voice/hiss2.ogg','sound/voice/hiss3.ogg','sound/voice/hiss4.ogg')
if ("pageturn") soundin = pick('sound/effects/pageturn1.ogg', 'sound/effects/pageturn2.ogg','sound/effects/pageturn3.ogg')
if ("gunshot") soundin = pick('sound/weapons/Gunshot.ogg', 'sound/weapons/Gunshot2.ogg','sound/weapons/Gunshot3.ogg','sound/weapons/Gunshot4.ogg')
- return soundin
\ No newline at end of file
+ return soundin
diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm
index 9e641352434..0be1070747c 100644
--- a/code/game/turfs/simulated/floor.dm
+++ b/code/game/turfs/simulated/floor.dm
@@ -158,3 +158,7 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3","
make_plating()
else if(prob(50))
ReplaceWithLattice()
+
+/turf/simulated/floor/narsie_act()
+ if(prob(20))
+ ChangeTurf(/turf/simulated/floor/engine/cult)
\ No newline at end of file
diff --git a/code/game/turfs/simulated/floor/light_floor.dm b/code/game/turfs/simulated/floor/light_floor.dm
index f1033633551..51f52b5de4c 100644
--- a/code/game/turfs/simulated/floor/light_floor.dm
+++ b/code/game/turfs/simulated/floor/light_floor.dm
@@ -8,7 +8,7 @@
luminosity = 5
icon_state = "light_on"
floor_tile = /obj/item/stack/tile/light
- broken_states = list("light-broken")
+ broken_states = list("light_broken")
var/on = 1
var/state //0 = fine, 1 = flickering, 2 = breaking, 3 = broken
diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm
index fd6b3e5e452..bd74639bd6d 100644
--- a/code/game/turfs/simulated/floor/plating.dm
+++ b/code/game/turfs/simulated/floor/plating.dm
@@ -110,6 +110,9 @@
name = "engraved floor"
icon_state = "cult"
+/turf/simulated/floor/engine/cult/narsie_act()
+ return
+
/turf/simulated/floor/engine/n20/New()
..()
var/datum/gas_mixture/adding = new
diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm
index fed36f77b71..d30300fd82e 100644
--- a/code/game/turfs/simulated/walls.dm
+++ b/code/game/turfs/simulated/walls.dm
@@ -286,4 +286,8 @@
return
if(current_size == STAGE_FOUR)
if(prob(30))
- dismantle_wall()
\ No newline at end of file
+ dismantle_wall()
+
+/turf/simulated/wall/narsie_act()
+ if(prob(20))
+ ChangeTurf(/turf/simulated/wall/cult)
\ No newline at end of file
diff --git a/code/game/turfs/simulated/walls_misc.dm b/code/game/turfs/simulated/walls_misc.dm
index 2f773d52b04..9c6b1529172 100644
--- a/code/game/turfs/simulated/walls_misc.dm
+++ b/code/game/turfs/simulated/walls_misc.dm
@@ -13,6 +13,9 @@
new /obj/effect/decal/cleanable/blood(src)
new /obj/effect/decal/remains/human(src)
+/turf/simulated/wall/cult/narsie_act()
+ return
+
/turf/simulated/wall/vault
icon_state = "rockvault"
diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm
index 2eb21269c60..20e86957187 100644
--- a/code/game/verbs/ooc.dm
+++ b/code/game/verbs/ooc.dm
@@ -43,6 +43,8 @@
if(prefs.toggles & MEMBER_PUBLIC)
keyname = "
[keyname]"
+ msg = emoji_parse(msg)
+
for(var/client/C in clients)
if(C.prefs.toggles & CHAT_OOC)
if(holder)
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 2cd0c18a2ae..d7572a1353f 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -1872,11 +1872,25 @@
if("guns")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","SG")
- rightandwrong(0, usr)
+ var/survivor_probability = 0
+ switch(alert("Do you want this to create survivors antagonists?",,"No Antags","Some Antags","All Antags!"))
+ if("Some Antags")
+ survivor_probability = 25
+ if("All Antags!")
+ survivor_probability = 100
+
+ rightandwrong(0, usr, survivor_probability)
if("magic")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","SM")
- rightandwrong(1, usr)
+ var/survivor_probability = 0
+ switch(alert("Do you want this to create survivors antagonists?",,"No Antags","Some Antags","All Antags!"))
+ if("Some Antags")
+ survivor_probability = 25
+ if("All Antags!")
+ survivor_probability = 100
+
+ rightandwrong(1, usr, survivor_probability)
if("events")
if(events && !events.wizardmode)
if(alert("Do you want to toggle summon events on?",,"Yes","No") == "Yes")
diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm
index 038d9d88553..39b8899c4b2 100644
--- a/code/modules/admin/verbs/adminpm.dm
+++ b/code/modules/admin/verbs/adminpm.dm
@@ -68,6 +68,8 @@
msg = sanitize(copytext(msg,1,MAX_MESSAGE_LEN))
if(!msg) return
+ msg = emoji_parse(msg)
+
if(C.holder)
if(holder) //both are admins
C << "Admin PM from-[key_name(src, C, 1)]: [msg]"
diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm
index 5c76dc8b1f1..f2c1e93930a 100644
--- a/code/modules/assembly/assembly.dm
+++ b/code/modules/assembly/assembly.dm
@@ -24,30 +24,9 @@
var/const/WIRE_RADIO_RECEIVE = 8 //Allows Pulsed(1) to call Activate()
var/const/WIRE_RADIO_PULSE = 16 //Allows Pulse(1) to send a radio message
-/obj/item/device/assembly/proc/activate() //What the device does when turned on
- return
-
-/obj/item/device/assembly/proc/pulsed(var/radio = 0) //Called when another assembly acts on this one, var/radio will determine where it came from for wire calcs
- return
-
-/obj/item/device/assembly/proc/pulse(var/radio = 0) //Called when this device attempts to act on another device, var/radio determines if it was sent via radio or direct
- return
-
-/obj/item/device/assembly/proc/toggle_secure() //Code that has to happen when the assembly is un\secured goes here
- return
-
-/obj/item/device/assembly/proc/attach_assembly(var/obj/A, var/mob/user) //Called when an assembly is attacked by another
- return
-
-/obj/item/device/assembly/proc/process_cooldown() //Called via spawn(10) to have it count down the cooldown var
- return
-
/obj/item/device/assembly/proc/holder_movement() //Called when the holder is moved
return
-/obj/item/device/assembly/interact(mob/user as mob) //Called when attack_self is called
- return
-
/obj/item/device/assembly/proc/describe() // Called by grenades to describe the state of the trigger (time left, etc)
return "The trigger assembly looks broken!"
@@ -59,16 +38,18 @@
return 1
-
-/obj/item/device/assembly/process_cooldown()
+//Called via spawn(10) to have it count down the cooldown var
+/obj/item/device/assembly/proc/process_cooldown()
cooldown--
- if(cooldown <= 0) return 0
+ if(cooldown <= 0)
+ return 0
spawn(10)
process_cooldown()
return 1
-/obj/item/device/assembly/pulsed(var/radio = 0)
+//Called when another assembly acts on this one, var/radio will determine where it came from for wire calcs
+/obj/item/device/assembly/proc/pulsed(var/radio = 0)
if(holder && (wires & WIRE_RECEIVE))
activate()
if(radio && (wires & WIRE_RADIO_RECEIVE))
@@ -76,48 +57,41 @@
return 1
-/obj/item/device/assembly/pulse(var/radio = 0)
+//Called when this device attempts to act on another device, var/radio determines if it was sent via radio or direct
+/obj/item/device/assembly/proc/pulse(var/radio = 0)
if(holder && (wires & WIRE_PULSE))
holder.process_activation(src, 1, 0)
if(holder && (wires & WIRE_PULSE_SPECIAL))
holder.process_activation(src, 0, 1)
-
- if(istype(loc,/obj/item/weapon/grenade)) // This is a hack. Todo: Manage this better -Sayu
- var/obj/item/weapon/grenade/G = loc
- G.prime() // Adios, muchachos
-// if(radio && (wires & WIRE_RADIO_PULSE))
- //Not sure what goes here quite yet send signal?
return 1
-/obj/item/device/assembly/activate()
- if(!secured || (cooldown > 0)) return 0
+// What the device does when turned on
+/obj/item/device/assembly/proc/activate()
+ if(!secured || (cooldown > 0))
+ return 0
cooldown = 2
spawn(10)
process_cooldown()
return 1
-/obj/item/device/assembly/toggle_secure()
+/obj/item/device/assembly/proc/toggle_secure()
secured = !secured
update_icon()
return secured
-/obj/item/device/assembly/attach_assembly(var/obj/item/device/assembly/A, var/mob/user)
- holder = new/obj/item/device/assembly_holder(get_turf(src))
- if(holder.attach(A,src,user))
- user << "You attach \the [A] to \the [src]!"
- return 1
- return 0
-
-
/obj/item/device/assembly/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(isassembly(W))
var/obj/item/device/assembly/A = W
if((!A.secured) && (!secured))
- attach_assembly(A,user)
- return
+ holder = new/obj/item/device/assembly_holder(get_turf(src))
+ holder.assemble(src,A,user)
+ user << "You attach and secure \the [A] to \the [src]!"
+ else
+ user << "Both devices must be in attachable mode to be attached together."
+ return
if(istype(W, /obj/item/weapon/screwdriver))
if(toggle_secure())
user << "\The [src] is ready!"
@@ -142,7 +116,8 @@
/obj/item/device/assembly/attack_self(mob/user as mob)
- if(!user) return 0
+ if(!user)
+ return 0
user.set_machine(src)
interact(user)
return 1
@@ -151,40 +126,3 @@
/obj/item/device/assembly/interact(mob/user as mob)
return //HTML MENU FOR WIRES GOES HERE
-/*
- var/small_icon_state = null//If this obj will go inside the assembly use this for icons
- var/list/small_icon_state_overlays = null//Same here
- var/obj/holder = null
- var/cooldown = 0//To prevent spam
-
- proc
- Activate()//Called when this assembly is pulsed by another one
- Process_cooldown()//Call this via spawn(10) to have it count down the cooldown var
- Attach_Holder(var/obj/H, var/mob/user)//Called when an assembly holder attempts to attach, sets src's loc in here
-
-
- Activate()
- if(cooldown > 0)
- return 0
- cooldown = 2
- spawn(10)
- Process_cooldown()
- //Rest of code here
- return 0
-
-
- Process_cooldown()
- cooldown--
- if(cooldown <= 0) return 0
- spawn(10)
- Process_cooldown()
- return 1
-
-
- Attach_Holder(var/obj/H, var/mob/user)
- if(!H) return 0
- if(!H.IsAssemblyHolder()) return 0
- //Remember to have it set its loc somewhere in here
-
-
-*/
diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm
index 9cbf195ef97..755074c2855 100644
--- a/code/modules/assembly/bomb.dm
+++ b/code/modules/assembly/bomb.dm
@@ -87,8 +87,6 @@
/obj/item/weapon/tank/proc/bomb_assemble(W,user) //Bomb assembly proc. This turns assembly+tank into a bomb
var/obj/item/device/assembly_holder/S = W
var/mob/M = user
- if(!S.secured) //Check if the assembly is secured
- return
if(isigniter(S.a_left) == isigniter(S.a_right)) //Check if either part of the assembly has an igniter, but if both parts are igniters, then fuck it
return
diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm
index 3bd27af3549..1ef63734a9f 100644
--- a/code/modules/assembly/holder.dm
+++ b/code/modules/assembly/holder.dm
@@ -9,37 +9,29 @@
throw_speed = 2
throw_range = 7
- var/secured = 0
var/obj/item/device/assembly/a_left = null
var/obj/item/device/assembly/a_right = null
-/obj/item/device/assembly_holder/proc/attach(var/obj/item/device/D, var/obj/item/device/D2, var/mob/user)
- return
-
-/obj/item/device/assembly_holder/proc/process_activation(var/obj/item/device/D)
- return
-
/obj/item/device/assembly_holder/IsAssemblyHolder()
return 1
-/obj/item/device/assembly_holder/attach(var/obj/item/device/D, var/obj/item/device/D2, var/mob/user)
- if((!D)||(!D2)) return 0
- if((!isassembly(D))||(!isassembly(D2))) return 0
- if((D:secured)||(D2:secured)) return 0
- if(user)
- user.remove_from_mob(D)
- user.remove_from_mob(D2)
- D:holder = src
- D2:holder = src
- D.loc = src
- D2.loc = src
- a_left = D
- a_right = D2
- name = "[D.name]-[D2.name] assembly"
+/obj/item/device/assembly_holder/proc/assemble(var/obj/item/device/assembly/A, var/obj/item/device/assembly/A2, var/mob/user)
+ attach(A,user)
+ attach(A2,user)
+ name = "[A.name]-[A2.name] assembly"
update_icon()
- return 1
+/obj/item/device/assembly_holder/proc/attach(var/obj/item/device/assembly/A, var/mob/user)
+ if(user)
+ user.remove_from_mob(A)
+ A.holder = src
+ A.loc = src
+ A.toggle_secure()
+ if(!a_left)
+ a_left = A
+ else
+ a_right = A
/obj/item/device/assembly_holder/update_icon()
overlays.Cut()
@@ -54,16 +46,6 @@
if(master)
master.update_icon()
-
-/obj/item/device/assembly_holder/examine(mob/user)
- ..()
- if(secured)
- user << "\The [src] is secured and ready to be used."
- else
- user << "\The [src] can be attached to other things."
-
-
-
/obj/item/device/assembly_holder/HasProximity(atom/movable/AM as mob|obj)
if(a_left)
a_left.HasProximity(AM)
@@ -88,7 +70,7 @@
if(a_left && a_right)
a_left.holder_movement()
a_right.holder_movement()
- return
+ return
/obj/item/device/assembly_holder/attack_hand()//Perhapse this should be a holder_pickup proc instead, can add if needbe I guess
if(a_left && a_right)
@@ -97,55 +79,39 @@
..()
return
-
/obj/item/device/assembly_holder/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/screwdriver))
- if(!a_left || !a_right)
- user << "BUG:Assembly part missing, please report this!"
- return
- a_left.toggle_secure()
- a_right.toggle_secure()
- secured = !secured
- if(secured)
- user << "\The [src] is ready!"
- else
- user << "\The [src] can now be taken apart!"
- update_icon()
- return
+ var/turf/T = get_turf(src)
+ if(!T)
+ return 0
+ if(a_left)
+ a_left.holder = null
+ a_left.loc = T
+ if(a_right)
+ a_right.holder = null
+ a_right.loc = T
+ qdel(src)
else
..()
- return
-
/obj/item/device/assembly_holder/attack_self(mob/user as mob)
src.add_fingerprint(user)
- if(src.secured)
- if(!a_left || !a_right)
- user << "Assembly part missing!"
- return
- if(istype(a_left,a_right.type))//If they are the same type it causes issues due to window code
- switch(alert("Which side would you like to use?",,"Left","Right"))
- if("Left") a_left.attack_self(user)
- if("Right") a_right.attack_self(user)
- return
- else
- a_left.attack_self(user)
- a_right.attack_self(user)
+ if(!a_left || !a_right)
+ user << "Assembly part missing!"
+ return
+ if(istype(a_left,a_right.type))//If they are the same type it causes issues due to window code
+ switch(alert("Which side would you like to use?",,"Left","Right"))
+ if("Left") a_left.attack_self(user)
+ if("Right") a_right.attack_self(user)
+ return
else
- var/turf/T = get_turf(src)
- if(!T) return 0
- if(a_left)
- a_left:holder = null
- a_left.loc = T
- if(a_right)
- a_right:holder = null
- a_right.loc = T
- qdel(src)
- return
+ a_left.attack_self(user)
+ a_right.attack_self(user)
-/obj/item/device/assembly_holder/process_activation(var/obj/D, var/normal = 1, var/special = 1)
- if(!D) return 0
+/obj/item/device/assembly_holder/proc/process_activation(var/obj/D, var/normal = 1, var/special = 1)
+ if(!D)
+ return 0
if((normal) && (a_right) && (a_left))
if(a_right != D)
a_right.pulsed(0)
diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm
index 841c66b5e3a..5bb7d4473f8 100644
--- a/code/modules/awaymissions/corpse.dm
+++ b/code/modules/awaymissions/corpse.dm
@@ -130,7 +130,7 @@
corpsegloves = /obj/item/clothing/gloves/combat
corpseradio = /obj/item/device/radio/headset
corpsemask = /obj/item/clothing/mask/gas
- corpsehelmet = /obj/item/clothing/head/helmet/swat/syndicate
+ corpsehelmet = /obj/item/clothing/head/helmet/swat
corpseback = /obj/item/weapon/storage/backpack
corpseid = 1
corpseidjob = "Operative"
@@ -157,8 +157,8 @@
///////////Civilians//////////////////////
-/obj/effect/landmark/corpse/chef
- name = "Chef"
+/obj/effect/landmark/corpse/cook
+ name = "Cook"
corpseuniform = /obj/item/clothing/under/rank/chef
corpsesuit = /obj/item/clothing/suit/chef/classic
corpseshoes = /obj/item/clothing/shoes/sneakers/black
@@ -166,8 +166,8 @@
corpseback = /obj/item/weapon/storage/backpack
corpseradio = /obj/item/device/radio/headset
corpseid = 1
- corpseidjob = "Chef"
- corpseidaccess = "Chef"
+ corpseidjob = "Cook"
+ corpseidaccess = "Cook"
/obj/effect/landmark/corpse/doctor
diff --git a/code/modules/awaymissions/maploader/reader.dm b/code/modules/awaymissions/maploader/reader.dm
index 7ef70f87ae2..381b167fb6e 100644
--- a/code/modules/awaymissions/maploader/reader.dm
+++ b/code/modules/awaymissions/maploader/reader.dm
@@ -2,6 +2,9 @@
//SS13 Optimized Map loader
//////////////////////////////////////////////////////////////
+//global datum that will preload variables on atoms instanciation
+var/global/dmm_suite/preloader/_preloader = null
+
/**
* Construct the model map and control the loading process
@@ -163,7 +166,7 @@
//first instance the /area and remove it from the members list
index = members.len
var/atom/instance
- var/dmm_suite/preloader/_preloader = new(members_attributes[index])//preloader for assigning set variables on atom creation
+ _preloader = new(members_attributes[index])//preloader for assigning set variables on atom creation
instance = locate(members[index])
instance.contents.Add(locate(xcrd,ycrd,zcrd))
@@ -191,34 +194,6 @@
T = UT
index++
-
- //Replace the previous part of the code with this if it's unsafe to assume tiles have ALWAYS an /area AND a /turf
- /*while(members.len > 0)
- var/length = members.len
- var/member = members[length]
-
- if(ispath(member,/area))
- var/atom/instance
- var/dmm_suite/preloader/_preloader = new(members_attributes[length])
-
- instance = locate(member)
- instance.contents.Add(locate(xcrd,ycrd,zcrd))
-
- if(_preloader && instance)
- _preloader.load(instance)
-
- members.Remove(member)
- continue
-
- else if(ispath(member,/turf))
- instance_atom(member,members_attributes[length],xcrd,ycrd,zcrd)
- members.Remove(member)
- continue
-
- else
- break
- */
-
//finally instance all remainings objects/mobs
for(index=1,index < first_turf_index,index++)
instance_atom(members[index],members_attributes[index],xcrd,ycrd,zcrd)
@@ -230,11 +205,11 @@
//Instance an atom at (x,y,z) and gives it the variables in attributes
/dmm_suite/proc/instance_atom(var/path,var/list/attributes, var/x, var/y, var/z)
var/atom/instance
- var/dmm_suite/preloader/_preloader = new(attributes)
+ _preloader = new(attributes, path)
- instance = new path (locate(x,y,z), _preloader)//first preloader pass
+ instance = new path (locate(x,y,z))//first preloader pass
- if(_preloader && instance)//second preloader pass, as some variables may have been reset/changed by New()
+ if(_preloader && instance)//second preloader pass, for those atoms that don't ..() in New()
_preloader.load(instance)
return instance
@@ -242,9 +217,9 @@
//text trimming (both directions) helper proc
//optionally removes quotes before and after the text (for variable name)
/dmm_suite/proc/trim_text(var/what as text,var/trim_quotes=0)
- while(length(what) && (findtext(what," ",1,2)))// || findtext(what,quote,1,2)))
+ while(length(what) && (findtext(what," ",1,2)))
what=copytext(what,2,0)
- while(length(what) && (findtext(what," ",length(what),0)))// || findtext(what,quote,length(what),0)))
+ while(length(what) && (findtext(what," ",length(what),0)))
what=copytext(what,1,length(what))
if(trim_quotes)
while(length(what) && (findtext(what,quote,1,2)))
@@ -298,14 +273,18 @@
else if(isnum(text2num(trim_right)))
trim_right = text2num(trim_right)
- //Check for file
- else if(copytext(trim_right,1,2) == "'")
- trim_right = file(copytext(trim_right,2,length(trim_right)))
+ //Check for null
+ else if(trim_right == "null")
+ trim_right = null
//Check for list
else if(copytext(trim_right,1,5) == "list")
trim_right = text2list(copytext(trim_right,6,length(trim_right)))
+ //Check for file
+ else if(copytext(trim_right,1,2) == "'")
+ trim_right = file(copytext(trim_right,2,length(trim_right)))
+
to_return[trim_left] = trim_right
else//simple var
@@ -323,10 +302,11 @@
placed.opacity = 1
placed.underlays += turfs_underlays
-//atom creation method that preloads variables before creation
-/atom/New(atom/loc, dmm_suite/preloader/_dmm_preloader)
- if(istype(_dmm_preloader, /dmm_suite/preloader))
- _dmm_preloader.load(src)
+//atom creation method that preloads variables at creation
+/atom/New()
+ if(_preloader && (src.type == _preloader.target_path))//in case the instanciated atom is creating other atoms in New()
+ _preloader.load(src)
+
. = ..()
//////////////////
@@ -336,12 +316,15 @@
/dmm_suite/preloader
parent_type = /datum
var/list/attributes
+ var/target_path
-/dmm_suite/preloader/New(list/the_attributes)
+/dmm_suite/preloader/New(var/list/the_attributes, var/path)
.=..()
if(!the_attributes.len)
Del()
+ return
attributes = the_attributes
+ target_path = path
/dmm_suite/preloader/proc/load(atom/what)
for(var/attribute in attributes)
diff --git a/code/modules/awaymissions/mission_code/stationCollision.dm b/code/modules/awaymissions/mission_code/stationCollision.dm
index a97d1f13f30..b8cfb519a50 100644
--- a/code/modules/awaymissions/mission_code/stationCollision.dm
+++ b/code/modules/awaymissions/mission_code/stationCollision.dm
@@ -163,7 +163,7 @@ var/sc_safecode5 = "[rand(0,9)]"
desc = "Your body becomes weak and your feel your mind slipping away as you try to comprehend what you know can't be possible."
move_self = 0 //Contianed narsie does not move!
grav_pull = 0 //Contained narsie does not pull stuff in!
-
+ var/uneatable = list(/turf/space, /obj/effect/overlay, /mob/living/simple_animal/construct)
//Override this to prevent no adminlog runtimes and admin warnings about a singularity without containment
/obj/singularity/narsie/sc_Narsie/admin_investigate_setup()
return
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 31c9d545afd..04cb1330169 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -274,22 +274,24 @@ atom/proc/generate_female_clothing(index,t_color,icon)
if(src.has_sensor <= 0)
usr << "This suit does not have any sensors."
return 0
- src.sensor_mode += 1
- if(src.sensor_mode > 3)
- src.sensor_mode = 0
- switch(src.sensor_mode)
- if(0)
- M << "You disable your suit's remote sensing equipment."
- if(1)
- M << "Your suit will now report whether you are live or dead."
- if(2)
- M << "Your suit will now report your vital lifesigns."
- if(3)
- M << "Your suit will now report your vital lifesigns as well as your coordinate position."
- if(istype(loc,/mob/living/carbon/human))
- var/mob/living/carbon/human/H = loc
- if(H.w_uniform == src)
- H.update_suit_sensors()
+
+ var/list/modes = list("Off", "Binary vitals", "Exact vitals", "Tracking beacon")
+ var/switchMode = input("Select a sensor mode:", "Suit Sensor Mode", modes[sensor_mode + 1]) in modes
+ if(get_dist(usr, src) > 1)
+ usr << "You have moved too far away."
+ return
+ sensor_mode = modes.Find(switchMode) - 1
+
+ if (src.loc == usr)
+ switch(sensor_mode)
+ if(0)
+ usr << "You disable your suit's remote sensing equipment."
+ if(1)
+ usr << "Your suit will now only report whether you are alive or dead."
+ if(2)
+ usr << "Your suit will now only report your exact vital lifesigns."
+ if(3)
+ usr << "Your suit will now report your exact vital lifesigns as well as your coordinate position."
..()
/obj/item/clothing/under/verb/rolldown()
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index e91317052e5..1cdaaf78c71 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -61,12 +61,6 @@
armor = list(melee = 25, bullet = 60, laser = 25, energy = 10, bomb = 40, bio = 0, rad = 0)
strip_delay = 70
-/obj/item/clothing/head/helmet/swat/syndicate
- name = "blood-red helmet"
- desc = "An extremely robust, space-worthy helmet that lacks a visor to allow for goggle usage underneath. Property of Gorlex Marauders."
- icon_state = "helmetsyndi"
- item_state = "helmet"
-
/obj/item/clothing/head/helmet/thunderdome
name = "\improper Thunderdome helmet"
desc = "'Let the battle commence!'"
diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm
index 8343d2aca31..92f23576991 100644
--- a/code/modules/clothing/spacesuits/hardsuit.dm
+++ b/code/modules/clothing/spacesuits/hardsuit.dm
@@ -41,7 +41,7 @@
item_state = "eng_hardsuit"
slowdown = 2
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75)
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/t_scanner, /obj/item/weapon/rcd)
+ allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/device/t_scanner, /obj/item/weapon/rcd)
//Atmospherics
@@ -102,29 +102,89 @@
desc = "A special suit that protects against hazardous, low pressure environments. Has reinforced plating for wildlife encounters."
item_state = "mining_hardsuit"
armor = list(melee = 40, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 50)
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/pickaxe)
+ allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/pickaxe)
//Syndicate hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/syndi
name = "blood-red hardsuit helmet"
- desc = "An advanced helmet designed for work in special operations. Property of Gorlex Marauders."
- icon_state = "hardsuit0-syndi"
+ desc = "A dual-mode advanced helmet designed for work in special operations. It is in travel mode. Property of Gorlex Marauders."
+ icon_state = "hardsuit1-syndi"
item_state = "syndie_helm"
item_color = "syndi"
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
+ on = 1
+ action_button_name = "Toggle Helmet Mode"
+
+/obj/item/clothing/head/helmet/space/hardsuit/syndi/update_icon()
+ icon_state = "hardsuit[on]-[item_color]"
+
+/obj/item/clothing/head/helmet/space/hardsuit/syndi/attack_self(mob/user)
+ if(!isturf(user.loc))
+ user << "You cannot toggle your helmet while in this [user.loc]" //To prevent some lighting anomalities.
+ return
+ on = !on
+ if(on)
+ user << "You switch your helmet to travel mode."
+ name = "blood-red hardsuit helmet"
+ desc = "A dual-mode advanced helmet designed for work in special operations. It is in travel mode. Property of Gorlex Marauders."
+ flags = HEADCOVERSEYES | BLOCKHAIR | HEADCOVERSMOUTH | STOPSPRESSUREDMAGE | THICKMATERIAL
+ flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
+ cold_protection = HEAD
+ user.AddLuminosity(brightness_on)
+ else
+ user << "You switch your helmet to combat mode."
+ name = "blood-red hardsuit helmet (combat)"
+ desc = "A dual-mode advanced helmet designed for work in special operations. It is in combat mode. Property of Gorlex Marauders."
+ flags = BLOCKHAIR
+ flags_inv = HIDEEARS
+ cold_protection = null
+ user.AddLuminosity(-brightness_on)
+
+ update_icon()
+ playsound(src.loc, 'sound/mecha/mechmove03.ogg', 50, 1)
+ user.update_inv_head()
/obj/item/clothing/suit/space/hardsuit/syndi
- icon_state = "hardsuit-syndi"
name = "blood-red hardsuit"
- desc = "An advanced suit that protects against injuries during special operations. Property of Gorlex Marauders."
+ desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in travel mode. Property of Gorlex Marauders."
+ icon_state = "hardsuit1-syndi"
item_state = "syndie_hardsuit"
+ item_color = "syndi"
slowdown = 1
w_class = 3
+ var/on = 1
+ action_button_name = "Toggle Hardsuit Mode"
armor = list(melee = 60, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
allowed = list(/obj/item/weapon/gun,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword/saber,/obj/item/weapon/restraints/handcuffs,/obj/item/weapon/tank/emergency_oxygen)
+/obj/item/clothing/suit/space/hardsuit/syndi/update_icon()
+ icon_state = "hardsuit[on]-[item_color]"
+
+/obj/item/clothing/suit/space/hardsuit/syndi/attack_self(mob/user)
+ on = !on
+ if(on)
+ user << "You switch your hardsuit to travel mode."
+ name = "blood-red hardsuit helmet"
+ desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in travel mode. Property of Gorlex Marauders."
+ slowdown = 1
+ flags = STOPSPRESSUREDMAGE | THICKMATERIAL
+ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
+ cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS
+ else
+ user << "You switch your hardsuit to combat mode."
+ name = "blood-red hardsuit helmet (combat)"
+ desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in combat mode. Property of Gorlex Marauders."
+ slowdown = 0
+ flags = BLOCKHAIR
+ flags_inv = null
+ cold_protection = null
+
+ update_icon()
+ playsound(src.loc, 'sound/mecha/mechmove03.ogg', 50, 1)
+ user.update_inv_wear_suit()
+ user.update_inv_w_uniform()
//Wizard hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/wizard
@@ -169,7 +229,7 @@
desc = "A special suit that protects against hazardous, low pressure environments. Built with lightweight materials for easier movement."
item_state = "medical_hardsuit"
slowdown = 1
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical)
+ allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/storage/firstaid,/obj/item/device/healthanalyzer,/obj/item/stack/medical)
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50)
@@ -187,5 +247,5 @@
name = "security hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
item_state = "sec_hardsuit"
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank, /obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs)
+ allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen, /obj/item/weapon/gun/energy,/obj/item/weapon/reagent_containers/spray/pepper,/obj/item/weapon/gun/projectile,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/restraints/handcuffs)
armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50)
diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm
index de919a9be17..10aa34f3771 100644
--- a/code/modules/clothing/spacesuits/miscellaneous.dm
+++ b/code/modules/clothing/spacesuits/miscellaneous.dm
@@ -73,7 +73,7 @@
item_state = "void"
desc = "An old, NASA Centcom branch designed, dark red space suit."
slowdown = 1
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/multitool)
+ allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/device/multitool)
//Space santa outfit suit
diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm
index 5c90623466a..88cc52f77bd 100644
--- a/code/modules/clothing/under/miscellaneous.dm
+++ b/code/modules/clothing/under/miscellaneous.dm
@@ -374,4 +374,51 @@
item_state = "wcoat"
item_color = "black_tango"
fitted = 0
- can_adjust = 0
\ No newline at end of file
+ can_adjust = 0
+
+/obj/item/clothing/under/stripeddress
+ name = "striped dress"
+ desc = "Fashion in space."
+ icon_state = "striped_dress"
+ item_state = "stripeddress"
+ item_color = "striped_dress"
+ fitted = 0
+ can_adjust = 0
+
+/obj/item/clothing/under/sailordress
+ name = "sailor dress"
+ desc = "Formal wear for a leading lady."
+ icon_state = "sailor_dress"
+ item_state = "sailordress"
+ item_color = "sailor_dress"
+ fitted = 0
+ can_adjust = 0
+
+/obj/item/clothing/under/redeveninggown
+ name = "red evening gown"
+ desc = "Fancy dress for space bar singers."
+ icon_state = "red_evening_gown"
+ item_state = "redeveninggown"
+ item_color = "red_evening_gown"
+ fitted = 0
+ can_adjust = 0
+
+/obj/item/clothing/under/maid
+ name = "maid costume"
+ desc = "Maid in China."
+ icon_state = "maid"
+ item_state = "maid"
+ item_color = "maid"
+ body_parts_covered = CHEST|GROIN
+ fitted = 0
+ can_adjust = 0
+
+/obj/item/clothing/under/janimaid
+ name = "maid uniform"
+ desc = "A simple maid uniform for housekeeping."
+ icon_state = "janimaid"
+ item_state = "janimaid"
+ item_color = "janimaid"
+ body_parts_covered = CHEST|GROIN
+ fitted = 0
+ can_adjust = 0
diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm
index 51287eaf20b..c1eb8f03c3b 100644
--- a/code/modules/crafting/recipes.dm
+++ b/code/modules/crafting/recipes.dm
@@ -38,7 +38,7 @@
/obj/item/robot_parts/r_leg = 1,
/obj/item/stack/sheet/metal = 5,
/obj/item/stack/cable_coil = 5,
- /obj/item/weapon/gun/energy/taser = 1,
+ /obj/item/weapon/gun/energy/gun/advtaser = 1,
/obj/item/weapon/stock_parts/cell = 1,
/obj/item/device/assembly/prox_sensor = 1,
/obj/item/robot_parts/r_arm = 1)
diff --git a/code/modules/emoji/emoji_parse.dm b/code/modules/emoji/emoji_parse.dm
new file mode 100644
index 00000000000..aab9947c89e
--- /dev/null
+++ b/code/modules/emoji/emoji_parse.dm
@@ -0,0 +1,32 @@
+var/list/emojis
+
+/proc/emoji_parse(text)
+ if(!config.emojis)
+ return text
+ if(!emojis)
+ emojis = icon_states(icon('icons/emoji.dmi'))
+ var/parsed = ""
+ var/pos = 1
+ var/search = 0
+ var/emoji = ""
+ while(1)
+ search = findtext(text, ":", pos)
+ parsed += copytext(text, pos, search)
+ if(search)
+ pos = search
+ search = findtext(text, ":", pos+1)
+ if(search)
+ emoji = lowertext(copytext(text, pos+1, search))
+ if(emoji in emojis)
+ parsed += "
"
+ pos = search + 1
+ else
+ parsed += copytext(text, pos, search)
+ pos = search
+ emoji = ""
+ continue
+ else
+ parsed += copytext(text, pos, search)
+ break
+ return parsed
+
diff --git a/code/modules/events/holiday/xmas.dm b/code/modules/events/holiday/xmas.dm
index 63c52779fa7..8bc253eaaad 100644
--- a/code/modules/events/holiday/xmas.dm
+++ b/code/modules/events/holiday/xmas.dm
@@ -99,8 +99,8 @@
var/response = alert(M, "Santa is coming to town! Do you want to be santa?", "Ho ho ho!", "Yes", "No")
if(response == "Yes" && M && M.client && M.stat == DEAD && !santa)
santa = new /mob/living/carbon/human(pick(blobstart))
- M.mind.transfer_to(santa)
santa.key = M.key
+ qdel(M)
santa.real_name = "Santa Claus"
santa.name = "Santa Claus"
@@ -148,4 +148,4 @@
telespell.clothes_req = 0 //santa robes aren't actually magical.
santa.mind.spell_list += telespell //does the station have chimneys? WHO KNOWS!
- M << "You are Santa! Your objective is to bring joy to the people on this station. You can conjure more presents using a spell, and there are several presents in your bag."
+ santa << "You are Santa! Your objective is to bring joy to the people on this station. You can conjure more presents using a spell, and there are several presents in your bag."
diff --git a/code/modules/events/wizard/departmentrevolt.dm b/code/modules/events/wizard/departmentrevolt.dm
index 68c9d68e430..59707297095 100644
--- a/code/modules/events/wizard/departmentrevolt.dm
+++ b/code/modules/events/wizard/departmentrevolt.dm
@@ -30,7 +30,7 @@
jobs_to_revolt = list("Quartermaster", "Cargo Technician", "Shaft Miner")
nation = pick("Cargo", "Guna", "Suppli", "Mule", "Crate", "Ore", "Mini", "Shaf")
if("whatevercolorrepresentstheservicepeople") //the few, the proud, the technically aligned
- jobs_to_revolt = list("Bartender", "Chef", "Botanist", "Clown", "Mime", "Janitor", "Chaplain")
+ jobs_to_revolt = list("Bartender", "Cook", "Botanist", "Clown", "Mime", "Janitor", "Chaplain")
nation = pick("Honka", "Boozo", "Fatu", "Danka", "Mimi", "Libra", "Jani", "Religi")
nation += pick("stan", "topia", "land", "nia", "ca", "tova", "dor", "ador", "tia", "sia", "ano", "tica", "tide", "cis", "marea", "co", "taoide", "slavia", "stotzka")
diff --git a/code/modules/events/wizard/summons.dm b/code/modules/events/wizard/summons.dm
index b6ea39cef65..afe85bad448 100644
--- a/code/modules/events/wizard/summons.dm
+++ b/code/modules/events/wizard/summons.dm
@@ -6,7 +6,7 @@
earliest_start = 0
/datum/round_event/wizard/summonguns/start()
- rightandwrong(0)
+ rightandwrong(0,,10)
/datum/round_event_control/wizard/summonmagic //The Somewhat Less Classic
name = "Summon Magic"
@@ -16,4 +16,4 @@
earliest_start = 0
/datum/round_event/wizard/summonmagic/start()
- rightandwrong(1)
\ No newline at end of file
+ rightandwrong(1,,10)
\ No newline at end of file
diff --git a/code/modules/food&drinks/food/snacks/food_mixtures.dm b/code/modules/food&drinks/food/snacks/food_mixtures.dm
index a2b65c55b6b..04991d76b68 100644
--- a/code/modules/food&drinks/food/snacks/food_mixtures.dm
+++ b/code/modules/food&drinks/food/snacks/food_mixtures.dm
@@ -8,6 +8,8 @@
required_reagents = list("soymilk" = 10)
required_catalysts = list("enzyme" = 5)
result_amount = 1
+ mob_react=1
+
/datum/chemical_reaction/tofu/on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
for(var/i = 1, i <= created_volume, i++)
@@ -20,18 +22,21 @@
result = null
required_reagents = list("soymilk" = 2, "coco" = 2, "sugar" = 2)
result_amount = 1
+
/datum/chemical_reaction/chocolate_bar/on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
for(var/i = 1, i <= created_volume, i++)
new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location)
return
+
/datum/chemical_reaction/chocolate_bar2
name = "Chocolate Bar"
id = "chocolate_bar"
result = null
required_reagents = list("milk" = 2, "coco" = 2, "sugar" = 2)
result_amount = 1
+ mob_react = 1
/datum/chemical_reaction/chocolate_bar2/on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
for(var/i = 1, i <= created_volume, i++)
@@ -73,6 +78,7 @@
required_reagents = list("milk" = 40)
required_catalysts = list("enzyme" = 5)
result_amount = 1
+
/datum/chemical_reaction/cheesewheel/on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
new /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel(location)
@@ -84,6 +90,8 @@
result = null
required_reagents = list("blood" = 5, "clonexadone" = 1)
result_amount = 1
+ mob_react = 1
+
/datum/chemical_reaction/syntiflesh/on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(location)
diff --git a/code/modules/food&drinks/food/snacks_other.dm b/code/modules/food&drinks/food/snacks_other.dm
index e2a19d059ce..df65352f4dc 100644
--- a/code/modules/food&drinks/food/snacks_other.dm
+++ b/code/modules/food&drinks/food/snacks_other.dm
@@ -122,7 +122,7 @@
/obj/item/weapon/reagent_containers/food/snacks/badrecipe
name = "burned mess"
- desc = "Someone should be demoted from chef for this."
+ desc = "Someone should be demoted from cook for this."
icon_state = "badrecipe"
/obj/item/weapon/reagent_containers/food/snacks/badrecipe/New()
@@ -202,8 +202,6 @@
reagents.add_reagent("minttoxin", 1)
bitesize = 1
-////////////////////////////////FOOD ADDITIONS////////////////////////////////////////////
-
/obj/item/weapon/reagent_containers/food/snacks/wrap
name = "egg wrap"
desc = "The precursor to Pigs in a Blanket."
@@ -234,3 +232,26 @@
reagents.add_reagent("nutriment", 2)
reagents.add_reagent("toxin", 3)
bitesize = 2
+
+/obj/item/weapon/reagent_containers/food/snacks/chococoin
+ name = "chocolate coin"
+ desc = "A completely edible but nonflippable festive coin."
+ icon_state = "chococoin"
+
+/obj/item/weapon/reagent_containers/food/snacks/chococoin/New()
+ ..()
+ reagents.add_reagent("nutriment", 3)
+ reagents.add_reagent("sugar", 2)
+ reagents.add_reagent("coco", 2)
+ bitesize = 2
+
+/obj/item/weapon/reagent_containers/food/snacks/chocoorange
+ name = "chocolate orange"
+ desc = "A festive chocolate orange"
+ icon_state = "chocoorange"
+
+/obj/item/weapon/reagent_containers/food/snacks/chocoorange/New()
+ ..()
+ reagents.add_reagent("nutriment", 4)
+ reagents.add_reagent("sugar", 2)
+ reagents.add_reagent("coco", 2)
\ No newline at end of file
diff --git a/code/modules/food&drinks/food/snacks_pastry.dm b/code/modules/food&drinks/food/snacks_pastry.dm
index 319b1db0562..4860f4fd103 100644
--- a/code/modules/food&drinks/food/snacks_pastry.dm
+++ b/code/modules/food&drinks/food/snacks_pastry.dm
@@ -211,21 +211,10 @@
name = "\improper Donk-pocket"
desc = "The food of choice for the seasoned traitor."
icon_state = "donkpocket"
- var/warm = 0
/obj/item/weapon/reagent_containers/food/snacks/donkpocket/New()
..()
reagents.add_reagent("nutriment", 4)
- reagents.add_reagent("sugar", 5)
-
-/obj/item/weapon/reagent_containers/food/snacks/donkpocket/proc/cooltime() //Not working, derp?
- if(warm)
- spawn(4200) //ew
- warm = 0
- reagents.del_reagent("tricordrazine")
- reagents.add_reagent("sugar", 5)
- name = initial(name)
- return
/obj/item/weapon/reagent_containers/food/snacks/fortunecookie
name = "fortune cookie"
@@ -319,4 +308,15 @@
..()
reagents.add_reagent("nutriment", 3)
reagents.add_reagent("sugar", 3)
- bitesize = 2
\ No newline at end of file
+ bitesize = 2
+
+/obj/item/weapon/reagent_containers/food/snacks/chococornet/
+ name = "chocolate cornet"
+ desc = "Which side's the head, the fat end or the thin end?"
+ icon_state = "chococornet"
+
+/obj/item/weapon/reagent_containers/food/snacks/chococornet/New()
+ ..()
+ reagents.add_reagent("nutriment", 6)
+ reagents.add_reagent("sodiumchloride", 1)
+ reagents.add_reagent("vitamin", 1)
\ No newline at end of file
diff --git a/code/modules/food&drinks/recipes/microwave/recipes.dm b/code/modules/food&drinks/recipes/microwave/recipes.dm
index 4bf797f5bf7..7e4ec7c1cdb 100644
--- a/code/modules/food&drinks/recipes/microwave/recipes.dm
+++ b/code/modules/food&drinks/recipes/microwave/recipes.dm
@@ -69,3 +69,17 @@
/obj/item/weapon/reagent_containers/food/snacks/grown/apple
)
result = /obj/item/weapon/reagent_containers/food/snacks/candiedapple
+
+/datum/recipe/chococoin
+ items = list(
+ /obj/item/weapon/coin,
+ /obj/item/weapon/reagent_containers/food/snacks/chocolatebar,
+ )
+ result = /obj/item/weapon/reagent_containers/food/snacks/chococoin
+
+/datum/recipe/chocoorange
+ items = list(
+ /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange,
+ /obj/item/weapon/reagent_containers/food/snacks/chocolatebar,
+ )
+ result = /obj/item/weapon/reagent_containers/food/snacks/chocoorange
diff --git a/code/modules/food&drinks/recipes/microwave/recipes_pastry.dm b/code/modules/food&drinks/recipes/microwave/recipes_pastry.dm
index 8320a99f771..96a202c12ac 100644
--- a/code/modules/food&drinks/recipes/microwave/recipes_pastry.dm
+++ b/code/modules/food&drinks/recipes/microwave/recipes_pastry.dm
@@ -71,34 +71,10 @@
/datum/recipe/donkpocket
reagents = list("flour" = 5)
items = list(
- /obj/item/weapon/reagent_containers/food/snacks/faggot,
+ /obj/item/weapon/reagent_containers/food/snacks/faggot
)
- result = /obj/item/weapon/reagent_containers/food/snacks/donkpocket //SPECIAL
+ result = /obj/item/weapon/reagent_containers/food/snacks/donkpocket
-/datum/recipe/donkpocket/proc/warm_up(var/obj/item/weapon/reagent_containers/food/snacks/donkpocket/being_cooked)
- being_cooked.warm = 1
- being_cooked.reagents.add_reagent("tricordrazine", 5)
- being_cooked.reagents.del_reagent("sugar")
- being_cooked.bitesize = 6
- being_cooked.name = "Warm " + being_cooked.name
- being_cooked.cooltime()
-
-/datum/recipe/donkpocket/make_food(var/obj/container as obj)
- var/obj/item/weapon/reagent_containers/food/snacks/donkpocket/being_cooked = ..(container)
- warm_up(being_cooked)
- return being_cooked
-
-/datum/recipe/donkpocket/warm
- reagents = list() //This is necessary since this is a child object of the above recipe and we don't want donk pockets to need flour
- items = list(
- /obj/item/weapon/reagent_containers/food/snacks/donkpocket
- )
- result = /obj/item/weapon/reagent_containers/food/snacks/donkpocket //SPECIAL
- make_food(var/obj/container as obj)
- var/obj/item/weapon/reagent_containers/food/snacks/donkpocket/being_cooked = locate() in container
- if(being_cooked && !being_cooked.warm)
- warm_up(being_cooked)
- return being_cooked
////////////////////////////////////////////////MUFFINS////////////////////////////////////////////////
@@ -201,3 +177,10 @@
/datum/recipe/cracker
reagents = list("flour" = 5, "sodiumchloride" = 1)
result = /obj/item/weapon/reagent_containers/food/snacks/cracker
+
+/datum/recipe/chococornet
+ reagents = list("flour" = 10, "sodiumchloride" = 1)
+ items = list(
+ /obj/item/weapon/reagent_containers/food/snacks/chocolatebar,
+ )
+ result = /obj/item/weapon/reagent_containers/food/snacks/chococornet
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index fb5b32efcc9..09915ec30ee 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -813,6 +813,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob)
mind.transfer_to(podman)
podman.ckey = ckey
podman.gender = blood_gender
+ podman.faction |= factions
hardset_dna(podman,null,null,podman.real_name,blood_type,/datum/species/plant/pod,"#59CE00")//Discard SE's and UI's, podman cloning is inaccurate, and always make them a podman
podman.set_cloned_appearance()
diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm
index 1b5ead39644..4bfc11fbdbf 100644
--- a/code/modules/hydroponics/seeds.dm
+++ b/code/modules/hydroponics/seeds.dm
@@ -80,6 +80,7 @@
var/datum/mind/mind = null
var/blood_gender = null
var/blood_type = null
+ var/factions = null
/obj/item/seeds/replicapod/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/reagent_containers/syringe))
@@ -91,6 +92,7 @@
realName = bloodSample.data["real_name"]
blood_gender = bloodSample.data["gender"]
blood_type = bloodSample.data["blood_type"]
+ factions = bloodSample.data["factions"]
W.reagents.clear_reagents()
user << "You inject the contents of the syringe into the seeds."
else
diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm
index 4874f04a838..3f301c756af 100644
--- a/code/modules/mining/equipment_locker.dm
+++ b/code/modules/mining/equipment_locker.dm
@@ -702,7 +702,8 @@
if(istype(target, /mob/living/simple_animal/hostile))
var/mob/living/simple_animal/hostile/H = M
if(malfunctioning)
- M.faction = list("lazarus")
+ H.faction |= list("lazarus", "\ref[user]")
+ H.robust_searching = 1
H.friends += user
H.attack_same = 1
log_game("[user] has revived hostile mob [target] with a malfunctioning lazarus injector")
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index f7da665c052..703d4b577e0 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -301,3 +301,13 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
return 0
usr.visible_message("[src] points to [A]")
return 1
+
+/mob/dead/observer/verb/view_manfiest()
+ set name = "View Crew Manifest"
+ set category = "Ghost"
+
+ var/dat
+ dat += "Crew Manifest
"
+ dat += data_core.get_manifest()
+
+ src << browse(dat, "window=manifest;size=370x420;can_close=1")
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
index ca793492cc4..49e25cf646d 100644
--- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
+++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
@@ -53,6 +53,8 @@ var/const/ALIEN_AFK_BRACKET = 450 // 45 seconds
switch(stage)
if(2, 3)
+ if(affected_mob == DEAD)
+ return
if(prob(1))
affected_mob.emote("sneeze")
if(prob(1))
@@ -62,6 +64,8 @@ var/const/ALIEN_AFK_BRACKET = 450 // 45 seconds
if(prob(1))
affected_mob << "Mucous runs down the back of your throat."
if(4)
+ if(affected_mob == DEAD)
+ return
if(prob(1))
affected_mob.emote("sneeze")
if(prob(1))
@@ -76,9 +80,10 @@ var/const/ALIEN_AFK_BRACKET = 450 // 45 seconds
affected_mob.adjustToxLoss(1)
affected_mob.updatehealth()
if(5)
- affected_mob << "You feel something tearing its way out of your stomach..."
- affected_mob.adjustToxLoss(10)
- affected_mob.updatehealth()
+ if(affected_mob != DEAD)
+ affected_mob << "You feel something tearing its way out of your stomach..."
+ affected_mob.adjustToxLoss(10)
+ affected_mob.updatehealth()
if(prob(50))
AttemptGrow()
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 482079d7d61..e7fd0006859 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -83,13 +83,16 @@
//src.updatehealth()
src.visible_message(
"[src] was shocked by the [source]!", \
- "You feel a powerful shock course through your body!", \
+ "You feel a powerful shock coursing through your body!", \
"You hear a heavy electrical crack." \
)
-// if(src.stunned < shock_damage) src.stunned = shock_damage
- Stun(5)//This should work for now, more is really silly and makes you lay there forever
-// if(src.weakened < 20*siemens_coeff) src.weakened = 20*siemens_coeff
- Weaken(5)
+ src.jitteriness += 1000 //High numbers for violent convulsions
+ src.stuttering += 2
+ Stun(2)
+ spawn(20)
+ src.jitteriness -= 990 //Still jittery, but vastly less
+ Stun(3)
+ Weaken(3)
return shock_damage
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 038aedc7952..e0fb775a949 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -32,6 +32,8 @@
randomize_human(src)
..()
+ var/mob/M = src
+ faction |= "\ref[M]"
/mob/living/carbon/human/prepare_data_huds()
//Update med hud images...
diff --git a/code/modules/mob/living/carbon/human/species_types.dm b/code/modules/mob/living/carbon/human/species_types.dm
index b11cc7d147c..59a6387f7d5 100644
--- a/code/modules/mob/living/carbon/human/species_types.dm
+++ b/code/modules/mob/living/carbon/human/species_types.dm
@@ -15,6 +15,7 @@
H.dna.species = new /datum/species/slime()
H.regenerate_icons()
H.reagents.del_reagent(chem.type)
+ H.faction |= "slime"
return 1
/*
diff --git a/code/modules/mob/living/carbon/slime/slime.dm b/code/modules/mob/living/carbon/slime/slime.dm
index e20466b20f9..8915e2f5d4d 100644
--- a/code/modules/mob/living/carbon/slime/slime.dm
+++ b/code/modules/mob/living/carbon/slime/slime.dm
@@ -7,6 +7,7 @@
ventcrawler = 2
var/is_adult = 0
languages = SLIME | HUMAN
+ faction = list("slime")
layer = 5
diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm
index 10cb6ac53d6..7b15852969e 100644
--- a/code/modules/mob/living/damage_procs.dm
+++ b/code/modules/mob/living/damage_procs.dm
@@ -60,11 +60,13 @@
eye_blurry = max(eye_blurry,(effect * blocked))
if(DROWSY)
drowsyness = max(drowsyness,(effect * blocked))
+ if(JITTER)
+ jitteriness = max(jitteriness,(effect * blocked))
updatehealth()
return 1
-/mob/living/proc/apply_effects(var/stun = 0, var/weaken = 0, var/paralyze = 0, var/irradiate = 0, var/stutter = 0, var/eyeblur = 0, var/drowsy = 0, var/blocked = 0)
+/mob/living/proc/apply_effects(var/stun = 0, var/weaken = 0, var/paralyze = 0, var/irradiate = 0, var/stutter = 0, var/eyeblur = 0, var/drowsy = 0, var/blocked = 0, var/stamina = 0, var/jitter = 0)
if(blocked >= 100) return 0
if(stun) apply_effect(stun, STUN, blocked)
if(weaken) apply_effect(weaken, WEAKEN, blocked)
@@ -73,4 +75,6 @@
if(stutter) apply_effect(stutter, STUTTER, blocked)
if(eyeblur) apply_effect(eyeblur, EYE_BLUR, blocked)
if(drowsy) apply_effect(drowsy, DROWSY, blocked)
+ if(stamina) apply_effect(stamina, STAMINA, blocked)
+ if(jitter) apply_effect(jitter, JITTER, blocked)
return 1
\ No newline at end of file
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index a6c371d15fe..b4d6f44b902 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -762,6 +762,13 @@
/mob/living/singularity_pull(S)
step_towards(src,S)
+/mob/living/narsie_act()
+ if(client)
+ makeNewConstruct(/mob/living/simple_animal/construct/harvester, src, null, 1)
+ spawn_dust()
+ gib()
+ return
+
/mob/living/proc/do_attack_animation(atom/A)
var/pixel_x_diff = 0
var/pixel_y_diff = 0
diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm
index fda757d8aed..31b691a9071 100644
--- a/code/modules/mob/living/say.dm
+++ b/code/modules/mob/living/say.dm
@@ -261,6 +261,8 @@ var/list/department_radio_keys = list(
if(stuttering)
message = stutter(message)
+ message = capitalize(message)
+
return message
/mob/living/proc/radio(message, message_mode, steps)
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index 30c30cc6e0d..4b12eb1cf13 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -548,7 +548,7 @@ var/list/ai_list = list()
cleared = 1
L -= I
if (cleared)
- queueAlarm(text("--- [] alarm in [] has been cleared.", class, A.name), class, 0)
+ queueAlarm("--- [class] alarm in [A.name] has been cleared.", class, 0)
if (viewalerts) ai_alerts()
return !cleared
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 7a7b4ddc838..b3707f263cb 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -385,7 +385,7 @@
cleared = 1
L -= I
if (cleared)
- queueAlarm(text("--- [class] alarm in [A.name] has been cleared."), class, 0)
+ queueAlarm("--- [class] alarm in [A.name] has been cleared.", class, 0)
// if (viewalerts) robot_alerts()
return !cleared
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 6461355f0b9..77be370abf8 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -109,6 +109,7 @@
modules += new /obj/item/borg/sight/meson(src)
emag = new /obj/item/borg/stun(src)
modules += new /obj/item/weapon/rcd/borg(src)
+ modules += new /obj/item/weapon/pipe_dispenser(src) //What could possibly go wrong?
modules += new /obj/item/weapon/extinguisher(src)
modules += new /obj/item/weapon/weldingtool/largetank/cyborg(src)
modules += new /obj/item/weapon/screwdriver(src)
@@ -161,7 +162,7 @@
modules += new /obj/item/device/flashlight/seclite(src)
modules += new /obj/item/weapon/restraints/handcuffs/cable/zipties/cyborg(src)
modules += new /obj/item/weapon/melee/baton/loaded(src)
- modules += new /obj/item/weapon/gun/energy/taser/cyborg(src)
+ modules += new /obj/item/weapon/gun/energy/gun/advtaser/cyborg(src)
modules += new /obj/item/clothing/mask/gas/sechailer/cyborg(src)
emag = new /obj/item/weapon/gun/energy/laser/cyborg(src)
fix_modules()
diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm
index f52831f11af..2f515596d37 100644
--- a/code/modules/mob/living/simple_animal/constructs.dm
+++ b/code/modules/mob/living/simple_animal/constructs.dm
@@ -70,7 +70,8 @@
Proj.on_hit(src, 0)
return 0
-
+/mob/living/simple_animal/construct/narsie_act()
+ return
/////////////////Juggernaut///////////////
diff --git a/code/modules/mob/living/simple_animal/corpse.dm b/code/modules/mob/living/simple_animal/corpse.dm
index 30f5277c4d8..405b882ea17 100644
--- a/code/modules/mob/living/simple_animal/corpse.dm
+++ b/code/modules/mob/living/simple_animal/corpse.dm
@@ -92,7 +92,7 @@
corpsegloves = /obj/item/clothing/gloves/combat
corpseradio = /obj/item/device/radio/headset
corpsemask = /obj/item/clothing/mask/gas
- corpsehelmet = /obj/item/clothing/head/helmet/swat/syndicate
+ corpsehelmet = /obj/item/clothing/head/helmet/swat
corpseback = /obj/item/weapon/storage/backpack
corpseid = 1
corpseidjob = "Operative"
diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm
index debdf749a93..9546b077482 100644
--- a/code/modules/mob/living/simple_animal/friendly/corgi.dm
+++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm
@@ -131,7 +131,7 @@
switch(add_to)
if("head")
- place_on_head(usr.get_active_hand())
+ place_on_head(usr.get_active_hand(),usr)
if("back")
if(inventory_back)
@@ -183,17 +183,17 @@
//Corgis are supposed to be simpler, so only a select few objects can actually be put
//to be compatible with them. The objects are below.
//Many hats added, Some will probably be removed, just want to see which ones are popular.
-/mob/living/simple_animal/corgi/proc/place_on_head(obj/item/item_to_add)
+/mob/living/simple_animal/corgi/proc/place_on_head(obj/item/item_to_add, var/mob/user as mob)
if(istype(item_to_add,/obj/item/weapon/c4)) // last thing he ever wears, I guess
- item_to_add.afterattack(src,usr,1)
+ item_to_add.afterattack(src,user,1)
return
if(inventory_head)
- if(usr) usr << "You can't put more than one hat on [src]!"
+ if(user) user << "You can't put more than one hat on [src]!"
return
if(!item_to_add)
- usr.visible_message("[usr] pets [src]","You rest your hand on [src]'s head for a moment.")
+ user.visible_message("[user] pets [src]","You rest your hand on [src]'s head for a moment.")
return
@@ -326,13 +326,13 @@
valid = 1
if(valid)
- if(!usr.drop_item())
- usr << "\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s head!"
+ if(user && !user.drop_item())
+ user << "\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s head!"
return 0
if(health <= 0)
- usr << "There is merely a dull, lifeless look in [real_name]'s eyes as you put the [item_to_add] on \him."
- else if(usr)
- usr.visible_message("[usr] puts [item_to_add] on [real_name]'s head. [src] looks at [usr] and barks once.",
+ user << "There is merely a dull, lifeless look in [real_name]'s eyes as you put the [item_to_add] on \him."
+ else if(user)
+ user.visible_message("[user] puts [item_to_add] on [real_name]'s head. [src] looks at [user] and barks once.",
"You put [item_to_add] on [real_name]'s head. [src] gives you a peculiar look, then wags \his tail once and barks.",
"You hear a friendly-sounding bark.")
item_to_add.loc = src
@@ -340,10 +340,10 @@
regenerate_icons()
else
- if(!usr.drop_item())
- usr << "\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s head!"
+ if(user && !user.drop_item())
+ user << "\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s head!"
return 0
- usr << "You set [item_to_add] on [src]'s head, but \he shakes it off!"
+ user << "You set [item_to_add] on [src]'s head, but \he shakes it off!"
item_to_add.loc = loc
if(prob(25))
step_rand(item_to_add)
diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm
index 0f5b32b0ce5..68f8c76ed69 100644
--- a/code/modules/mob/living/simple_animal/hostile/hostile.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm
@@ -4,7 +4,6 @@
environment_smash = 1 //Set to 1 to break closets,tables,racks, etc; 2 for walls; 3 for rwalls
var/stance = HOSTILE_STANCE_IDLE //Used to determine behavior
var/atom/target
- var/attack_same = 0 //Set us to 1 to allow us to attack our own faction, or 2, to only ever attack our own faction
var/ranged = 0
var/rapid = 0
var/projectiletype
@@ -12,19 +11,24 @@
var/casingtype
var/move_to_delay = 3 //delay for the automated movement.
var/list/friends = list()
- var/vision_range = 9 //How big of an area to search for targets in, a vision of 9 attempts to find targets as soon as they walk into screen view
- var/aggro_vision_range = 9 //If a mob is aggro, we search in this radius. Defaults to 9 to keep in line with original simple mob aggro radius
- var/idle_vision_range = 9 //If a mob is just idling around, it's vision range is limited to this. Defaults to 9 to keep in line with original simple mob aggro radius
var/ranged_message = "fires" //Fluff text for ranged mobs
var/ranged_cooldown = 0 //What the starting cooldown is on ranged attacks
var/ranged_cooldown_cap = 3 //What ranged attacks, after being used are set to, to go back on cooldown, defaults to 3 life() ticks
var/retreat_distance = null //If our mob runs from players when they're too close, set in tile distance. By default, mobs do not retreat.
var/minimum_distance = 1 //Minimum approach distance, so ranged mobs chase targets down, but still keep their distance set in tiles to the target, set higher to make mobs keep distance
+
+
+//These vars are related to how mobs locate and target
+ var/robust_searching = 0 //By default, mobs have a simple searching method, set this to 1 for the more scrutinous searching (stat_attack, stat_exclusive, etc), should be disabled on most mobs
+ var/vision_range = 9 //How big of an area to search for targets in, a vision of 9 attempts to find targets as soon as they walk into screen view
+ var/aggro_vision_range = 9 //If a mob is aggro, we search in this radius. Defaults to 9 to keep in line with original simple mob aggro radius
+ var/idle_vision_range = 9 //If a mob is just idling around, it's vision range is limited to this. Defaults to 9 to keep in line with original simple mob aggro radius
var/search_objects = 0 //If we want to consider objects when searching around, set this to 1. If you want to search for objects while also ignoring mobs until hurt, set it to 2. To completely ignore mobs, even when attacked, set it to 3
var/list/wanted_objects = list() //A list of objects that will be checked against to attack, should we have search_objects enabled
var/stat_attack = 0 //Mobs with stat_attack to 1 will attempt to attack things that are unconscious, Mobs with stat_attack set to 2 will attempt to attack the dead.
var/stat_exclusive = 0 //Mobs with this set to 1 will exclusively attack things defined by stat_attack, stat_attack 2 means they will only attack corpses
+ var/attack_same = 0 //Set us to 1 to allow us to attack our own faction, or 2, to only ever attack our own faction
/mob/living/simple_animal/hostile/Life()
@@ -102,33 +106,35 @@
/mob/living/simple_animal/hostile/CanAttack(var/atom/the_target)//Can we actually attack a possible target?
if(see_invisible < the_target.invisibility)//Target's invisible to us, forget it
return 0
- if(isliving(the_target) && search_objects < 2)
- var/mob/living/L = the_target
- if(L.stat > stat_attack || L.stat != stat_attack && stat_exclusive == 1)
- return 0
- var/faction_check = 0
- for(var/F in faction)
- if(F in L.faction)
- faction_check = 1
- break
- if(faction_check && !attack_same || !faction_check && attack_same == 2)
- return 0
- if(L in friends)
- return 0
- if(ishuman(L))
- var/mob/living/carbon/human/H = L
- if(H.dna)
- if(src.type in H.dna.species.ignored_by)
- return 0
- return 1
- if(isobj(the_target))
- if(the_target.type in wanted_objects)
- return 1
- if(istype(the_target, /obj/mecha) && search_objects < 2)
+ if(search_objects < 2)
+ if(istype(the_target, /obj/mecha))
var/obj/mecha/M = the_target
if(M.occupant)//Just so we don't attack empty mechs
if(CanAttack(M.occupant))
return 1
+ if(isliving(the_target))
+ var/mob/living/L = the_target
+ var/faction_check = 0
+ for(var/F in faction)
+ if(F in L.faction)
+ faction_check = 1
+ break
+ if(robust_searching)
+ if(L.stat > stat_attack || L.stat != stat_attack && stat_exclusive == 1)
+ return 0
+ if(faction_check && !attack_same || !faction_check && attack_same == 2)
+ return 0
+ if(L in friends)
+ return 0
+ else
+ if(L.stat)
+ return 0
+ if(faction_check && !attack_same)
+ return 0
+ return 1
+ if(isobj(the_target))
+ if(the_target.type in wanted_objects)
+ return 1
return 0
/mob/living/simple_animal/hostile/proc/GiveTarget(var/new_target)//Step 4, give us our selected target
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm
index 7de2c6ff8c8..acb15e44f7c 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm
@@ -334,6 +334,7 @@
mouse_opacity = 2
move_to_delay = 40
ranged = 1
+ ranged_cooldown = 2 //By default, start the Goliath with his cooldown off so that people can run away quickly on first sight
ranged_cooldown_cap = 8
friendly = "wails at"
vision_range = 4
@@ -349,6 +350,18 @@
idle_vision_range = 5
anchored = 1 //Stays anchored until death as to be unpullable
mob_size = 2
+ var/pre_attack = 0
+
+/mob/living/simple_animal/hostile/asteroid/goliath/Life()
+ ..()
+ handle_preattack()
+
+/mob/living/simple_animal/hostile/asteroid/goliath/proc/handle_preattack()
+ if(ranged_cooldown <= 2 && !pre_attack)
+ pre_attack++
+ if(!pre_attack || stat || stance == HOSTILE_STANCE_IDLE)
+ return
+ icon_state = "Goliath_preattack"
/mob/living/simple_animal/hostile/asteroid/goliath/revive()
anchored = 1
@@ -364,12 +377,22 @@
visible_message("The [src.name] digs its tentacles under [target.name]!")
new /obj/effect/goliath_tentacle/original(tturf)
ranged_cooldown = ranged_cooldown_cap
+ icon_state = icon_aggro
+ pre_attack = 0
return
/mob/living/simple_animal/hostile/asteroid/goliath/adjustBruteLoss(var/damage)
ranged_cooldown--
+ handle_preattack()
..()
+/mob/living/simple_animal/hostile/asteroid/goliath/Aggro()
+ vision_range = aggro_vision_range
+ handle_preattack()
+ if(icon_state != icon_aggro)
+ icon_state = icon_aggro
+ return
+
/obj/effect/goliath_tentacle/
name = "Goliath tentacle"
icon = 'icons/mob/animal.dmi'
@@ -386,6 +409,9 @@
/obj/effect/goliath_tentacle/original
/obj/effect/goliath_tentacle/original/New()
+ for(var/obj/effect/goliath_tentacle/original/O in loc)//No more GG NO RE from 2+ goliaths simultaneously tentacling you
+ if(O != src)
+ qdel(src)
var/list/directions = cardinal.Copy()
var/counter
for(counter = 1, counter <= 3, counter++)
diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm
index ecdf9f9daf8..6543d5e223b 100644
--- a/code/modules/mob/mob_defines.dm
+++ b/code/modules/mob/mob_defines.dm
@@ -2,7 +2,7 @@
density = 1
layer = 4
animate_movement = 2
- flags = NOREACT | HEAR
+ flags = HEAR
hud_possible = list(ANTAG_HUD)
var/datum/mind/mind
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index c3822358c05..0c26dc9a84b 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -96,13 +96,14 @@
return Move_object(direct)
if(world.time < move_delay)
return 0
- if(isAI(mob))
- return AIMove(n,direct,mob)
if(!isliving(mob))
return mob.Move(n,direct)
- if(moving)
- return 0
if(mob.stat == DEAD)
+ mob.ghostize()
+ return 0
+ if(isAI(mob))
+ return AIMove(n,direct,mob)
+ if(moving)
return 0
if(isliving(mob))
var/mob/living/L = mob
diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm
index fd087516a33..28907d096ec 100644
--- a/code/modules/mob/new_player/new_player.dm
+++ b/code/modules/mob/new_player/new_player.dm
@@ -25,10 +25,13 @@
var/output = "Setup Character
"
if(!ticker || ticker.current_state <= GAME_STATE_PREGAME)
- if(!ready) output += "Declare Ready
"
- else output += "You are ready Cancel
"
+ if(ready)
+ output += "\[ Ready | Not Ready \]
"
+ else
+ output += "\[ Ready | Not Ready \]
"
else
+ output += "View the Crew Manifest
"
output += "Join Game!
"
output += "Observe
"
@@ -55,7 +58,7 @@
output += ""
//src << browse(output,"window=playersetup;size=210x240;can_close=0")
- var/datum/browser/popup = new(src, "playersetup", "New Player Options
", 210, 240)
+ var/datum/browser/popup = new(src, "playersetup", "New Player Options
", 220, 250)
popup.set_window_options("can_close=0")
popup.set_content(output)
popup.open(0)
@@ -98,7 +101,10 @@
return 1
if(href_list["ready"])
- ready = text2num(href_list["ready"])
+ if(!ticker || ticker.current_state <= GAME_STATE_PREGAME) // Make sure we don't ready up after the round has started
+ ready = !ready
+ else
+ ready = 0
if(href_list["refresh"])
src << browse(null, "window=playersetup") //closes the player setup window
@@ -136,6 +142,9 @@
return
LateChoices()
+ if(href_list["manifest"])
+ ViewManifest()
+
if(href_list["SelectedJob"])
if(!enter_allowed)
@@ -364,6 +373,12 @@
return new_character
+/mob/new_player/proc/ViewManifest()
+ var/dat = ""
+ dat += "Crew Manifest
"
+ dat += data_core.get_manifest(OOC = 1)
+
+ src << browse(dat, "window=manifest;size=370x420;can_close=1")
/mob/new_player/Move()
return 0
diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm
index 4a32e53f873..02e8befd05e 100644
--- a/code/modules/mob/new_player/preferences_setup.dm
+++ b/code/modules/mob/new_player/preferences_setup.dm
@@ -101,7 +101,7 @@
clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY)
else if(backbag == 3)
clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-norm"), ICON_OVERLAY)
- if(CHEF)
+ if(COOK)
clothes_s = new /icon('icons/mob/uniform.dmi', "chef_s")
clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
clothes_s.Blend(new /icon('icons/mob/head.dmi', "chef"), ICON_OVERLAY)
diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm
index c33bc19bff7..1ed275131b6 100644
--- a/code/modules/power/singularity/narsie.dm
+++ b/code/modules/power/singularity/narsie.dm
@@ -10,7 +10,6 @@
move_self = 1 //Do we move on our own?
grav_pull = 5 //How many tiles out do we pull?
consume_range = 6 //How many tiles out do we eat
- var/uneatable = list(/turf/space, /obj/effect/overlay, /mob/living/simple_animal/construct)
/obj/singularity/narsie/large
name = "Nar-Sie"
@@ -84,25 +83,7 @@
/obj/singularity/narsie/consume(var/atom/A)
- if(is_type_in_list(A, uneatable))
- return 0
-
- if(istype(A,/mob/living/))
- var/mob/living/C = A
- if(C.client)
- makeNewConstruct(/mob/living/simple_animal/construct/harvester, C, null, 1)
- C.spawn_dust()
- C.gib()
- return
-
- if(isturf(A))
- var/turf/T = A
- if(istype(T, /turf/simulated/floor) && !istype(T, /turf/simulated/floor/engine/cult))
- if(prob(20)) T.ChangeTurf(/turf/simulated/floor/engine/cult)
-
- else if(istype(T,/turf/simulated/wall) && !istype(T, /turf/simulated/wall/cult))
- if(prob(20)) T.ChangeTurf(/turf/simulated/wall/cult)
- return
+ A.narsie_act()
/obj/singularity/narsie/ex_act() //No throwing bombs at it either. --NEO
diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm
index b08ad2edf4d..45794e4ea66 100644
--- a/code/modules/power/supermatter/supermatter.dm
+++ b/code/modules/power/supermatter/supermatter.dm
@@ -76,7 +76,7 @@
/obj/machinery/power/supermatter_shard/proc/explode()
investigate_log("has exploded.", "supermatter")
- explosion(get_turf(src), explosion_power, explosion_power * 2, explosion_power * 3, explosion_power * 4, 1, 1)
+ explosion(get_turf(src), explosion_power, explosion_power * 2, explosion_power * 3, explosion_power * 4, 1)
qdel(src)
return
diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm
index 801d9b6e2e8..0f85597e0ec 100644
--- a/code/modules/projectiles/ammunition.dm
+++ b/code/modules/projectiles/ammunition.dm
@@ -73,21 +73,34 @@
stored_ammo.Insert(1,b)
return b
-/obj/item/ammo_box/proc/give_round(var/obj/item/ammo_casing/r)
- var/obj/item/ammo_casing/rb = r
- if (rb)
- if (stored_ammo.len < max_ammo && rb.caliber == caliber)
- stored_ammo += rb
- rb.loc = src
- return 1
+/obj/item/ammo_box/proc/give_round(var/obj/item/ammo_casing/R, var/replace_spent = 0)
+ if(!R || (R.caliber != caliber))
+ return 0
+
+ if (stored_ammo.len < max_ammo)
+ stored_ammo += R
+ R.loc = src
+ return 1
+
+ //for accessibles magazines (e.g internal ones) when full, start replacing spent ammo
+ else if(replace_spent)
+ for(var/obj/item/ammo_casing/AC in stored_ammo)
+ if(!AC.BB)//found a spent ammo
+ stored_ammo -= AC
+ AC.loc = get_turf(src.loc)
+
+ stored_ammo += R
+ R.loc = src
+ return 1
+
return 0
-/obj/item/ammo_box/attackby(var/obj/item/A as obj, mob/user as mob, var/silent = 0)
+/obj/item/ammo_box/attackby(var/obj/item/A as obj, mob/user as mob, var/silent = 0, var/replace_spent = 0)
var/num_loaded = 0
if(istype(A, /obj/item/ammo_box))
var/obj/item/ammo_box/AM = A
for(var/obj/item/ammo_casing/AC in AM.stored_ammo)
- var/did_load = give_round(AC)
+ var/did_load = give_round(AC, replace_spent)
if(did_load)
AM.stored_ammo -= AC
num_loaded++
@@ -95,17 +108,18 @@
break
if(istype(A, /obj/item/ammo_casing))
var/obj/item/ammo_casing/AC = A
- if(give_round(AC))
+ if(give_round(AC, replace_spent))
user.drop_item()
AC.loc = src
num_loaded++
+
if(num_loaded)
if(!silent)
user << "You load [num_loaded] shell\s into \the [src]!"
A.update_icon()
update_icon()
- return num_loaded
- return 0
+
+ return num_loaded
/obj/item/ammo_box/attack_self(mob/user as mob)
var/obj/item/ammo_casing/A = get_round()
diff --git a/code/modules/projectiles/ammunition/energy.dm b/code/modules/projectiles/ammunition/energy.dm
index 05c5f172788..e2473a521f8 100644
--- a/code/modules/projectiles/ammunition/energy.dm
+++ b/code/modules/projectiles/ammunition/energy.dm
@@ -117,10 +117,10 @@
fire_sound = 'sound/weapons/Kenetic_accel.ogg'
/obj/item/ammo_casing/energy/disabler
- projectile_type = /obj/item/projectile/energy/disabler
+ projectile_type = /obj/item/projectile/beam/disabler
select_name = "disable"
e_cost = 50
- fire_sound = "sound/weapons/taser.ogg"
+ fire_sound = "sound/weapons/taser2.ogg"
/obj/item/ammo_casing/energy/wormhole
projectile_type = /obj/item/projectile/beam/wormhole
diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm
index d901f87c4a9..f9d3c7410a0 100644
--- a/code/modules/projectiles/ammunition/magazines.dm
+++ b/code/modules/projectiles/ammunition/magazines.dm
@@ -1,4 +1,9 @@
////////////////INTERNAL MAGAZINES//////////////////////
+
+//internals magazines are accessible, so replace spent ammo if full when trying to put a live one in
+/obj/item/ammo_box/magazine/internal/give_round(var/obj/item/ammo_casing/R)
+ return ..(R,1)
+
/obj/item/ammo_box/magazine/internal/cylinder
name = "revolver cylinder"
desc = "Oh god, this shouldn't be here"
diff --git a/code/modules/projectiles/firing.dm b/code/modules/projectiles/firing.dm
index 8abcea10af0..c5f2b3a0e7d 100644
--- a/code/modules/projectiles/firing.dm
+++ b/code/modules/projectiles/firing.dm
@@ -34,7 +34,7 @@
return 0
if(targloc == curloc) //Fire the projectile
user.bullet_act(BB)
- qdel(BB)
+ del(BB)
return 1
BB.loc = get_turf(user)
BB.starting = get_turf(user)
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 97e0779a17f..d603831d60e 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -1,3 +1,7 @@
+ #define SAWN_INTACT 0
+ #define SAWN_OFF 1
+ #define SAWN_SAWING -1
+
/obj/item/weapon/gun
name = "gun"
desc = "It's a gun. It's pretty terrible, though."
@@ -23,6 +27,9 @@
var/obj/item/ammo_casing/chambered = null
var/trigger_guard = 1
var/sawn_desc = null
+ var/sawn_state = SAWN_INTACT
+ var/burst_size = 1
+ var/fire_delay = 0
/obj/item/weapon/gun/proc/process_chamber()
return 0
@@ -30,12 +37,17 @@
/obj/item/weapon/gun/proc/special_check(var/mob/M) //Placeholder for any special checks, like detective's revolver.
return 1
+//check if there's enough ammo/energy/whatever to shoot one time
+//i.e if clicking would make it shoot
+/obj/item/weapon/gun/proc/can_shoot()
+ return 1
+
/obj/item/weapon/gun/proc/shoot_with_empty_chamber(mob/living/user as mob|obj)
user << "*click*"
playsound(user, 'sound/weapons/empty.ogg', 100, 1)
return
-/obj/item/weapon/gun/proc/shoot_live_shot(mob/living/user as mob|obj, var/pointblank = 0, var/mob/pbtarget = null)
+/obj/item/weapon/gun/proc/shoot_live_shot(mob/living/user as mob|obj, var/pointblank = 0, var/mob/pbtarget = null, var/message = 1)
if(recoil)
spawn()
shake_camera(user, recoil + 1, recoil)
@@ -44,6 +56,8 @@
playsound(user, fire_sound, 10, 1)
else
playsound(user, fire_sound, 50, 1)
+ if(!message)
+ return
if(pointblank)
user.visible_message("[user] fires [src] point blank at [pbtarget]!", "You fire [src] point blank at [pbtarget]!", "You hear a [istype(src, /obj/item/weapon/gun/energy) ? "laser blast" : "gunshot"]!")
else
@@ -62,47 +76,66 @@
return
//Exclude lasertag guns from the CLUMSY check.
- if(clumsy_check)
+ if(clumsy_check && can_shoot())
if(istype(user, /mob/living))
var/mob/living/M = user
if ((CLUMSY in M.mutations) && prob(40))
- M << "You shoot yourself in the foot with \the [src]!"
- afterattack(user, user)
+ user << "You shoot yourself in the foot with \the [src]!"
+ process_fire(user,user,0,params)
M.drop_item()
return
+ if(isliving(user))
+ var/mob/living/L = user
+ if(!can_trigger_gun(L))
+ return
+
+ process_fire(target,user,flag,params)
+
+/obj/item/weapon/gun/proc/can_trigger_gun(mob/living/user)
if (!user.IsAdvancedToolUser())
user << "You don't have the dexterity to do this!"
- return
+ return 0
if(trigger_guard)
- if(istype(user, /mob/living))
- var/mob/living/M = user
- if (HULK in M.mutations)
- M << "Your meaty finger is much too large for the trigger guard!"
- return
+ if (HULK in user.mutations)
+ user << "Your meaty finger is much too large for the trigger guard!"
+ return 0
if(ishuman(user))
var/mob/living/carbon/human/H = user
if(H.dna && NOGUNS in H.dna.species.specflags)
user << "Your fingers don't fit in the trigger guard!"
- return
+ return 0
+ return 1
+
+/obj/item/weapon/gun/proc/process_fire(atom/target as mob|obj|turf, mob/living/user as mob|obj, var/message = 1, params)
add_fingerprint(user)
- if(chambered)
- if(!chambered.fire(target, user, params, , suppressed))
- shoot_with_empty_chamber(user)
- else
- if(!special_check(user))
- return
- if(get_dist(user, target) <= 1) //Making sure whether the target is in vicinity for the pointblank shot
- shoot_live_shot(user, 1, target)
+ if(!special_check(user))
+ return
+
+ for(var/i = 1 to burst_size)
+ if(!issilicon(user))
+ if(!(src in get_both_hands(user))) //for burst firing
+ break
+ if(chambered)
+ if(!chambered.fire(target, user, params, , suppressed))
+ shoot_with_empty_chamber(user)
+ break
else
- shoot_live_shot(user)
- else
- shoot_with_empty_chamber(user)
- process_chamber()
- update_icon()
+ if(!special_check(user))
+ return
+ if(get_dist(user, target) <= 1) //Making sure whether the target is in vicinity for the pointblank shot
+ shoot_live_shot(user, 1, target)
+ else
+ shoot_live_shot(user)
+ else
+ shoot_with_empty_chamber(user)
+ break
+ process_chamber()
+ update_icon()
+ sleep(fire_delay)
if(user.hand)
user.update_inv_l_hand(0)
diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm
index 08351551243..4c407cd5a20 100644
--- a/code/modules/projectiles/guns/energy.dm
+++ b/code/modules/projectiles/guns/energy.dm
@@ -35,7 +35,9 @@
/obj/item/weapon/gun/energy/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, params)
newshot() //prepare a new shot
..()
-
+/obj/item/weapon/gun/energy/can_shoot()
+ var/obj/item/ammo_casing/energy/shot = ammo_type[select]
+ return power_supply.charge >= shot.e_cost
/obj/item/weapon/gun/energy/proc/newshot()
if (!ammo_type || !power_supply)
diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm
index ebace57085b..75d5a076186 100644
--- a/code/modules/projectiles/guns/energy/laser.dm
+++ b/code/modules/projectiles/guns/energy/laser.dm
@@ -125,9 +125,11 @@ obj/item/weapon/gun/energy/laser/retro
/obj/item/weapon/gun/energy/laser/bluetag/process()
charge_tick++
- if(charge_tick < 4) return 0
+ if(charge_tick < 4)
+ return 0
charge_tick = 0
- if(!power_supply) return 0
+ if(!power_supply)
+ return 0
power_supply.give(100)
update_icon()
return 1
@@ -162,9 +164,11 @@ obj/item/weapon/gun/energy/laser/retro
/obj/item/weapon/gun/energy/laser/redtag/process()
charge_tick++
- if(charge_tick < 4) return 0
+ if(charge_tick < 4)
+ return 0
charge_tick = 0
- if(!power_supply) return 0
+ if(!power_supply)
+ return 0
power_supply.give(100)
update_icon()
return 1
diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm
index 7074c8102b1..2191702867b 100644
--- a/code/modules/projectiles/guns/energy/nuclear.dm
+++ b/code/modules/projectiles/guns/energy/nuclear.dm
@@ -1,9 +1,9 @@
/obj/item/weapon/gun/energy/gun
name = "energy gun"
- desc = "A basic hybrid energy gun with two settings: Stun and kill."
+ desc = "A basic hybrid energy gun with two settings: Disable and kill."
icon_state = "energy"
item_state = null //so the human update icon uses the icon_state instead.
- ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/laser)
+ ammo_type = list(/obj/item/ammo_casing/energy/disabler, /obj/item/ammo_casing/energy/laser)
origin_tech = "combat=3;magnets=2"
modifystate = 2
@@ -12,7 +12,6 @@
select_fire(user)
update_icon()
-
/obj/item/weapon/gun/energy/gun/nuclear
name = "advanced energy gun"
desc = "An energy gun with an experimental miniaturized nuclear reactor that automatically charges the internal power cell."
@@ -21,6 +20,7 @@
var/lightfail = 0
var/charge_tick = 0
modifystate = 0
+ ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/laser)
/obj/item/weapon/gun/energy/gun/nuclear/New()
..()
diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm
index 2c79a769a35..8f28a53effc 100644
--- a/code/modules/projectiles/guns/energy/stun.dm
+++ b/code/modules/projectiles/guns/energy/stun.dm
@@ -7,25 +7,39 @@
ammo_type = list(/obj/item/ammo_casing/energy/electrode)
cell_type = "/obj/item/weapon/stock_parts/cell/crap"
-/obj/item/weapon/gun/energy/taser/cyborg
- name = "taser gun"
- desc = "An integrated taser that draws directly from a cyborg's power cell. The weapon contains a limiter to prevent the cyborg's power cell from overheating."
- icon_state = "taser"
- fire_sound = 'sound/weapons/Taser.ogg'
+/obj/item/weapon/gun/energy/stunrevolver
+ name = "stun revolver"
+ desc = "A high-tech revolver that fires internal, reusable stun cartidges in a revolving cylinder."
+ icon_state = "stunrevolver"
+ origin_tech = "combat=3;materials=3;powerstorage=2"
+ ammo_type = list(/obj/item/ammo_casing/energy/electrode/gun)
+ cell_type = "/obj/item/weapon/stock_parts/cell"
+
+/obj/item/weapon/gun/energy/gun/advtaser
+ name = "advanced taser"
+ desc = "A hybrid taser designed to fire both short-range high-power electrodes and long-range disabler beams."
+ icon_state = "advtaser"
+ ammo_type = list(/obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/disabler)
+ cell_type = "/obj/item/weapon/stock_parts/cell/crap"
+ origin_tech = null
+
+/obj/item/weapon/gun/energy/gun/advtaser/cyborg
+ name = "advanced taser"
+ desc = "An integrated advanced taser that draws directly from a cyborg's power cell. The weapon contains a limiter to prevent the cyborg's power cell from overheating."
cell_type = "/obj/item/weapon/stock_parts/cell/secborg"
var/charge_tick = 0
- var/recharge_time = 10 //Time it takes for shots to recharge (in ticks)
+ var/recharge_time = 10
-/obj/item/weapon/gun/energy/taser/cyborg/New()
+/obj/item/weapon/gun/energy/gun/advtaser/cyborg/New()
..()
processing_objects.Add(src)
-/obj/item/weapon/gun/energy/taser/cyborg/Destroy()
+/obj/item/weapon/gun/energy/gun/advtaser/cyborg/Destroy()
processing_objects.Remove(src)
..()
-/obj/item/weapon/gun/energy/taser/cyborg/process() //Every [recharge_time] ticks, recharge a shot for the cyborg
+/obj/item/weapon/gun/energy/gun/advtaser/cyborg/process() //Every [recharge_time] ticks, recharge a shot for the cyborg
charge_tick++
if(charge_tick < recharge_time) return 0
charge_tick = 0
@@ -42,16 +56,6 @@
return 1
-/obj/item/weapon/gun/energy/stunrevolver
- name = "stun revolver"
- desc = "A high-tech revolver that fires internal, reusable stun cartidges in a revolving cylinder."
- icon_state = "stunrevolver"
- origin_tech = "combat=3;materials=3;powerstorage=2"
- ammo_type = list(/obj/item/ammo_casing/energy/electrode/gun)
- cell_type = "/obj/item/weapon/stock_parts/cell"
-
-
-
/obj/item/weapon/gun/energy/crossbow
name = "mini energy crossbow"
desc = "A weapon favored by syndicate stealth specialists."
diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm
index f9a0be82b99..c575632c498 100644
--- a/code/modules/projectiles/guns/magic.dm
+++ b/code/modules/projectiles/guns/magic.dm
@@ -29,6 +29,9 @@
no_den_usage = 0
..()
+/obj/item/weapon/gun/magic/can_shoot()
+ return charges
+
/obj/item/weapon/gun/magic/proc/newshot()
if (charges && chambered)
chambered.newshot()
diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm
index d2c6a9a29ba..b1540df35b9 100644
--- a/code/modules/projectiles/guns/projectile.dm
+++ b/code/modules/projectiles/guns/projectile.dm
@@ -40,6 +40,11 @@
chambered.loc = src
return
+/obj/item/weapon/gun/projectile/can_shoot()
+ if(!magazine || !magazine.ammo_count(0))
+ return 0
+ return 1
+
/obj/item/weapon/gun/projectile/attackby(var/obj/item/A as obj, mob/user as mob)
..()
if (istype(A, /obj/item/ammo_box/magazine))
diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm
index 6cfa117be6a..b5f2c3033c1 100644
--- a/code/modules/projectiles/guns/projectile/automatic.dm
+++ b/code/modules/projectiles/guns/projectile/automatic.dm
@@ -1,15 +1,24 @@
-/obj/item/weapon/gun/projectile/automatic //Hopefully someone will find a way to make these fire in bursts or something. --Superxpdude
+/obj/item/weapon/gun/projectile/automatic
name = "prototype SMG"
- desc = "A lightweight, prototype 9mm submachine gun, designated 'SABR'. Has a threaded barrel for suppressors."
+ desc = "A prototype three-round burst 9mm submachine gun, designated 'SABR'. Has a threaded barrel for suppressors."
icon_state = "saber"
w_class = 3
origin_tech = "combat=4;materials=2"
mag_type = /obj/item/ammo_box/magazine/smgm9mm
var/alarmed = 0
can_suppress = 1
+ burst_size = 3
+ fire_delay = 1
+ var/select = 0
+ action_button_name = "Toggle Fire Mode"
/obj/item/weapon/gun/projectile/automatic/update_icon()
..()
+ overlays.Cut()
+ if(!select)
+ overlays += "[initial(icon_state)]semi"
+ if(select == 1)
+ overlays += "[initial(icon_state)]burst"
icon_state = "[initial(icon_state)][magazine ? "-[magazine.max_ammo]" : ""][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]"
return
@@ -17,6 +26,31 @@
if(..() && chambered)
alarmed = 0
+/obj/item/weapon/gun/projectile/automatic/ui_action_click()
+ burst_select()
+
+/obj/item/weapon/gun/projectile/automatic/verb/burst_select()
+ set name = "Toggle Fire Mode"
+ set category = "Object"
+ set desc = "Click to switch fire modes."
+ var/mob/living/carbon/human/user = usr
+ if(select)
+ select = 0
+ burst_size = 1
+ fire_delay = 0
+ user << "You switch to semi-automatic."
+ else
+ select = 1
+ burst_size = initial(burst_size)
+ fire_delay = initial(fire_delay)
+ user << "You switch to [burst_size]-rnd burst."
+
+ update_icon()
+ return
+
+/obj/item/weapon/gun/projectile/automatic/can_shoot()
+ return get_ammo()
+
/obj/item/weapon/gun/projectile/automatic/proc/empty_alarm()
if(!chambered && !get_ammo() && !alarmed)
playsound(src.loc, 'sound/weapons/smg_empty_alarm.ogg', 40, 1)
@@ -26,12 +60,14 @@
/obj/item/weapon/gun/projectile/automatic/c20r
name = "syndicate SMG"
- desc = "A lightweight, bullpup .45 SMG, designated 'C-20r'. Has a 'Scarborough Arms - Per falcis, per pravitas' buttstamp."
+ desc = "A bullpup two-round burst .45 SMG, designated 'C-20r'. Has a 'Scarborough Arms - Per falcis, per pravitas' buttstamp."
icon_state = "c20r"
item_state = "c20r"
origin_tech = "combat=5;materials=2;syndicate=8"
mag_type = /obj/item/ammo_box/magazine/smgm45
fire_sound = 'sound/weapons/Gunshot_smg.ogg'
+ fire_delay = 2
+ burst_size = 2
/obj/item/weapon/gun/projectile/automatic/c20r/New()
..()
@@ -62,6 +98,12 @@
fire_sound = 'sound/weapons/Gunshot_smg.ogg'
var/cover_open = 0
can_suppress = 0
+ burst_size = 1
+ fire_delay = 0
+
+/obj/item/weapon/gun/projectile/automatic/l6_saw/burst_select()
+ return
+
/obj/item/weapon/gun/projectile/automatic/l6_saw/attack_self(mob/user as mob)
cover_open = !cover_open
@@ -103,43 +145,9 @@
return
..()
-/obj/item/weapon/gun/projectile/automatic/bulldog
- name = "syndicate shotgun"
- desc = "A compact, mag-fed semi-automatic shotgun for combat in narrow corridors, nicknamed 'Bulldog' by boarding parties. Compatible only with specialized 8-round drum magazines."
- icon_state = "bulldog"
- item_state = "bulldog"
- w_class = 3.0
- origin_tech = "combat=5;materials=4;syndicate=6"
- mag_type = /obj/item/ammo_box/magazine/m12g
- fire_sound = 'sound/weapons/Gunshot.ogg'
- can_suppress = 0
-
-/obj/item/weapon/gun/projectile/automatic/bulldog/New()
- ..()
- update_icon()
- return
-
-/obj/item/weapon/gun/projectile/automatic/bulldog/proc/update_magazine()
- if(magazine)
- src.overlays = 0
- overlays += "[magazine.icon_state]"
- return
-
-/obj/item/weapon/gun/projectile/automatic/bulldog/update_icon()
- src.overlays = 0
- update_magazine()
- icon_state = "bulldog[chambered ? "" : "-e"]"
- return
-
-/obj/item/weapon/gun/projectile/automatic/bulldog/afterattack()
- ..()
- empty_alarm()
- return
-
-
/obj/item/weapon/gun/projectile/automatic/c90gl
name = "syndicate assault rifle"
- desc = "A bullpup and compact 5.45x39 assault rifle with a unique toploading design, designated 'C-90gl'. Has an attached underbarrel grenade launcher which can be toggled on and off."
+ desc = "A bullpup three-round burst 5.45x39 assault rifle with a unique toploading design, designated 'C-90gl'. Has an attached underbarrel grenade launcher which can be toggled on and off."
icon_state = "c90gl"
item_state = "c90gl"
origin_tech = "combat=5;materials=2;syndicate=8"
@@ -147,8 +155,9 @@
fire_sound = 'sound/weapons/Gunshot_smg.ogg'
action_button_name = "Toggle Grenade Launcher"
can_suppress = 0
- var/select = 1 //1 for boolets, 0 for explosions.
var/obj/item/weapon/gun/projectile/revolver/grenadelauncher/underbarrel
+ burst_size = 3
+ fire_delay = 2
/obj/item/weapon/gun/projectile/automatic/c90gl/New()
..()
@@ -157,54 +166,53 @@
return
/obj/item/weapon/gun/projectile/automatic/c90gl/afterattack(var/atom/target, var/mob/living/user, flag, params)
- if(select)
+ if(select == 2)
+ underbarrel.afterattack(target, user, flag, params)
+ else
..()
empty_alarm()
return
- else
- underbarrel.afterattack(target, user, flag, params)
-
/obj/item/weapon/gun/projectile/automatic/c90gl/attackby(var/obj/item/A, mob/user)
- if(select)
- ..()
- else
+ if(select == 2)
underbarrel.attackby(A, user)
-
-/obj/item/weapon/gun/projectile/automatic/c90gl/attack_self(var/mob/living/user)
- if(select)
- ..()
else
+ ..()
+/obj/item/weapon/gun/projectile/automatic/c90gl/attack_self(var/mob/living/user)
+ if(select == 2)
underbarrel.attack_self(user)
-
-
+ else
+ ..()
/obj/item/weapon/gun/projectile/automatic/c90gl/update_icon()
..()
overlays.Cut()
- if(select)
- overlays += "c90prim"
- else
- overlays += "c90gren"
+ if(!select)
+ overlays += "[initial(icon_state)]semi"
+ if(select == 1)
+ overlays += "[initial(icon_state)]burst"
+ if(select == 2)
+ overlays += "[initial(icon_state)]gren"
icon_state = "c90gl[magazine ? "-[Ceiling(get_ammo(0)/6)*6]" : ""][chambered ? "" : "-e"]"
return
-/obj/item/weapon/gun/projectile/automatic/c90gl/proc/underbarrel_swap()
+/obj/item/weapon/gun/projectile/automatic/c90gl/burst_select()
var/mob/living/carbon/human/user = usr
- if(select)
- select = 0
- user << "You switch to grenades."
- else
+ if(!select)
select = 1
- user << "You switch to bullets."
-
+ burst_size = initial(burst_size)
+ fire_delay = initial(fire_delay)
+ user << "You switch to [burst_size]-rnd burst."
+ if(select == 1)
+ select = 2
+ user << "You switch to grenades."
+ if(select == 2)
+ select = 0
+ burst_size = 1
+ fire_delay = 0
+ user << "You switch to semi-auto."
update_icon()
return
-/obj/item/weapon/gun/projectile/automatic/c90gl/ui_action_click()
- underbarrel_swap()
-
-
-
/obj/item/weapon/gun/projectile/automatic/tommygun
name = "tommy gun"
desc = "A genuine 'Chicago Typewriter'."
@@ -215,3 +223,4 @@
mag_type = /obj/item/ammo_box/magazine/tommygunm45
fire_sound = 'sound/weapons/Gunshot_smg.ogg'
can_suppress = 0
+ burst_size = 4
\ No newline at end of file
diff --git a/code/modules/projectiles/guns/projectile/launchers.dm b/code/modules/projectiles/guns/projectile/launchers.dm
index 1ef80e2a3f9..31773285919 100644
--- a/code/modules/projectiles/guns/projectile/launchers.dm
+++ b/code/modules/projectiles/guns/projectile/launchers.dm
@@ -28,6 +28,8 @@
fire_sound = 'sound/effects/Explosion1.ogg'
origin_tech = "combat=3"
mag_type = /obj/item/ammo_box/magazine/m75
+ burst_size = 1
+ fire_delay = 0
/obj/item/weapon/gun/projectile/automatic/gyropistol/process_chamber(var/eject_casing = 0, var/empty_chamber = 1)
..()
diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm
index 7e29cfbf8bc..4ed58eba2c9 100644
--- a/code/modules/projectiles/guns/projectile/pistol.dm
+++ b/code/modules/projectiles/guns/projectile/pistol.dm
@@ -6,42 +6,38 @@
origin_tech = "combat=2;materials=2;syndicate=2"
mag_type = /obj/item/ammo_box/magazine/m10mm
can_suppress = 1
+ burst_size = 1
+ fire_delay = 0
/obj/item/weapon/gun/projectile/automatic/pistol/update_icon()
..()
icon_state = "[initial(icon_state)][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]"
return
-/obj/item/weapon/gun/projectile/automatic/m1911
+/obj/item/weapon/gun/projectile/automatic/pistol/m1911
name = "M1911 pistol"
desc = "A classic .45 handgun with a small magazine capacity."
- icon_state = "pistol"
+ icon_state = "m1911"
w_class = 3
mag_type = /obj/item/ammo_box/magazine/m45
-/obj/item/weapon/gun/projectile/automatic/pistol45/update_icon()
- ..()
- icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
- return
-
-
-/obj/item/weapon/gun/projectile/automatic/deagle
+/obj/item/weapon/gun/projectile/automatic/pistol/deagle
name = "desert eagle"
desc = "A robust .50 AE handgun."
icon_state = "deagle"
force = 14
mag_type = /obj/item/ammo_box/magazine/m50
-/obj/item/weapon/gun/projectile/automatic/deagle/update_icon()
+/obj/item/weapon/gun/projectile/automatic/pistol/deagle/update_icon()
..()
icon_state = "[initial(icon_state)][magazine ? "" : "-e"]"
-/obj/item/weapon/gun/projectile/automatic/deagle/gold
+/obj/item/weapon/gun/projectile/automatic/pistol/deagle/gold
desc = "A gold plated desert eagle folded over a million times by superior martian gunsmiths. Uses .50 AE ammo."
icon_state = "deagleg"
item_state = "deagleg"
-/obj/item/weapon/gun/projectile/automatic/deagle/camo
+/obj/item/weapon/gun/projectile/automatic/pistol/deagle/camo
desc = "A Deagle brand Deagle for operators operating operationally. Uses .50 AE ammo."
icon_state = "deaglecamo"
item_state = "deagleg"
diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm
index 7188ce64cbc..c829cff0c4a 100644
--- a/code/modules/projectiles/guns/projectile/revolver.dm
+++ b/code/modules/projectiles/guns/projectile/revolver.dm
@@ -5,7 +5,7 @@
mag_type = /obj/item/ammo_box/magazine/internal/cylinder
/obj/item/weapon/gun/projectile/revolver/chamber_round()
- if (chambered || !magazine)
+ if ((chambered && chambered.BB)|| !magazine) //if there's a live ammo in the chamber or no magazine
return
else if (magazine.ammo_count())
chambered = magazine.get_round(1)
@@ -37,6 +37,9 @@
else
user << "[src] is empty."
+/obj/item/weapon/gun/projectile/revolver/can_shoot()
+ return get_ammo(0,0)
+
/obj/item/weapon/gun/projectile/revolver/get_ammo(var/countchambered = 0, var/countempties = 1)
var/boolets = 0 //mature var names for mature people
if (chambered && countchambered)
@@ -172,7 +175,7 @@
return
/obj/item/weapon/gun/projectile/revolver/russian/attack_self(mob/user as mob)
- if(!spun && get_ammo(0,0))
+ if(!spun && can_shoot())
user.visible_message("[user] spins the chamber of the revolver.", "You spin the revolver's chamber.")
Spin()
else
@@ -190,34 +193,35 @@
user << "[src] is empty."
/obj/item/weapon/gun/projectile/revolver/russian/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params)
- if(!spun && get_ammo(0,0))
- user.visible_message("[user] spins the chamber of the revolver.", "You spin the revolver's chamber.")
- Spin()
- ..()
- spun = 0
-
-/obj/item/weapon/gun/projectile/revolver/russian/attack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj)
- if(!spun && get_ammo(0,0))
- user.visible_message("[user] spins the chamber of the revolver.", "You spin the revolver's chamber.")
- Spin()
+ if(user.a_intent == "harm") // Flogging action
+ return
+ if(isliving(user))
+ if(!can_trigger_gun(user))
+ return
+ if(target != user)
+ user << "A mechanism prevents you from shooting anyone but yourself."
return
-
- if(target == user)
- if(!chambered)
- user.visible_message("*click*", "*click*")
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ if(!spun)
+ user << "You need to spin the revolver's chamber first."
return
- if(isliving(target) && isliving(user))
- var/obj/item/organ/limb/affecting = user.zone_sel.selecting
- if(affecting == "head")
- var/obj/item/ammo_casing/AC = chambered
- if(AC.fire(user, user))
+ spun = 0
+
+ if(chambered)
+ var/obj/item/ammo_casing/AC = chambered
+ if(AC.fire(user, user))
+ playsound(user, fire_sound, 50, 1)
+ var/obj/item/organ/limb/affecting = H.get_organ(check_zone(user.zone_sel.selecting))
+ var/limb_name = affecting.getDisplayName()
+ if(affecting == "head" || affecting == "eyes" || affecting == "mouth")
user.apply_damage(300, BRUTE, affecting)
- playsound(user, fire_sound, 50, 1)
- user.visible_message("[user.name] fires [src] at \his head!", "You fire [src] at your head!", "You hear a [istype(AC.BB, /obj/item/projectile/beam) ? "laser blast" : "gunshot"]!")
- return
+ user.visible_message("[user.name] fires [src] at \his head!", "You fire [src] at your head!", "You hear a gunshot!")
else
- user.visible_message("*click*", "*click*")
- return
- ..()
+ user.visible_message("[user.name] cowardly fires [src] at \his [limb_name]!", "You cowardly fire [src] at your [limb_name]!", "You hear a gunshot!")
+ return
+
+ user.visible_message("*click*")
+ playsound(user, 'sound/weapons/empty.ogg', 100, 1)
diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm
index 1858059454a..f07dde7e94f 100644
--- a/code/modules/projectiles/guns/projectile/shotgun.dm
+++ b/code/modules/projectiles/guns/projectile/shotgun.dm
@@ -25,6 +25,11 @@
/obj/item/weapon/gun/projectile/shotgun/chamber_round()
return
+/obj/item/weapon/gun/projectile/shotgun/can_shoot()
+ if(!chambered)
+ return 0
+ return (chambered.BB ? 1 : 0)
+
/obj/item/weapon/gun/projectile/shotgun/attack_self(mob/living/user)
if(recentpump) return
pump(user)
@@ -69,8 +74,12 @@
/obj/item/weapon/gun/projectile/shotgun/riot/attackby(var/obj/item/A as obj, mob/user as mob)
..()
- if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/melee/energy) || istype(A, /obj/item/weapon/pickaxe/plasmacutter))
+ if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/pickaxe/plasmacutter))
sawoff(user)
+ if(istype(A, /obj/item/weapon/melee/energy))
+ var/obj/item/weapon/melee/energy/W = A
+ if(W.active)
+ sawoff(user)
/obj/item/weapon/gun/projectile/revolver/doublebarrel
name = "double-barreled shotgun"
@@ -89,27 +98,13 @@
..()
if(istype(A, /obj/item/ammo_box) || istype(A, /obj/item/ammo_casing))
chamber_round()
- if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/melee/energy) || istype(A, /obj/item/weapon/pickaxe/plasmacutter))
+ if(istype(A, /obj/item/weapon/melee/energy))
+ var/obj/item/weapon/melee/energy/W = A
+ if(W.active)
+ sawoff(user)
+ if(istype(A, /obj/item/weapon/circular_saw) || istype(A, /obj/item/weapon/pickaxe/plasmacutter))
sawoff(user)
-/obj/item/weapon/gun/projectile/proc/sawoff(mob/user as mob)
- user << "You begin to shorten \the [src]."
- if(get_ammo())
- afterattack(user, user)
- user.visible_message("The [src] goes off!", "The [src] goes off in your face!")
- return
- if(do_after(user, 30))
- name = "sawn-off [src.name]"
- desc = sawn_desc
- icon_state = initial(icon_state) + "-sawn"
- w_class = 3.0
- item_state = "gun"
- slot_flags &= ~SLOT_BACK //you can't sling it on your back
- slot_flags |= SLOT_BELT //but you can wear it on your belt (poorly concealed under a trenchcoat, ideally)
- user << "You shorten \the [src]!"
- update_icon()
- return
-
/obj/item/weapon/gun/projectile/revolver/doublebarrel/attack_self(mob/living/user as mob)
var/num_unloaded = 0
while (get_ammo() > 0)
@@ -140,7 +135,7 @@
/obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised/attackby(var/obj/item/A as obj, mob/user as mob)
..()
- if(istype(A, /obj/item/stack/cable_coil))
+ if(istype(A, /obj/item/stack/cable_coil) && !sawn_state)
var/obj/item/stack/cable_coil/C = A
if(C.use(10))
flags = CONDUCT
@@ -150,4 +145,87 @@
update_icon()
else
user << "You need at least ten lengths of cable if you want to make a sling."
- return
\ No newline at end of file
+ return
+
+//Sawing guns related procs
+/obj/item/weapon/gun/projectile/proc/blow_up(mob/user as mob)
+ . = 0
+ for(var/obj/item/ammo_casing/AC in magazine.stored_ammo)
+ if(AC.BB)
+ process_fire(user, user)
+ . = 1
+
+/obj/item/weapon/gun/projectile/shotgun/blow_up(mob/user as mob)
+ . = 0
+ if(chambered && chambered.BB)
+ process_fire(user, user,0)
+ . = 1
+ for(var/obj/item/ammo_casing/AC in magazine.stored_ammo)
+ if(AC.BB)
+ chambered = AC
+ process_fire(user, user,0)
+ . = 1
+
+/obj/item/weapon/gun/projectile/proc/sawoff(mob/user as mob)
+ if(sawn_state == SAWN_OFF)
+ user << "\The [src] is already shorten."
+ return
+
+ if(sawn_state == SAWN_SAWING)
+ return
+
+ user.visible_message("[user] begin to shorten \the [src].", "You begin to shorten \the [src].")
+
+ //if there's any live ammo inside the gun, makes it go off
+ if(blow_up(user))
+ user.visible_message("\The [src] goes off!", "\The [src] goes off in your face!")
+ return
+
+ sawn_state = SAWN_SAWING
+
+ if(do_after(user, 30))
+ name = "sawn-off [src.name]"
+ desc = sawn_desc
+ icon_state = initial(icon_state) + "-sawn"
+ w_class = 3.0
+ item_state = "gun"
+ slot_flags &= ~SLOT_BACK //you can't sling it on your back
+ slot_flags |= SLOT_BELT //but you can wear it on your belt (poorly concealed under a trenchcoat, ideally)
+ sawn_state = SAWN_OFF
+ user.visible_message("[user] shorten \the [src]!", "You shorten \the [src]!")
+ update_icon()
+ return
+ else
+ sawn_state = SAWN_INTACT
+
+
+/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog
+ name = "syndicate shotgun"
+ desc = "A compact, mag-fed burst-fire shotgun for combat in narrow corridors, nicknamed 'Bulldog' by boarding parties. Compatible only with specialized 8-round drum magazines."
+ icon_state = "bulldog"
+ item_state = "bulldog"
+ w_class = 3.0
+ origin_tech = "combat=5;materials=4;syndicate=6"
+ mag_type = /obj/item/ammo_box/magazine/m12g
+ fire_sound = 'sound/weapons/Gunshot.ogg'
+ can_suppress = 0
+ burst_size = 2
+ fire_delay = 1
+/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog/New()
+ ..()
+ update_icon()
+ return
+/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog/proc/update_magazine()
+ if(magazine)
+ src.overlays = 0
+ overlays += "[magazine.icon_state]"
+ return
+/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog/update_icon()
+ src.overlays = 0
+ update_magazine()
+ icon_state = "bulldog[chambered ? "" : "-e"]"
+ return
+/obj/item/weapon/gun/projectile/automatic/shotgun/bulldog/afterattack()
+ ..()
+ empty_alarm()
+ return
\ No newline at end of file
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index d2dc5b61e67..8fa9b8b795d 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -35,14 +35,31 @@
var/stutter = 0
var/eyeblur = 0
var/drowsy = 0
+ var/stamina = 0
+ var/jitter = 0
var/forcedodge = 0
+ var/range = 0
+ var/proj_hit = 0
+
+/obj/item/projectile/proc/Range()
+ if(range)
+ range--
+ if(range <= 0)
+ on_range()
+ else
+ return
+
+/obj/item/projectile/proc/on_range() //if we want there to be effects when they reach the end of their range
+ proj_hit = 1
+ qdel(src)
+
/obj/item/projectile/proc/on_hit(atom/target, blocked = 0, hit_zone)
if(!isliving(target)) return 0
if(isanimal(target)) return 0
var/mob/living/L = target
L.on_hit(type)
- return L.apply_effects(stun, weaken, paralyze, irradiate, stutter, eyeblur, drowsy, blocked)
+ return L.apply_effects(stun, weaken, paralyze, irradiate, stutter, eyeblur, drowsy, blocked, stamina, jitter)
/obj/item/projectile/proc/vol_by_damage()
if(src.damage)
@@ -115,6 +132,3 @@
Bump(original)
Range()
sleep(1)
-
-/obj/item/projectile/proc/Range()
- return
\ No newline at end of file
diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm
index d6bfe72329a..d57ccafc487 100644
--- a/code/modules/projectiles/projectile/beams.dm
+++ b/code/modules/projectiles/projectile/beams.dm
@@ -36,6 +36,14 @@
irradiate = 30
forcedodge = 1
+/obj/item/projectile/beam/disabler
+ name = "disabler beam"
+ icon_state = "omnilaser"
+ damage = 33
+ damage_type = STAMINA
+ hitsound = null
+ eyeblur = 0
+
/obj/item/projectile/beam/pulse
name = "pulse"
icon_state = "u_laser"
diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm
index a3634a488f6..8b9d357efe8 100644
--- a/code/modules/projectiles/projectile/bullets.dm
+++ b/code/modules/projectiles/projectile/bullets.dm
@@ -9,14 +9,12 @@
/obj/item/projectile/bullet/weakbullet
damage = 5
- stun = 5
- weaken = 5
+ stamina = 33
/obj/item/projectile/bullet/weakbullet2
damage = 15
- stun = 5
- weaken = 5
+ stamina = 75 //the detective can't shoot in bursts and will get yelled at if he sinks 50 rounds into perps to stun 'em
/obj/item/projectile/bullet/weakbullet3
damage = 20
@@ -30,8 +28,7 @@
/obj/item/projectile/bullet/midbullet
damage = 20
- stun = 5
- weaken = 5
+ stamina = 50 //two round bursts from the c20r
/obj/item/projectile/bullet/midbullet2
damage = 25
@@ -46,11 +43,7 @@
/obj/item/projectile/bullet/stunshot
name = "stunshot"
damage = 5
- stun = 5
- weaken = 5
- stutter = 5
-
-/obj/item/projectile/bullet/incendiary
+ stamina = 50 //two round bursts from the bulldog
/obj/item/projectile/bullet/incendiary/on_hit(var/atom/target, var/blocked = 0)
..()
diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm
index 2f64825d1fd..f89f265115f 100644
--- a/code/modules/projectiles/projectile/energy.dm
+++ b/code/modules/projectiles/projectile/energy.dm
@@ -14,14 +14,26 @@
stun = 5
weaken = 5
stutter = 5
+ jitter = 20
hitsound = "sparks"
+ range = 7
- on_hit(var/atom/target, var/blocked = 0)
+/obj/item/projectile/energy/electrode/on_hit(var/atom/target, var/blocked = 0)
+ if(!proj_hit)
if(!ismob(target) || blocked >= 2) //Fully blocked by mob or collided with dense object - burst into sparks!
var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread
sparks.set_up(1, 1, src)
sparks.start()
- ..()
+ proj_hit = 1
+ ..()
+
+/obj/item/projectile/energy/electrode/on_range() //to ensure the bolt sparks when it reaches the end of its range if it didn't hit a target yet
+ if(!proj_hit)
+ var/datum/effect/effect/system/spark_spread/sparks = new /datum/effect/effect/system/spark_spread
+ sparks.set_up(1, 1, src)
+ sparks.start()
+ proj_hit = 1
+ ..()
/obj/item/projectile/energy/declone
name = "radiation beam"
@@ -31,39 +43,24 @@
irradiate = 40
-/obj/item/projectile/energy/dart
+/obj/item/projectile/energy/dart //ninja throwing dart
name = "dart"
icon_state = "toxin"
damage = 5
damage_type = TOX
weaken = 5
+ range = 7
-
-/obj/item/projectile/energy/bolt
+/obj/item/projectile/energy/bolt //ebow bolts
name = "bolt"
icon_state = "cbbolt"
- damage = 10
+ damage = 15
damage_type = TOX
nodamage = 0
weaken = 5
stutter = 5
-
+ range = 10
/obj/item/projectile/energy/bolt/large
name = "largebolt"
damage = 20
-
-/obj/item/projectile/energy/disabler
- name = "disabler beam"
- icon_state = "omnilaser"
- damage = 34
- damage_type = STAMINA
- var/range = 7
-
-/obj/item/projectile/energy/disabler/Range()
- range--
- if(range <= 0)
- qdel(src)
-
-
-
diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm
index 337ccb32d8c..65a0c7c1451 100644
--- a/code/modules/projectiles/projectile/special.dm
+++ b/code/modules/projectiles/projectile/special.dm
@@ -18,7 +18,6 @@
damage = 50
flag = "bullet"
-
/obj/item/projectile/bullet/gyro/on_hit(atom/target, blocked = 0)
explosion(target, -1, 0, 2)
return 1
@@ -29,6 +28,7 @@
icon_state= "bolter"
damage = 60
flag = "bullet"
+ range = 7
/obj/item/projectile/bullet/a40mm/on_hit(atom/target, blocked = 0)
explosion(target, -1, 0, 2, 1, 0, flame_range = 3)
@@ -105,7 +105,7 @@
damage = 15
damage_type = BRUTE
flag = "bomb"
- var/range = 3
+ range = 3
obj/item/projectile/kinetic/New()
var/turf/proj_turf = get_turf(src)
@@ -178,4 +178,4 @@ obj/item/projectile/kinetic/New()
/obj/item/projectile/bullet/frag12
name ="explosive slug"
damage = 25
- weaken = 5
\ No newline at end of file
+ weaken = 5
diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm
index a6d6d2572e2..2490dd033b0 100644
--- a/code/modules/reagents/Chemistry-Holder.dm
+++ b/code/modules/reagents/Chemistry-Holder.dm
@@ -247,7 +247,9 @@ datum/reagents/proc/handle_reactions()
else
if(my_atom.type == C.required_container)
matching_container = 1
-
+ if (isliving(my_atom)) //Makes it so certain chemical reactions don't occur in mobs
+ if (C.mob_react)
+ return
if(!C.required_other)
matching_other = 1
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents.dm
index 641c0916c0f..257948ffc79 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents.dm
@@ -88,7 +88,7 @@ datum/reagent/proc/on_update(var/atom/A)
return
datum/reagent/blood
- data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null)
+ data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
name = "Blood"
id = "blood"
color = "#C80000" // rgb: 200, 0, 0
diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm
index 11cfec3f0dc..e174ee01f2f 100644
--- a/code/modules/reagents/Chemistry-Recipes.dm
+++ b/code/modules/reagents/Chemistry-Recipes.dm
@@ -12,6 +12,7 @@
var/result_amount = 0
var/secondary = 0 // set to nonzero if secondary reaction
+ var/mob_react = 0 //Determines if a chemical reaction can occur inside a mob
/datum/chemical_reaction/proc/on_reaction(var/datum/reagents/holder, var/created_volume)
return
@@ -384,6 +385,7 @@ silicate
required_reagents = list("potassium" = 1, "sugar" = 1, "phosphorus" = 1)
result_amount = null
secondary = 1
+ mob_react = 1
/datum/chemical_reaction/chemsmoke/on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
@@ -448,6 +450,7 @@ silicate
result = null
required_reagents = list("iron" = 5, "frostoil" = 5, "plasma" = 20)
result_amount = 1
+ mob_react = 1
/datum/chemical_reaction/plasmasolidification/on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
@@ -537,6 +540,7 @@ silicate
result = null
required_reagents = list("fluorosurfactant" = 1, "water" = 1)
result_amount = 2
+ mob_react = 1
/datum/chemical_reaction/foam/on_reaction(var/datum/reagents/holder, var/created_volume)
@@ -566,6 +570,7 @@ silicate
result = null
required_reagents = list("aluminium" = 3, "foaming_agent" = 1, "pacid" = 1)
result_amount = 5
+ mob_react = 1
/datum/chemical_reaction/metalfoam/on_reaction(var/datum/reagents/holder, var/created_volume)
@@ -586,6 +591,7 @@ silicate
result = null
required_reagents = list("iron" = 3, "foaming_agent" = 1, "pacid" = 1)
result_amount = 5
+ mob_react = 1
/datum/chemical_reaction/ironfoam/on_reaction(var/datum/reagents/holder, var/created_volume)
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 3e08174bdaa..7eccb7ffdc5 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -118,6 +118,7 @@
B.data["cloneable"] = 1
B.data["gender"] = T.gender
B.data["real_name"] = T.real_name
+ B.data["factions"] = T.faction
reagents.reagent_list += B
reagents.update_total()
on_reagent_change()
diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm
index a19eaff4eb4..958ed65f986 100644
--- a/code/modules/research/circuitprinter.dm
+++ b/code/modules/research/circuitprinter.dm
@@ -17,6 +17,19 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
var/efficiency_coeff
reagents = new()
+ var/list/categories = list(
+ "AI Modules",
+ "Computer Boards",
+ "Teleportation Machinery",
+ "Medical Machinery",
+ "Engineering Machinery",
+ "Exosuit Modules",
+ "Hydroponics Machinery",
+ "Subspace Telecomms",
+ "Research Machinery",
+ "Misc. Machinery"
+ )
+
/obj/machinery/r_n_d/circuit_imprinter/New()
..()
component_parts = list()
diff --git a/code/modules/research/designs/AI_module_designs.dm b/code/modules/research/designs/AI_module_designs.dm
index d91e8efb90a..9915b0eb92c 100644
--- a/code/modules/research/designs/AI_module_designs.dm
+++ b/code/modules/research/designs/AI_module_designs.dm
@@ -2,79 +2,89 @@
//////////AI Module Disks//////////
///////////////////////////////////
-datum/design/safeguard_module
- name = "AI Module(Safeguard)"
+
+/datum/design/safeguard_module
+ name = "Module Design (Safeguard)"
desc = "Allows for the construction of a Safeguard AI Module."
id = "safeguard_module"
req_tech = list("programming" = 3, "materials" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100)
build_path = /obj/item/weapon/aiModule/supplied/safeguard
+ category = list("AI Modules")
-datum/design/onehuman_module
- name = "AI Module (OneHuman)"
+/datum/design/onehuman_module
+ name = "Module Design (OneHuman)"
desc = "Allows for the construction of a OneHuman AI Module."
id = "onehuman_module"
req_tech = list("programming" = 4, "materials" = 6)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
build_path = /obj/item/weapon/aiModule/zeroth/oneHuman
+ category = list("AI Modules")
-datum/design/protectstation_module
- name = "AI Module (ProtectStation)"
+/datum/design/protectstation_module
+ name = "Module Design (ProtectStation)"
desc = "Allows for the construction of a ProtectStation AI Module."
id = "protectstation_module"
req_tech = list("programming" = 3, "materials" = 6)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100)
build_path = /obj/item/weapon/aiModule/supplied/protectStation
+ category = list("AI Modules")
-datum/design/quarantine_module
- name = "AI Module (Quarantine)"
+/datum/design/quarantine_module
+ name = "Module Design (Quarantine)"
desc = "Allows for the construction of a Quarantine AI Module."
id = "quarantine_module"
req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100)
build_path = /obj/item/weapon/aiModule/supplied/quarantine
+ category = list("AI Modules")
-datum/design/oxygen_module
- name = "AI Module (OxygenIsToxicToHumans)"
+
+/datum/design/oxygen_module
+ name = "Module Design (OxygenIsToxicToHumans)"
desc = "Allows for the construction of a Safeguard AI Module."
id = "oxygen_module"
req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100)
build_path = /obj/item/weapon/aiModule/supplied/oxygen
+ category = list("AI Modules")
-datum/design/freeform_module
- name = "AI Module (Freeform)"
+/datum/design/freeform_module
+ name = "Module Design (Freeform)"
desc = "Allows for the construction of a Freeform AI Module."
id = "freeform_module"
req_tech = list("programming" = 4, "materials" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100)
build_path = /obj/item/weapon/aiModule/supplied/freeform
+ category = list("AI Modules")
-datum/design/reset_module
- name = "AI Module (Reset)"
+/datum/design/reset_module
+ name = "Module Design (Reset)"
desc = "Allows for the construction of a Reset AI Module."
id = "reset_module"
req_tech = list("programming" = 3, "materials" = 6)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$gold" = 100)
build_path = /obj/item/weapon/aiModule/reset
+ category = list("AI Modules")
-datum/design/purge_module
- name = "AI Module (Purge)"
+/datum/design/purge_module
+ name = "Module Design (Purge)"
desc = "Allows for the construction of a Purge AI Module."
id = "purge_module"
req_tech = list("programming" = 4, "materials" = 6)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
build_path = /obj/item/weapon/aiModule/reset/purge
+ category = list("AI Modules")
-datum/design/freeformcore_module
+/datum/design/freeformcore_module
name = "AI Core Module (Freeform)"
desc = "Allows for the construction of a Freeform AI Core Module."
id = "freeformcore_module"
@@ -82,48 +92,54 @@ datum/design/freeformcore_module
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
build_path = /obj/item/weapon/aiModule/core/freeformcore
+ category = list("AI Modules")
-datum/design/asimov
- name = "AI Core Module (Asimov)"
+/datum/design/asimov
+ name = "Core Module Design (Asimov)"
desc = "Allows for the construction of a Asimov AI Core Module."
id = "asimov_module"
req_tech = list("programming" = 3, "materials" = 6)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
build_path = /obj/item/weapon/aiModule/core/full/asimov
+ category = list("AI Modules")
-datum/design/paladin_module
- name = "AI Core Module (P.A.L.A.D.I.N.)"
+/datum/design/paladin_module
+ name = "Core Module Design (P.A.L.A.D.I.N.)"
desc = "Allows for the construction of a P.A.L.A.D.I.N. AI Core Module."
id = "paladin_module"
req_tech = list("programming" = 4, "materials" = 6)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
build_path = /obj/item/weapon/aiModule/core/full/paladin
+ category = list("AI Modules")
-datum/design/tyrant_module
- name = "AI Core Module (T.Y.R.A.N.T.)"
+/datum/design/tyrant_module
+ name = "Core Module Design (T.Y.R.A.N.T.)"
desc = "Allows for the construction of a T.Y.R.A.N.T. AI Module."
id = "tyrant_module"
req_tech = list("programming" = 4, "syndicate" = 2, "materials" = 6)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
build_path = /obj/item/weapon/aiModule/core/full/tyrant
+ category = list("AI Modules")
-datum/design/corporate_module
- name = "AI Core Module (Corporate)"
+/datum/design/corporate_module
+ name = "Core Module Design (Corporate)"
desc = "Allows for the construction of a Corporate AI Core Module."
id = "corporate_module"
req_tech = list("programming" = 4, "materials" = 6)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
build_path = /obj/item/weapon/aiModule/core/full/corp
+ category = list("AI Modules")
-datum/design/custom_module
- name = "AI Core Module (Custom)"
+/datum/design/custom_module
+ name = "Core Module Design (Custom)"
desc = "Allows for the construction of a Custom AI Core Module."
id = "custom_module"
req_tech = list("programming" = 4, "materials" = 6)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20, "$diamond" = 100)
- build_path = /obj/item/weapon/aiModule/core/full/custom
\ No newline at end of file
+ build_path = /obj/item/weapon/aiModule/core/full/custom
+ category = list("AI Modules")
diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm
new file mode 100644
index 00000000000..71868e610c9
--- /dev/null
+++ b/code/modules/research/designs/autolathe_designs.dm
@@ -0,0 +1,500 @@
+///////////////////////////////////
+//////////Autolathe Designs ///////
+///////////////////////////////////
+
+/datum/design/bucket
+ name = "Bucket"
+ id = "bucket"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 200)
+ build_path = /obj/item/weapon/reagent_containers/glass/bucket
+ category = list("initial","Tools")
+
+/datum/design/crowbar
+ name = "Pocket crowbar"
+ id = "crowbar"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 50)
+ build_path = /obj/item/weapon/crowbar
+ category = list("initial","Tools")
+
+/datum/design/flashlight
+ name = "Flashlight"
+ id = "flashlight"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 50, "$glass" = 20)
+ build_path = /obj/item/device/flashlight
+ category = list("initial","Tools")
+
+/datum/design/extinguisher
+ name = "Fire extinguisher"
+ id = "extinguisher"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 90)
+ build_path = /obj/item/weapon/extinguisher
+ category = list("initial","Tools")
+
+/datum/design/multitool
+ name = "Multitool"
+ id = "multitool"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 50, "$glass" = 20)
+ build_path = /obj/item/device/multitool
+ category = list("initial","Tools")
+
+/datum/design/analyzer
+ name = "Analyzer"
+ id = "analyzer"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 30, "$glass" = 20)
+ build_path = /obj/item/device/analyzer
+ category = list("initial","Tools")
+
+/datum/design/tscanner
+ name = "T-ray scanner"
+ id = "tscanner"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 150)
+ build_path = /obj/item/device/t_scanner
+ category = list("initial","Tools")
+
+/datum/design/weldingtool
+ name = "Welding tool"
+ id = "welding_tool"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 70, "$glass" = 20)
+ build_path = /obj/item/weapon/weldingtool
+ category = list("initial","Tools")
+
+/datum/design/screwdriver
+ name = "Screwdriver"
+ id = "screwdriver"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 75)
+ build_path = /obj/item/weapon/screwdriver
+ category = list("initial","Tools")
+
+/datum/design/wirecutters
+ name = "Wirecutters"
+ id = "wirecutters"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 80)
+ build_path = /obj/item/weapon/wirecutters
+ category = list("initial","Tools")
+
+/datum/design/wrench
+ name = "Wrench"
+ id = "wrench"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 150)
+ build_path = /obj/item/weapon/wrench
+ category = list("initial","Tools")
+
+/datum/design/welding_helmet
+ name = "Welding helmet"
+ id = "welding_helmet"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 1750, "$glass" = 400)
+ build_path = /obj/item/clothing/head/welding
+ category = list("initial","Tools")
+
+/datum/design/console_screen
+ name = "Console screen"
+ id = "console_screen"
+ build_type = AUTOLATHE
+ materials = list("$glass" = 200)
+ build_path = /obj/item/weapon/stock_parts/console_screen
+ category = list("initial", "Electronics")
+
+/datum/design/airlock_board
+ name = "Airlock electronics"
+ id = "airlock_board"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 50, "$glass" = 50)
+ build_path = /obj/item/weapon/airlock_electronics
+ category = list("initial", "Electronics")
+
+/datum/design/airalarm_electronics
+ name = "Air alarm electronics"
+ id = "airalarm_electronics"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 50, "$glass" = 50)
+ build_path = /obj/item/weapon/airalarm_electronics
+ category = list("initial", "Electronics")
+
+/datum/design/firealarm_electronics
+ name = "Fire alarm electronics"
+ id = "firealarm_electronics"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 50, "$glass" = 50)
+ build_path = /obj/item/weapon/firealarm_electronics
+ category = list("initial", "Electronics")
+
+/datum/design/pipe_painter
+ name = "Pipe painter"
+ id = "pipe_painter"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 5000, "$glass" = 2000)
+ build_path = /obj/item/device/pipe_painter
+ category = list("initial", "Misc")
+
+/datum/design/metal
+ name = "Metal"
+ id = "metal"
+ build_type = AUTOLATHE
+ materials = list("$metal" = MINERAL_MATERIAL_AMOUNT)
+ build_path = /obj/item/stack/sheet/metal
+ category = list("initial","Construction")
+
+/datum/design/glass
+ name = "Glass"
+ id = "glass"
+ build_type = AUTOLATHE
+ materials = list("$glass" = MINERAL_MATERIAL_AMOUNT)
+ build_path = /obj/item/stack/sheet/glass
+ category = list("initial","Construction")
+
+/datum/design/rglass
+ name = "Reinforced glass"
+ id = "rglass"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 1000, "$glass" = MINERAL_MATERIAL_AMOUNT)
+ build_path = /obj/item/stack/sheet/rglass
+ category = list("initial","Construction")
+
+/datum/design/rods
+ name = "Metal rod"
+ id = "rods"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 1000)
+ build_path = /obj/item/stack/rods
+ category = list("initial","Construction")
+
+/datum/design/rcd_ammo
+ name = "Compressed matter cardridge"
+ id = "rcd_ammo"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 16000, "$glass"=8000)
+ build_path = /obj/item/weapon/rcd_ammo
+ category = list("initial","Construction")
+
+/datum/design/kitchen_knife
+ name = "Kitchen knife"
+ id = "kitchen_knife"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 12000)
+ build_path = /obj/item/weapon/kitchenknife
+ category = list("initial","Misc")
+
+/datum/design/scalpel
+ name = "Scalpel"
+ id = "scalpel"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 4000, "$glass" = 1000)
+ build_path = /obj/item/weapon/scalpel
+ category = list("initial", "Medical")
+
+/datum/design/circular_saw
+ name = "Circular saw"
+ id = "circular_saw"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 10000, "$glass" = 6000)
+ build_path = /obj/item/weapon/circular_saw
+ category = list("initial", "Medical")
+
+/datum/design/surgicaldrill
+ name = "Surgical drill"
+ id = "surgicaldrill"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 10000, "$glass" = 6000)
+ build_path = /obj/item/weapon/surgicaldrill
+ category = list("initial", "Medical")
+
+/datum/design/retractor
+ name = "Retractor"
+ id = "retractor"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 6000, "$glass" = 3000)
+ build_path = /obj/item/weapon/
+ category = list("initial", "Medical")
+
+/datum/design/cautery
+ name = "Cautery"
+ id = "cautery"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 2500, "$glass" = 750)
+ build_path = /obj/item/weapon/cautery
+ category = list("initial", "Medical")
+
+/datum/design/hemostat
+ name = "Hemostat"
+ id = "hemostat"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 5000, "$glass" = 2500)
+ build_path = /obj/item/weapon/hemostat
+ category = list("initial", "Medical")
+
+/datum/design/beaker
+ name = "Beaker"
+ id = "beaker"
+ build_type = AUTOLATHE
+ materials = list("$glass" = 500)
+ build_path = /obj/item/weapon/reagent_containers/glass/beaker
+ category = list("initial", "Medical")
+
+/datum/design/large_beaker
+ name = "Large beaker"
+ id = "large_beaker"
+ build_type = AUTOLATHE
+ materials = list("$glass" = 2500)
+ build_path = /obj/item/weapon/reagent_containers/glass/beaker/large
+ category = list("initial", "Medical")
+
+/datum/design/beanbag_slug
+ name = "Beanbag slug"
+ id = "beanbag_slug"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 250)
+ build_path = /obj/item/ammo_casing/shotgun/beanbag
+ category = list("initial", "Security")
+
+/datum/design/c38
+ name = "Speed loader (.38)"
+ id = "c38"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 30000)
+ build_path = /obj/item/ammo_box/c38
+ category = list("initial", "Security")
+
+/datum/design/recorder
+ name = "Universal recorder"
+ id = "recorder"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 60, "$glass" = 30)
+ build_path = /obj/item/device/taperecorder/empty
+ category = list("initial", "Misc")
+
+/datum/design/tape
+ name = "Tape"
+ id = "tape"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 20, "$glass" = 5)
+ build_path = /obj/item/device/tape
+ category = list("initial", "Misc")
+
+/datum/design/igniter
+ name = "Igniter"
+ id = "igniter"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 500, "$glass" = 50)
+ build_path = /obj/item/device/assembly/igniter
+ category = list("initial", "Misc")
+
+/datum/design/signaler
+ name = "Remote signaling device"
+ id = "signaler"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 400, "$glass" = 120)
+ build_path = /obj/item/device/assembly/signaler
+ category = list("initial", "T-Comm")
+
+/datum/design/radio_headset
+ name = "Radio headset"
+ id = "radio_headset"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 75)
+ build_path = /obj/item/device/radio/headset
+ category = list("initial", "T-Comm")
+
+/datum/design/bounced_radio
+ name = "Station bounced radio"
+ id = "bounced_radio"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 75, "$glass" = 25)
+ build_path = /obj/item/device/radio/off
+ category = list("initial", "T-Comm")
+
+/datum/design/infrared_emitter
+ name = "Infrared emitter"
+ id = "infrared_emitter"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 1000, "$glass" = 500)
+ build_path = /obj/item/device/assembly/infra
+ category = list("initial", "Misc")
+
+/datum/design/timer
+ name = "Timer"
+ id = "timer"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 500, "$glass" = 50)
+ build_path = /obj/item/device/assembly/timer
+ category = list("initial", "Misc")
+
+/datum/design/voice_analyser
+ name = "Voice analyser"
+ id = "voice_analyser"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 500, "$glass" = 50)
+ build_path = /obj/item/device/assembly/voice
+ category = list("initial", "Misc")
+
+/datum/design/light_tube
+ name = "Light tube"
+ id = "light_tube"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 60, "$glass" = 100)
+ build_path = /obj/item/weapon/light/tube
+ category = list("initial", "Construction")
+
+/datum/design/light_bulb
+ name = "Light bulb"
+ id = "light_bulb"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 60, "$glass" = 100)
+ build_path = /obj/item/weapon/light/bulb
+ category = list("initial", "Construction")
+
+/datum/design/camera_assembly
+ name = "Camera assembly"
+ id = "camera_assembly"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 400, "$glass" = 250)
+ build_path = /obj/item/weapon/camera_assembly
+ category = list("initial", "Construction")
+
+/datum/design/newscaster_frame
+ name = "Newscaster frame"
+ id = "newscaster_frame"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 14000, "$glass" = 8000)
+ build_path = /obj/item/newscaster_frame
+ category = list("initial", "Construction")
+
+/datum/design/syringe
+ name = "Syringe"
+ id = "syringe"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 10, "$glass" = 20)
+ build_path = /obj/item/weapon/reagent_containers/syringe
+ category = list("initial", "Medical")
+
+/datum/design/prox_sensor
+ name = "Proximity sensor"
+ id = "prox_sensor"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 800, "$glass" = 200)
+ build_path = /obj/item/device/assembly/prox_sensor
+ category = list("initial", "Misc")
+
+//hacked autolathe recipes
+/datum/design/flamethrower
+ name = "Flamethrower"
+ id = "flamethrower"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 500)
+ build_path = /obj/item/weapon/flamethrower/full
+ category = list("hacked", "Weapons and ammo")
+
+/datum/design/rcd
+ name = "Rapid construction device (RCD)"
+ id = "rcd"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 30000)
+ build_path = /obj/item/weapon/rcd
+ category = list("hacked", "Construction")
+
+/datum/design/rpd
+ name = "Rapid pipe dispenser (RPD)"
+ id = "rpd"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 75000, "$glass" = 37500)
+ build_path = /obj/item/weapon/pipe_dispenser
+ category = list("hacked", "Construction")
+
+/datum/design/electropack
+ name = "Electropack"
+ id = "electropack"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 10000, "$glass" = 2500)
+ build_path = /obj/item/device/electropack
+ category = list("hacked", "Tools")
+
+/datum/design/large_welding_tool
+ name = "Industrial welding tool"
+ id = "large_welding_tool"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 70, "$glass" = 60)
+ build_path = /obj/item/weapon/weldingtool/largetank
+ category = list("hacked", "Tools")
+
+/datum/design/handcuffs
+ name = "Handcuffs"
+ id = "handcuffs"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 500)
+ build_path = /obj/item/weapon/restraints/handcuffs
+ category = list("hacked", "Security")
+
+/datum/design/shotgun_slug
+ name = "Shotgun slug"
+ id = "shotgun_slug"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 4000)
+ build_path = /obj/item/ammo_casing/shotgun
+ category = list("hacked", "Security")
+
+/datum/design/buckshot_shell
+ name = "Buckshot shell"
+ id = "buckshot_shell"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 4000)
+ build_path = /obj/item/ammo_casing/shotgun/buckshot
+ category = list("hacked", "Security")
+
+/datum/design/shotgun_dart
+ name = "Shotgun dart"
+ id = "shotgun_dart"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 4000)
+ build_path = /obj/item/ammo_casing/shotgun/dart
+ category = list("hacked", "Security")
+
+/datum/design/incendiary_slug
+ name = "Incendiary slug"
+ id = "incendiary_slug"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 4000)
+ build_path = /obj/item/ammo_casing/shotgun/incendiary
+ category = list("hacked", "Security")
+
+/datum/design/a357
+ name = "Ammo box (.357)"
+ id = "a357"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 30000)
+ build_path = /obj/item/ammo_box/a357
+ category = list("hacked", "Security")
+
+/datum/design/c10mm
+ name = "Ammo box (10mm)"
+ id = "c10mm"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 30000)
+ build_path = /obj/item/ammo_box/c10mm
+ category = list("hacked", "Security")
+
+/datum/design/c45
+ name = "Ammo box (.45)"
+ id = "c45"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 30000)
+ build_path = /obj/item/ammo_box/c45
+ category = list("hacked", "Security")
+
+/datum/design/c9mm
+ name = "Ammo box (9mm)"
+ id = "c9mm"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 30000)
+ build_path = /obj/item/ammo_box/c9mm
+ category = list("hacked", "Security")
diff --git a/code/modules/research/designs/comp_board_designs.dm b/code/modules/research/designs/comp_board_designs.dm
index 599e9700966..297a1eaa353 100644
--- a/code/modules/research/designs/comp_board_designs.dm
+++ b/code/modules/research/designs/comp_board_designs.dm
@@ -1,6 +1,6 @@
///////////////////Computer Boards///////////////////////////////////
-datum/design/seccamera
+/datum/design/seccamera
name = "Computer Design (Security)"
desc = "Allows for the construction of circuit boards used to build security camera computers."
id = "seccamera"
@@ -8,8 +8,9 @@ datum/design/seccamera
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/security
+ category = list("Computer Boards")
-datum/design/aicore
+/datum/design/aicore
name = "AI Design (AI Core)"
desc = "Allows for the construction of circuit boards used to build new AI cores."
id = "aicore"
@@ -17,8 +18,9 @@ datum/design/aicore
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/aicore
+ category = list("Computer Boards")
-datum/design/aiupload
+/datum/design/aiupload
name = "Computer Design (AI Upload)"
desc = "Allows for the construction of circuit boards used to build an AI Upload Console."
id = "aiupload"
@@ -26,8 +28,9 @@ datum/design/aiupload
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/aiupload
+ category = list("Computer Boards")
-datum/design/borgupload
+/datum/design/borgupload
name = "Computer Design (Cyborg Upload)"
desc = "Allows for the construction of circuit boards used to build a Cyborg Upload Console."
id = "borgupload"
@@ -35,8 +38,9 @@ datum/design/borgupload
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/borgupload
+ category = list("Computer Boards")
-datum/design/med_data
+/datum/design/med_data
name = "Computer Design (Medical Records)"
desc = "Allows for the construction of circuit boards used to build a medical records console."
id = "med_data"
@@ -44,8 +48,9 @@ datum/design/med_data
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/med_data
+ category = list("Computer Boards")
-datum/design/operating
+/datum/design/operating
name = "Computer Design (Operating Computer)"
desc = "Allows for the construction of circuit boards used to build an operating computer console."
id = "operating"
@@ -53,8 +58,9 @@ datum/design/operating
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/operating
+ category = list("Computer Boards")
-datum/design/pandemic
+/datum/design/pandemic
name = "Computer Design (PanD.E.M.I.C. 2200)"
desc = "Allows for the construction of circuit boards used to build a PanD.E.M.I.C. 2200 console."
id = "pandemic"
@@ -62,8 +68,9 @@ datum/design/pandemic
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/pandemic
+ category = list("Computer Boards")
-datum/design/scan_console
+/datum/design/scan_console
name = "Computer Design (DNA Machine)"
desc = "Allows for the construction of circuit boards used to build a new DNA scanning console."
id = "scan_console"
@@ -71,8 +78,9 @@ datum/design/scan_console
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/scan_consolenew
+ category = list("Computer Boards")
-datum/design/comconsole
+/datum/design/comconsole
name = "Computer Design (Communications)"
desc = "Allows for the construction of circuit boards used to build a communications console."
id = "comconsole"
@@ -80,8 +88,9 @@ datum/design/comconsole
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/communications
+ category = list("Computer Boards")
-datum/design/idcardconsole
+/datum/design/idcardconsole
name = "Computer Design (ID Console)"
desc = "Allows for the construction of circuit boards used to build an ID computer."
id = "idcardconsole"
@@ -89,8 +98,9 @@ datum/design/idcardconsole
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/card
+ category = list("Computer Boards")
-datum/design/crewconsole
+/datum/design/crewconsole
name = "Computer Design (Crew monitoring computer)"
desc = "Allows for the construction of circuit boards used to build a Crew monitoring computer."
id = "crewconsole"
@@ -98,8 +108,9 @@ datum/design/crewconsole
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/crew
+ category = list("Computer Boards")
-datum/design/teleconsole
+/datum/design/teleconsole
name = "Computer Design (Teleporter Console)"
desc = "Allows for the construction of circuit boards used to build a teleporter control console."
id = "teleconsole"
@@ -107,8 +118,9 @@ datum/design/teleconsole
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/teleporter
+ category = list("Computer Boards")
-datum/design/secdata
+/datum/design/secdata
name = "Computer Design (Security Records Console)"
desc = "Allows for the construction of circuit boards used to build a security records console."
id = "secdata"
@@ -116,8 +128,9 @@ datum/design/secdata
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/secure_data
+ category = list("Computer Boards")
-datum/design/atmosalerts
+/datum/design/atmosalerts
name = "Computer Design (Atmosphere Alert)"
desc = "Allows for the construction of circuit boards used to build an atmosphere alert console."
id = "atmosalerts"
@@ -125,8 +138,9 @@ datum/design/atmosalerts
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/atmos_alert
+ category = list("Computer Boards")
-datum/design/air_management
+/datum/design/air_management
name = "Computer Design (Atmospheric Monitor)"
desc = "Allows for the construction of circuit boards used to build an Atmospheric Monitor."
id = "air_management"
@@ -134,8 +148,9 @@ datum/design/air_management
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/air_management
+ category = list("Computer Boards")
-datum/design/robocontrol
+/datum/design/robocontrol
name = "Computer Design (Robotics Control Console)"
desc = "Allows for the construction of circuit boards used to build a Robotics Control console."
id = "robocontrol"
@@ -143,8 +158,9 @@ datum/design/robocontrol
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/robotics
+ category = list("Computer Boards")
-datum/design/clonecontrol
+/datum/design/clonecontrol
name = "Computer Design (Cloning Machine Console)"
desc = "Allows for the construction of circuit boards used to build a new Cloning Machine console."
id = "clonecontrol"
@@ -152,8 +168,9 @@ datum/design/clonecontrol
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/cloning
+ category = list("Computer Boards")
-datum/design/clonepod
+/datum/design/clonepod
name = "Machine Design (Clone Pod)"
desc = "Allows for the construction of circuit boards used to build a Cloning Pod."
id = "clonepod"
@@ -161,8 +178,9 @@ datum/design/clonepod
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/clonepod
+ category = list("Computer Boards")
-datum/design/clonescanner
+/datum/design/clonescanner
name = "Machine Design (Cloning Scanner)"
desc = "Allows for the construction of circuit boards used to build a Cloning Scanner."
id = "clonescanner"
@@ -170,8 +188,9 @@ datum/design/clonescanner
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/clonescanner
+ category = list("Computer Boards")
-datum/design/arcadebattle
+/datum/design/arcadebattle
name = "Computer Design (Battle Arcade Machine)"
desc = "Allows for the construction of circuit boards used to build a new arcade machine."
id = "arcademachine"
@@ -179,8 +198,9 @@ datum/design/arcadebattle
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/arcade/battle
+ category = list("Computer Boards")
-datum/design/orion_trail
+/datum/design/orion_trail
name = "Computer Design (Orion Trail Arcade Machine)"
desc = "Allows for the construction of circuit boards used to build a new Orion Trail machine."
id = "arcademachine"
@@ -188,8 +208,9 @@ datum/design/orion_trail
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/arcade/orion_trail
+ category = list("Computer Boards")
-datum/design/orion_trail
+/datum/design/orion_trail
name = "Computer Design (Slot Machine)"
desc = "Allows for the construction of circuit boards used to build a new slot machine."
id = "slotmachine"
@@ -197,8 +218,9 @@ datum/design/orion_trail
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/slot_machine
+ category = list("Computer Boards")
-datum/design/powermonitor
+/datum/design/powermonitor
name = "Computer Design (Power Monitor)"
desc = "Allows for the construction of circuit boards used to build a new power monitor."
id = "powermonitor"
@@ -206,8 +228,9 @@ datum/design/powermonitor
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/powermonitor
+ category = list("Computer Boards")
-datum/design/solarcontrol
+/datum/design/solarcontrol
name = "Computer Design (Solar Control)"
desc = "Allows for the construction of circuit boards used to build a solar control console."
id = "solarcontrol"
@@ -215,8 +238,9 @@ datum/design/solarcontrol
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/solar_control
+ category = list("Computer Boards")
-datum/design/prisonmanage
+/datum/design/prisonmanage
name = "Computer Design (Prisoner Management Console)"
desc = "Allows for the construction of circuit boards used to build a prisoner management console."
id = "prisonmanage"
@@ -224,8 +248,9 @@ datum/design/prisonmanage
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/prisoner
+ category = list("Computer Boards")
-datum/design/mechacontrol
+/datum/design/mechacontrol
name = "Computer Design (Exosuit Control Console)"
desc = "Allows for the construction of circuit boards used to build an exosuit control console."
id = "mechacontrol"
@@ -233,8 +258,9 @@ datum/design/mechacontrol
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha_control
+ category = list("Computer Boards")
-datum/design/mechapower
+/datum/design/mechapower
name = "Computer Design (Mech Bay Power Control Console)"
desc = "Allows for the construction of circuit boards used to build a mech bay power control console."
id = "mechapower"
@@ -242,8 +268,9 @@ datum/design/mechapower
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mech_bay_power_console
+ category = list("Computer Boards")
-datum/design/rdconsole
+/datum/design/rdconsole
name = "Computer Design (R&D Console)"
desc = "Allows for the construction of circuit boards used to build a new R&D console."
id = "rdconsole"
@@ -251,8 +278,9 @@ datum/design/rdconsole
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/rdconsole
+ category = list("Computer Boards")
-datum/design/ordercomp
+/datum/design/ordercomp
name = "Computer Design (Supply ordering console)"
desc = "Allows for the construction of circuit boards used to build a Supply ordering console."
id = "ordercomp"
@@ -260,8 +288,9 @@ datum/design/ordercomp
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/ordercomp
+ category = list("Computer Boards")
-datum/design/supplycomp
+/datum/design/supplycomp
name = "Computer Design (Supply shuttle console)"
desc = "Allows for the construction of circuit boards used to build a Supply shuttle console."
id = "supplycomp"
@@ -269,8 +298,9 @@ datum/design/supplycomp
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/supplycomp
+ category = list("Computer Boards")
-datum/design/mining
+/datum/design/mining
name = "Computer Design (Outpost Status Display)"
desc = "Allows for the construction of circuit boards used to build an outpost status display console."
id = "mining"
@@ -278,8 +308,9 @@ datum/design/mining
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mining
+ category = list("Computer Boards")
-datum/design/comm_monitor
+/datum/design/comm_monitor
name = "Computer Design (Telecommunications Monitoring Console)"
desc = "Allows for the construction of circuit boards used to build a telecommunications monitor."
id = "comm_monitor"
@@ -287,8 +318,9 @@ datum/design/comm_monitor
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/comm_monitor
+ category = list("Computer Boards")
-datum/design/comm_server
+/datum/design/comm_server
name = "Computer Design (Telecommunications Server Monitoring Console)"
desc = "Allows for the construction of circuit boards used to build a telecommunication server browser and monitor."
id = "comm_server"
@@ -296,8 +328,9 @@ datum/design/comm_server
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/comm_server
+ category = list("Computer Boards")
-datum/design/message_monitor
+/datum/design/message_monitor
name = "Computer Design (Messaging Monitor Console)"
desc = "Allows for the construction of circuit boards used to build a messaging monitor console."
id = "message_monitor"
@@ -305,8 +338,9 @@ datum/design/message_monitor
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/message_monitor
+ category = list("Computer Boards")
-datum/design/comm_traffic
+/datum/design/comm_traffic
name = "Computer Design (Telecommunications Traffic Control Console)"
desc = "Allows for the construction of circuit boards used to build a telecommunications traffic control console."
id = "comm_traffic"
@@ -314,8 +348,9 @@ datum/design/comm_traffic
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/comm_traffic
+ category = list("Computer Boards")
-datum/design/telesci_console
+/datum/design/telesci_console
name = "Computer Design (Telepad Control Console Board)"
desc = "Allows for the construction of circuit boards used to build a telescience console."
id = "telesci_console"
@@ -323,12 +358,14 @@ datum/design/telesci_console
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telesci_console
+ category = list("Computer Boards")
-datum/design/aifixer
+/datum/design/aifixer
name = "Computer Design (AI Integrity Restorer)"
desc = "Allows for the construction of circuit boards used to build an AI Integrity Restorer."
id = "aifixer"
req_tech = list("programming" = 3, "biotech" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/aifixer
\ No newline at end of file
+ build_path = /obj/item/weapon/circuitboard/aifixer
+ category = list("Computer Boards")
diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm
index bc0d01dd8fb..bcd39b203e3 100644
--- a/code/modules/research/designs/machine_designs.dm
+++ b/code/modules/research/designs/machine_designs.dm
@@ -2,7 +2,7 @@
//////////////MISC Boards///////////////
////////////////////////////////////////
-datum/design/smes
+/datum/design/smes
name = "Machine Design (SMES Board)"
desc = "The circuit board for a SMES."
id = "smes"
@@ -10,8 +10,9 @@ datum/design/smes
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/smes
+ category = list ("Engineering Machinery")
-datum/design/turbine_computer
+/datum/design/turbine_computer
name = "Computer Design (Power Turbine Console Board)"
desc = "The circuit board for a power turbine console."
id = "power_turbine_console"
@@ -19,8 +20,9 @@ datum/design/turbine_computer
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/turbine_computer
+ category = list ("Engineering Machinery")
-datum/design/power_compressor
+/datum/design/power_compressor
name = "Machine Design (Power Compressor Board)"
desc = "The circuit board for a power compressor."
id = "power_compressor"
@@ -28,8 +30,9 @@ datum/design/power_compressor
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/power_compressor
+ category = list ("Engineering Machinery")
-datum/design/power_turbine
+/datum/design/power_turbine
name = "Machine Design (Power Turbine Board)"
desc = "The circuit board for a power turbine."
id = "power_turbine"
@@ -37,53 +40,9 @@ datum/design/power_turbine
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/power_turbine
+ category = list ("Engineering Machinery")
-datum/design/teleport_station
- name = "Machine Design (Teleportation Station Board)"
- desc = "The circuit board for a teleportation station."
- id = "tele_station"
- req_tech = list("programming" = 4, "bluespace" = 4, "engineering" = 4)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/teleporter_station
-
-datum/design/teleport_hub
- name = "Machine Design (Teleportation Hub Board)"
- desc = "The circuit board for a teleportation hub."
- id = "tele_hub"
- req_tech = list("programming" = 3, "bluespace" = 5, "materials" = 4, "engineering" = 5)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/teleporter_hub
-
-datum/design/telepad
- name = "Machine Design (Telepad Board)"
- desc = "The circuit board for a telescience telepad."
- id = "telepad"
- req_tech = list("programming" = 4, "bluespace" = 4, "materials" = 3, "engineering" = 3)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/telesci_pad
-
-datum/design/sleeper
- name = "Machine Design (Sleeper Board)"
- desc = "The circuit board for a sleeper."
- id = "sleeper"
- req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3, "engineering" = 3)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/sleeper
-
-datum/design/cryotube
- name = "Machine Design (Cryotube Board)"
- desc = "The circuit board for a cryotube."
- id = "cryotube"
- req_tech = list("programming" = 4, "biotech" = 3, "engineering" = 4)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/cryo_tube
-
-datum/design/thermomachine
+/datum/design/thermomachine
name = "Machine Design (Freezer/Heater Board)"
desc = "The circuit board for a freezer/heater."
id = "thermomachine"
@@ -91,35 +50,59 @@ datum/design/thermomachine
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/thermomachine
+ category = list ("Engineering Machinery")
-datum/design/biogenerator
- name = "Machine Design (Biogenerator Board)"
- desc = "The circuit board for a biogenerator."
- id = "biogenerator"
- req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3)
+/datum/design/teleport_station
+ name = "Machine Design (Teleportation Station Board)"
+ desc = "The circuit board for a teleportation station."
+ id = "tele_station"
+ req_tech = list("programming" = 4, "bluespace" = 4, "engineering" = 4)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/biogenerator
+ build_path = /obj/item/weapon/circuitboard/teleporter_station
+ category = list ("Teleportation Machinery")
-datum/design/hydroponics
- name = "Machine Design (Hydroponics Tray Board)"
- desc = "The circuit board for a hydroponics tray."
- id = "hydro_tray"
- req_tech = list("programming" = 1, "biotech" = 1)
+/datum/design/teleport_hub
+ name = "Machine Design (Teleportation Hub Board)"
+ desc = "The circuit board for a teleportation hub."
+ id = "tele_hub"
+ req_tech = list("programming" = 3, "bluespace" = 5, "materials" = 4, "engineering" = 5)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/hydroponics
+ build_path = /obj/item/weapon/circuitboard/teleporter_hub
+ category = list ("Teleportation Machinery")
-datum/design/microwave
- name = "Machine Design (Microwave Board)"
- desc = "The circuit board for a microwave."
- id = "microwave"
- req_tech = list("programming" = 1)
+/datum/design/telepad
+ name = "Machine Design (Telepad Board)"
+ desc = "The circuit board for a telescience telepad."
+ id = "telepad"
+ req_tech = list("programming" = 4, "bluespace" = 4, "materials" = 3, "engineering" = 3)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/microwave
+ build_path = /obj/item/weapon/circuitboard/telesci_pad
+ category = list ("Teleportation Machinery")
-datum/design/chem_dispenser
+/datum/design/sleeper
+ name = "Machine Design (Sleeper Board)"
+ desc = "The circuit board for a sleeper."
+ id = "sleeper"
+ req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3, "engineering" = 3)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/sleeper
+ category = list ("Medical Machinery")
+
+/datum/design/cryotube
+ name = "Machine Design (Cryotube Board)"
+ desc = "The circuit board for a cryotube."
+ id = "cryotube"
+ req_tech = list("programming" = 4, "biotech" = 3, "engineering" = 4)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/cryo_tube
+ category = list ("Medical Machinery")
+
+/datum/design/chem_dispenser
name = "Machine Design (Portable Chem Dispenser Board)"
desc = "The circuit board for a portable chem dispenser."
id = "chem_dispenser"
@@ -127,8 +110,29 @@ datum/design/chem_dispenser
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/chem_dispenser
+ category = list ("Medical Machinery")
-datum/design/destructive_analyzer
+/datum/design/biogenerator
+ name = "Machine Design (Biogenerator Board)"
+ desc = "The circuit board for a biogenerator."
+ id = "biogenerator"
+ req_tech = list("programming" = 3, "biotech" = 2, "materials" = 3)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/biogenerator
+ category = list ("Hydroponics Machinery")
+
+/datum/design/hydroponics
+ name = "Machine Design (Hydroponics Tray Board)"
+ desc = "The circuit board for a hydroponics tray."
+ id = "hydro_tray"
+ req_tech = list("programming" = 1, "biotech" = 1)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/hydroponics
+ category = list ("Hydroponics Machinery")
+
+/datum/design/destructive_analyzer
name = "Machine Design (Destructive Analyzer Board)"
desc = "The circuit board for a destructive analyzer."
id = "destructive_analyzer"
@@ -136,8 +140,9 @@ datum/design/destructive_analyzer
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/destructive_analyzer
+ category = list("Research Machinery")
-datum/design/protolathe
+/datum/design/protolathe
name = "Machine Design (Protolathe Board)"
desc = "The circuit board for a protolathe."
id = "protolathe"
@@ -145,8 +150,9 @@ datum/design/protolathe
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/protolathe
+ category = list("Research Machinery")
-datum/design/circuit_imprinter
+/datum/design/circuit_imprinter
name = "Machine Design (Circuit Imprinter Board)"
desc = "The circuit board for a circuit imprinter."
id = "circuit_imprinter"
@@ -154,17 +160,9 @@ datum/design/circuit_imprinter
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/circuit_imprinter
+ category = list("Research Machinery")
-datum/design/autolathe
- name = "Machine Design (Autolathe Board)"
- desc = "The circuit board for an autolathe."
- id = "autolathe"
- req_tech = list("programming" = 2, "engineering" = 2)
- build_type = IMPRINTER
- materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/autolathe
-
-datum/design/rdservercontrol
+/datum/design/rdservercontrol
name = "Computer Design (R&D Server Control Console Board)"
desc = "The circuit board for an R&D Server Control Console."
id = "rdservercontrol"
@@ -172,8 +170,9 @@ datum/design/rdservercontrol
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/rdservercontrol
+ category = list("Research Machinery")
-datum/design/rdserver
+/datum/design/rdserver
name = "Machine Design (R&D Server Board)"
desc = "The circuit board for an R&D Server."
id = "rdserver"
@@ -181,8 +180,9 @@ datum/design/rdserver
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/rdserver
+ category = list("Research Machinery")
-datum/design/mechfab
+/datum/design/mechfab
name = "Machine Design (Exosuit Fabricator Board)"
desc = "The circuit board for an Exosuit Fabricator."
id = "mechfab"
@@ -190,8 +190,9 @@ datum/design/mechfab
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mechfab
+ category = list("Research Machinery")
-datum/design/cyborgrecharger
+/datum/design/cyborgrecharger
name = "Machine Design (Cyborg Recharger Board)"
desc = "The circuit board for a Cyborg Recharger."
id = "cyborgrecharger"
@@ -199,8 +200,9 @@ datum/design/cyborgrecharger
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/cyborgrecharger
+ category = list("Research Machinery")
-datum/design/mech_recharger
+/datum/design/mech_recharger
name = "Machine Design (Mechbay Recharger Board)"
desc = "The circuit board for a Mechbay Recharger."
id = "mech_recharger"
@@ -208,8 +210,29 @@ datum/design/mech_recharger
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mech_recharger
+ category = list("Research Machinery")
-datum/design/vendor
+/datum/design/microwave
+ name = "Machine Design (Microwave Board)"
+ desc = "The circuit board for a microwave."
+ id = "microwave"
+ req_tech = list("programming" = 1)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/microwave
+ category = list ("Misc. Machinery")
+
+/datum/design/autolathe
+ name = "Machine Design (Autolathe Board)"
+ desc = "The circuit board for an autolathe."
+ id = "autolathe"
+ req_tech = list("programming" = 2, "engineering" = 2)
+ build_type = IMPRINTER
+ materials = list("$glass" = 1000, "sacid" = 20)
+ build_path = /obj/item/weapon/circuitboard/autolathe
+ category = list ("Misc. Machinery")
+
+/datum/design/vendor
name = "Machine Design (Vendor Board)"
desc = "The circuit board for a Vendor."
id = "vendor"
@@ -217,8 +240,9 @@ datum/design/vendor
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/vendor
+ category = list ("Misc. Machinery")
-datum/design/ore_redemption
+/datum/design/ore_redemption
name = "Machine Design (Ore Redemption Board)"
desc = "The circuit board for an Ore Redemption machine."
id = "ore_redemption"
@@ -226,13 +250,15 @@ datum/design/ore_redemption
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/ore_redemption
+ category = list ("Misc. Machinery")
-datum/design/mining_equipment_vendor
+/datum/design/mining_equipment_vendor
name = "Machine Design (Mining Rewards Vender Board)"
desc = "The circuit board for a Mining Rewards Vender."
id = "mining_equipment_vendor"
req_tech = list("programming" = 1, "engineering" = 2)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/mining_equipment_vendor
\ No newline at end of file
+ build_path = /obj/item/weapon/circuitboard/mining_equipment_vendor
+ category = list ("Misc. Machinery")
\ No newline at end of file
diff --git a/code/modules/research/designs/mecha_designs.dm b/code/modules/research/designs/mecha_designs.dm
index 08d65a3a975..479c91de938 100644
--- a/code/modules/research/designs/mecha_designs.dm
+++ b/code/modules/research/designs/mecha_designs.dm
@@ -10,6 +10,7 @@ datum/design/ripley_main
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/ripley/main
+ category = list("Exosuit Modules")
datum/design/ripley_peri
name = "Exosuit Module (APLU \"Ripley\" Peripherals Control module)"
@@ -19,6 +20,7 @@ datum/design/ripley_peri
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/ripley/peripherals
+ category = list("Exosuit Modules")
datum/design/odysseus_main
name = "Exosuit Module (\"Odysseus\" Central Control module)"
@@ -28,6 +30,7 @@ datum/design/odysseus_main
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/odysseus/main
+ category = list("Exosuit Modules")
datum/design/odysseus_peri
name = "Exosuit Module (\"Odysseus\" Peripherals Control module)"
@@ -37,6 +40,7 @@ datum/design/odysseus_peri
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/odysseus/peripherals
+ category = list("Exosuit Modules")
datum/design/gygax_main
name = "Exosuit Module (\"Gygax\" Central Control module)"
@@ -46,6 +50,7 @@ datum/design/gygax_main
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/gygax/main
+ category = list("Exosuit Modules")
datum/design/gygax_peri
name = "Exosuit Module (\"Gygax\" Peripherals Control module)"
@@ -55,6 +60,7 @@ datum/design/gygax_peri
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/gygax/peripherals
+ category = list("Exosuit Modules")
datum/design/gygax_targ
name = "Exosuit Module (\"Gygax\" Weapons & Targeting Control module)"
@@ -64,6 +70,7 @@ datum/design/gygax_targ
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/gygax/targeting
+ category = list("Exosuit Modules")
datum/design/durand_main
name = "Exosuit Module (\"Durand\" Central Control module)"
@@ -73,6 +80,7 @@ datum/design/durand_main
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/durand/main
+ category = list("Exosuit Modules")
datum/design/durand_peri
name = "Exosuit Module (\"Durand\" Peripherals Control module)"
@@ -82,6 +90,7 @@ datum/design/durand_peri
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/durand/peripherals
+ category = list("Exosuit Modules")
datum/design/durand_targ
name = "Exosuit Module (\"Durand\" Weapons & Targeting Control module)"
@@ -91,6 +100,7 @@ datum/design/durand_targ
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/durand/targeting
+ category = list("Exosuit Modules")
datum/design/honker_main
name = "Exosuit Module (\"H.O.N.K\" Central Control module)"
@@ -100,6 +110,7 @@ datum/design/honker_main
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/honker/main
+ category = list("Exosuit Modules")
datum/design/honker_peri
name = "Exosuit Module (\"H.O.N.K\" Peripherals Control module)"
@@ -109,6 +120,7 @@ datum/design/honker_peri
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/honker/peripherals
+ category = list("Exosuit Modules")
datum/design/honker_targ
name = "Exosuit Module (\"H.O.N.K\" Weapons & Targeting Control module)"
@@ -118,6 +130,7 @@ datum/design/honker_targ
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/honker/targeting
+ category = list("Exosuit Modules")
datum/design/phazon_main
name = "Exosuit Module (\"Phazon\" Central Control module)"
@@ -127,6 +140,7 @@ datum/design/phazon_main
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/phazon/main
+ category = list("Exosuit Modules")
datum/design/phazon_peri
name = "Exosuit Module (\"Phazon\" Peripherals Control module)"
@@ -136,6 +150,7 @@ datum/design/phazon_peri
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/phazon/peripherals
+ category = list("Exosuit Modules")
datum/design/phazon_targ
name = "Exosuit Module (\"Phazon\" Weapons & Targeting Control module)"
@@ -145,6 +160,7 @@ datum/design/phazon_targ
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/mecha/phazon/targeting
+ category = list("Exosuit Modules")
////////////////////////////////////////
/////////// Mecha Equpment /////////////
@@ -346,4 +362,4 @@ datum/design/mech_generator_nuclear
build_path = /obj/item/mecha_parts/mecha_equipment/generator/nuclear
materials = list("$metal"=10000,"$glass"=1000,"$silver"=500)
construction_time = 100
- category = list("Exosuit Equipment")
\ No newline at end of file
+ category = list("Exosuit Equipment")
diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm
index 6e5143a5e07..013841c43c9 100644
--- a/code/modules/research/designs/medical_designs.dm
+++ b/code/modules/research/designs/medical_designs.dm
@@ -11,6 +11,7 @@ datum/design/mass_spectrometer
materials = list("$metal" = 30, "$glass" = 20)
reliability = 76
build_path = /obj/item/device/mass_spectrometer
+ category = list("Medical Designs")
datum/design/adv_mass_spectrometer
name = "Advanced Mass-Spectrometer"
@@ -21,6 +22,7 @@ datum/design/adv_mass_spectrometer
materials = list("$metal" = 30, "$glass" = 20)
reliability = 74
build_path = /obj/item/device/mass_spectrometer/adv
+ category = list("Medical Designs")
datum/design/mmi
name = "Man-Machine Interface"
@@ -32,7 +34,7 @@ datum/design/mmi
construction_time = 75
reliability = 76
build_path = /obj/item/device/mmi
- category = list("Misc")
+ category = list("Misc","Medical Designs")
datum/design/mmi_radio
name = "Radio-enabled Man-Machine Interface"
@@ -44,7 +46,7 @@ datum/design/mmi_radio
construction_time = 75
reliability = 74
build_path = /obj/item/device/mmi/radio_enabled
- category = list("Misc")
+ category = list("Misc","Medical Designs")
datum/design/synthetic_flash
name = "Flash"
@@ -67,7 +69,7 @@ datum/design/bluespacebeaker
materials = list("$metal" = 3000, "$plasma" = 3000, "$diamond" = 500)
reliability = 76
build_path = /obj/item/weapon/reagent_containers/glass/beaker/bluespace
- category = list("Misc")
+ category = list("Misc","Medical Designs")
datum/design/noreactbeaker
name = "Cryostasis Beaker"
@@ -78,7 +80,7 @@ datum/design/noreactbeaker
materials = list("$metal" = 3000)
reliability = 76
build_path = /obj/item/weapon/reagent_containers/glass/beaker/noreact
- category = list("Misc")
+ category = list("Medical Designs")
datum/design/bluespacebodybag
name = "Bluespace body bag"
@@ -89,7 +91,7 @@ datum/design/bluespacebodybag
materials = list("$metal" = 3000, "$plasma" = 2000, "$diamond" = 500)
reliability = 76
build_path = /obj/item/bodybag/bluespace
- category = list("Misc")
+ category = list("Medical Designs")
datum/design/defib
name = "Defibrillator"
@@ -100,4 +102,4 @@ datum/design/defib
materials = list("$metal" = 5000, "$glass" = 2000, "$silver" = 1000)
reliability = 76
build_path = /obj/item/weapon/defibrillator
- category = list("Misc")
\ No newline at end of file
+ category = list("Medical Designs")
diff --git a/code/modules/research/designs/power_designs.dm b/code/modules/research/designs/power_designs.dm
index 7e83426acfc..73cb40dc456 100644
--- a/code/modules/research/designs/power_designs.dm
+++ b/code/modules/research/designs/power_designs.dm
@@ -9,9 +9,9 @@ datum/design/basic_cell
req_tech = list("powerstorage" = 1)
build_type = PROTOLATHE | AUTOLATHE |MECHFAB
materials = list("$metal" = 700, "$glass" = 50)
- build_path = /obj/item/weapon/stock_parts/cell
construction_time=100
- category = list("Misc")
+ build_path = /obj/item/weapon/stock_parts/cell
+ category = list("Misc","Power Designs")
datum/design/high_cell
name = "High-Capacity Power Cell"
@@ -22,7 +22,7 @@ datum/design/high_cell
materials = list("$metal" = 700, "$glass" = 60)
construction_time=100
build_path = /obj/item/weapon/stock_parts/cell/high
- category = list("Misc")
+ category = list("Misc","Power Designs")
datum/design/super_cell
name = "Super-Capacity Power Cell"
@@ -34,7 +34,7 @@ datum/design/super_cell
materials = list("$metal" = 700, "$glass" = 70)
construction_time=100
build_path = /obj/item/weapon/stock_parts/cell/super
- category = list("Misc")
+ category = list("Misc","Power Designs")
datum/design/hyper_cell
name = "Hyper-Capacity Power Cell"
@@ -46,7 +46,7 @@ datum/design/hyper_cell
materials = list("$metal" = 400, "$gold" = 150, "$silver" = 150, "$glass" = 80)
construction_time=100
build_path = /obj/item/weapon/stock_parts/cell/hyper
- category = list("Misc")
+ category = list("Misc","Power Designs")
datum/design/light_replacer
name = "Light Replacer"
@@ -56,6 +56,7 @@ datum/design/light_replacer
build_type = PROTOLATHE
materials = list("$metal" = 1500, "$silver" = 150, "$glass" = 3000)
build_path = /obj/item/device/lightreplacer
+ category = list("Power Designs")
datum/design/pacman
name = "Machine Design (PACMAN-type Generator Board)"
@@ -85,4 +86,4 @@ datum/design/mrspacman
build_type = IMPRINTER
reliability = 74
materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/pacman/mrs
\ No newline at end of file
+ build_path = /obj/item/weapon/circuitboard/pacman/mrs
diff --git a/code/modules/research/designs/stock_parts_designs.dm b/code/modules/research/designs/stock_parts_designs.dm
index 1268e86079a..638ef2d97ab 100644
--- a/code/modules/research/designs/stock_parts_designs.dm
+++ b/code/modules/research/designs/stock_parts_designs.dm
@@ -2,7 +2,7 @@
/////////////Stock Parts////////////////
////////////////////////////////////////
-datum/design/RPED
+/datum/design/RPED
name = "Rapid Part Exchange Device"
desc = "Special mechanical module made to store, sort, and apply standard machine parts."
id = "rped"
@@ -11,8 +11,10 @@ datum/design/RPED
build_type = PROTOLATHE
materials = list("$metal" = 15000, "$glass" = 5000) //hardcore
build_path = /obj/item/weapon/storage/part_replacer
+ category = list("Stock Parts")
-datum/design/basic_capacitor
+//Capacitors
+/datum/design/basic_capacitor
name = "Basic Capacitor"
desc = "A stock part used in the construction of various devices."
id = "basic_capacitor"
@@ -20,44 +22,9 @@ datum/design/basic_capacitor
build_type = PROTOLATHE | AUTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/weapon/stock_parts/capacitor
+ category = list("Stock Parts")
-datum/design/basic_scanning
- name = "Basic Scanning Module"
- desc = "A stock part used in the construction of various devices."
- id = "basic_scanning"
- req_tech = list("magnets" = 1)
- build_type = PROTOLATHE | AUTOLATHE
- materials = list("$metal" = 50, "$glass" = 20)
- build_path = /obj/item/weapon/stock_parts/scanning_module
-
-datum/design/micro_mani
- name = "Micro Manipulator"
- desc = "A stock part used in the construction of various devices."
- id = "micro_mani"
- req_tech = list("materials" = 1, "programming" = 1)
- build_type = PROTOLATHE | AUTOLATHE
- materials = list("$metal" = 30)
- build_path = /obj/item/weapon/stock_parts/manipulator
-
-datum/design/basic_micro_laser
- name = "Basic Micro-Laser"
- desc = "A stock part used in the construction of various devices."
- id = "basic_micro_laser"
- req_tech = list("magnets" = 1)
- build_type = PROTOLATHE | AUTOLATHE
- materials = list("$metal" = 10, "$glass" = 20)
- build_path = /obj/item/weapon/stock_parts/micro_laser
-
-datum/design/basic_matter_bin
- name = "Basic Matter Bin"
- desc = "A stock part used in the construction of various devices."
- id = "basic_matter_bin"
- req_tech = list("materials" = 1)
- build_type = PROTOLATHE | AUTOLATHE
- materials = list("$metal" = 80)
- build_path = /obj/item/weapon/stock_parts/matter_bin
-
-datum/design/adv_capacitor
+/datum/design/adv_capacitor
name = "Advanced Capacitor"
desc = "A stock part used in the construction of various devices."
id = "adv_capacitor"
@@ -65,8 +32,31 @@ datum/design/adv_capacitor
build_type = PROTOLATHE
materials = list("$metal" = 50, "$glass" = 50)
build_path = /obj/item/weapon/stock_parts/capacitor/adv
+ category = list("Stock Parts")
-datum/design/adv_scanning
+/datum/design/super_capacitor
+ name = "Super Capacitor"
+ desc = "A stock part used in the construction of various devices."
+ id = "super_capacitor"
+ req_tech = list("powerstorage" = 5, "materials" = 4)
+ build_type = PROTOLATHE
+ reliability = 71
+ materials = list("$metal" = 50, "$glass" = 50, "$gold" = 20)
+ build_path = /obj/item/weapon/stock_parts/capacitor/super
+ category = list("Stock Parts")
+
+//Scanning modules
+/datum/design/basic_scanning
+ name = "Basic Scanning Module"
+ desc = "A stock part used in the construction of various devices."
+ id = "basic_scanning"
+ req_tech = list("magnets" = 1)
+ build_type = PROTOLATHE | AUTOLATHE
+ materials = list("$metal" = 50, "$glass" = 20)
+ build_path = /obj/item/weapon/stock_parts/scanning_module
+ category = list("Stock Parts")
+
+/datum/design/adv_scanning
name = "Advanced Scanning Module"
desc = "A stock part used in the construction of various devices."
id = "adv_scanning"
@@ -74,8 +64,31 @@ datum/design/adv_scanning
build_type = PROTOLATHE
materials = list("$metal" = 50, "$glass" = 20)
build_path = /obj/item/weapon/stock_parts/scanning_module/adv
+ category = list("Stock Parts")
-datum/design/nano_mani
+/datum/design/phasic_scanning
+ name = "Phasic Scanning Module"
+ desc = "A stock part used in the construction of various devices."
+ id = "phasic_scanning"
+ req_tech = list("magnets" = 5, "materials" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 50, "$glass" = 20, "$silver" = 10)
+ reliability = 72
+ build_path = /obj/item/weapon/stock_parts/scanning_module/phasic
+ category = list("Stock Parts")
+
+//Maipulators
+/datum/design/micro_mani
+ name = "Micro Manipulator"
+ desc = "A stock part used in the construction of various devices."
+ id = "micro_mani"
+ req_tech = list("materials" = 1, "programming" = 1)
+ build_type = PROTOLATHE | AUTOLATHE
+ materials = list("$metal" = 30)
+ build_path = /obj/item/weapon/stock_parts/manipulator
+ category = list("Stock Parts")
+
+/datum/design/nano_mani
name = "Nano Manipulator"
desc = "A stock part used in the construction of various devices."
id = "nano_mani"
@@ -83,6 +96,29 @@ datum/design/nano_mani
build_type = PROTOLATHE
materials = list("$metal" = 30)
build_path = /obj/item/weapon/stock_parts/manipulator/nano
+ category = list("Stock Parts")
+
+/datum/design/pico_mani
+ name = "Pico Manipulator"
+ desc = "A stock part used in the construction of various devices."
+ id = "pico_mani"
+ req_tech = list("materials" = 5, "programming" = 2)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 30)
+ reliability = 73
+ build_path = /obj/item/weapon/stock_parts/manipulator/pico
+ category = list("Stock Parts")
+
+//Micro-lasers
+/datum/design/basic_micro_laser
+ name = "Basic Micro-Laser"
+ desc = "A stock part used in the construction of various devices."
+ id = "basic_micro_laser"
+ req_tech = list("magnets" = 1)
+ build_type = PROTOLATHE | AUTOLATHE
+ materials = list("$metal" = 10, "$glass" = 20)
+ build_path = /obj/item/weapon/stock_parts/micro_laser
+ category = list("Stock Parts")
datum/design/high_micro_laser
name = "High-Power Micro-Laser"
@@ -92,45 +128,7 @@ datum/design/high_micro_laser
build_type = PROTOLATHE
materials = list("$metal" = 10, "$glass" = 20)
build_path = /obj/item/weapon/stock_parts/micro_laser/high
-
-datum/design/adv_matter_bin
- name = "Advanced Matter Bin"
- desc = "A stock part used in the construction of various devices."
- id = "adv_matter_bin"
- req_tech = list("materials" = 3)
- build_type = PROTOLATHE
- materials = list("$metal" = 80)
- build_path = /obj/item/weapon/stock_parts/matter_bin/adv
-
-datum/design/super_capacitor
- name = "Super Capacitor"
- desc = "A stock part used in the construction of various devices."
- id = "super_capacitor"
- req_tech = list("powerstorage" = 5, "materials" = 4)
- build_type = PROTOLATHE
- reliability = 71
- materials = list("$metal" = 50, "$glass" = 50, "$gold" = 20)
- build_path = /obj/item/weapon/stock_parts/capacitor/super
-
-datum/design/phasic_scanning
- name = "Phasic Scanning Module"
- desc = "A stock part used in the construction of various devices."
- id = "phasic_scanning"
- req_tech = list("magnets" = 5, "materials" = 3)
- build_type = PROTOLATHE
- materials = list("$metal" = 50, "$glass" = 20, "$silver" = 10)
- reliability = 72
- build_path = /obj/item/weapon/stock_parts/scanning_module/phasic
-
-datum/design/pico_mani
- name = "Pico Manipulator"
- desc = "A stock part used in the construction of various devices."
- id = "pico_mani"
- req_tech = list("materials" = 5, "programming" = 2)
- build_type = PROTOLATHE
- materials = list("$metal" = 30)
- reliability = 73
- build_path = /obj/item/weapon/stock_parts/manipulator/pico
+ category = list("Stock Parts")
datum/design/ultra_micro_laser
name = "Ultra-High-Power Micro-Laser"
@@ -141,6 +139,27 @@ datum/design/ultra_micro_laser
materials = list("$metal" = 10, "$glass" = 20, "$uranium" = 10)
reliability = 70
build_path = /obj/item/weapon/stock_parts/micro_laser/ultra
+ category = list("Stock Parts")
+
+datum/design/basic_matter_bin
+ name = "Basic Matter Bin"
+ desc = "A stock part used in the construction of various devices."
+ id = "basic_matter_bin"
+ req_tech = list("materials" = 1)
+ build_type = PROTOLATHE | AUTOLATHE
+ materials = list("$metal" = 80)
+ build_path = /obj/item/weapon/stock_parts/matter_bin
+ category = list("Stock Parts")
+
+datum/design/adv_matter_bin
+ name = "Advanced Matter Bin"
+ desc = "A stock part used in the construction of various devices."
+ id = "adv_matter_bin"
+ req_tech = list("materials" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 80)
+ build_path = /obj/item/weapon/stock_parts/matter_bin/adv
+ category = list("Stock Parts")
datum/design/super_matter_bin
name = "Super Matter Bin"
@@ -151,7 +170,9 @@ datum/design/super_matter_bin
materials = list("$metal" = 80)
reliability = 75
build_path = /obj/item/weapon/stock_parts/matter_bin/super
+ category = list("Stock Parts")
+//T-Comms devices
datum/design/subspace_ansible
name = "Subspace Ansible"
desc = "A compact module capable of sensing extradimensional activity."
@@ -160,6 +181,7 @@ datum/design/subspace_ansible
build_type = PROTOLATHE
materials = list("$metal" = 80, "$silver" = 20)
build_path = /obj/item/weapon/stock_parts/subspace/ansible
+ category = list("Stock Parts")
datum/design/hyperwave_filter
name = "Hyperwave Filter"
@@ -169,6 +191,7 @@ datum/design/hyperwave_filter
build_type = PROTOLATHE
materials = list("$metal" = 40, "$silver" = 10)
build_path = /obj/item/weapon/stock_parts/subspace/filter
+ category = list("Stock Parts")
datum/design/subspace_amplifier
name = "Subspace Amplifier"
@@ -178,6 +201,7 @@ datum/design/subspace_amplifier
build_type = PROTOLATHE
materials = list("$metal" = 10, "$gold" = 30, "$uranium" = 15)
build_path = /obj/item/weapon/stock_parts/subspace/amplifier
+ category = list("Stock Parts")
datum/design/subspace_treatment
name = "Subspace Treatment Disk"
@@ -187,6 +211,7 @@ datum/design/subspace_treatment
build_type = PROTOLATHE
materials = list("$metal" = 10, "$silver" = 20)
build_path = /obj/item/weapon/stock_parts/subspace/treatment
+ category = list("Stock Parts")
datum/design/subspace_analyzer
name = "Subspace Analyzer"
@@ -196,6 +221,7 @@ datum/design/subspace_analyzer
build_type = PROTOLATHE
materials = list("$metal" = 10, "$gold" = 15)
build_path = /obj/item/weapon/stock_parts/subspace/analyzer
+ category = list("Stock Parts")
datum/design/subspace_crystal
name = "Ansible Crystal"
@@ -205,6 +231,7 @@ datum/design/subspace_crystal
build_type = PROTOLATHE
materials = list("$glass" = 1000, "$silver" = 20, "$gold" = 20)
build_path = /obj/item/weapon/stock_parts/subspace/crystal
+ category = list("Stock Parts")
datum/design/subspace_transmitter
name = "Subspace Transmitter"
@@ -213,4 +240,5 @@ datum/design/subspace_transmitter
req_tech = list("magnets" = 3, "materials" = 3, "bluespace" = 2)
build_type = PROTOLATHE
materials = list("$glass" = 100, "$silver" = 10, "$uranium" = 15)
- build_path = /obj/item/weapon/stock_parts/subspace/transmitter
\ No newline at end of file
+ build_path = /obj/item/weapon/stock_parts/subspace/transmitter
+ category = list("Stock Parts")
\ No newline at end of file
diff --git a/code/modules/research/designs/telecomms_designs.dm b/code/modules/research/designs/telecomms_designs.dm
index e4de22f4fdd..d43f9c6cdde 100644
--- a/code/modules/research/designs/telecomms_designs.dm
+++ b/code/modules/research/designs/telecomms_designs.dm
@@ -2,7 +2,7 @@
/////Subspace Telecomms////////////
///////////////////////////////////
-datum/design/subspace_receiver
+/datum/design/subspace_receiver
name = "Machine Design (Subspace Receiver)"
desc = "Allows for the construction of Subspace Receiver equipment."
id = "s-receiver"
@@ -10,8 +10,9 @@ datum/design/subspace_receiver
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telecomms/receiver
+ category = list("Subspace Telecomms")
-datum/design/telecomms_bus
+/datum/design/telecomms_bus
name = "Machine Design (Bus Mainframe)"
desc = "Allows for the construction of Telecommunications Bus Mainframes."
id = "s-bus"
@@ -19,8 +20,9 @@ datum/design/telecomms_bus
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telecomms/bus
+ category = list("Subspace Telecomms")
-datum/design/telecomms_hub
+/datum/design/telecomms_hub
name = "Machine Design (Hub Mainframe)"
desc = "Allows for the construction of Telecommunications Hub Mainframes."
id = "s-hub"
@@ -28,8 +30,9 @@ datum/design/telecomms_hub
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telecomms/hub
+ category = list("Subspace Telecomms")
-datum/design/telecomms_relay
+/datum/design/telecomms_relay
name = "Machine Design (Relay Mainframe)"
desc = "Allows for the construction of Telecommunications Relay Mainframes."
id = "s-relay"
@@ -37,8 +40,9 @@ datum/design/telecomms_relay
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telecomms/relay
+ category = list("Subspace Telecomms")
-datum/design/telecomms_processor
+/datum/design/telecomms_processor
name = "Machine Design (Processor Unit)"
desc = "Allows for the construction of Telecommunications Processor equipment."
id = "s-processor"
@@ -46,8 +50,9 @@ datum/design/telecomms_processor
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telecomms/processor
+ category = list("Subspace Telecomms")
-datum/design/telecomms_server
+/datum/design/telecomms_server
name = "Machine Design (Server Mainframe)"
desc = "Allows for the construction of Telecommunications Servers."
id = "s-server"
@@ -55,12 +60,14 @@ datum/design/telecomms_server
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
build_path = /obj/item/weapon/circuitboard/telecomms/server
+ category = list("Subspace Telecomms")
-datum/design/subspace_broadcaster
+/datum/design/subspace_broadcaster
name = "Machine Design (Subspace Broadcaster)"
desc = "Allows for the construction of Subspace Broadcasting equipment."
id = "s-broadcaster"
req_tech = list("programming" = 2, "engineering" = 2, "bluespace" = 1)
build_type = IMPRINTER
materials = list("$glass" = 1000, "sacid" = 20)
- build_path = /obj/item/weapon/circuitboard/telecomms/broadcaster
\ No newline at end of file
+ build_path = /obj/item/weapon/circuitboard/telecomms/broadcaster
+ category = list("Subspace Telecomms")
\ No newline at end of file
diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm
index 71830875577..fa35c34bacf 100644
--- a/code/modules/research/designs/weapon_designs.dm
+++ b/code/modules/research/designs/weapon_designs.dm
@@ -2,7 +2,7 @@
/////////////////Weapons/////////////////
/////////////////////////////////////////
-datum/design/nuclear_gun
+/datum/design/nuclear_gun
name = "Advanced Energy Gun"
desc = "An energy gun with an experimental miniaturized reactor."
id = "nuclear_gun"
@@ -12,8 +12,9 @@ datum/design/nuclear_gun
reliability = 76
build_path = /obj/item/weapon/gun/energy/gun/nuclear
locked = 1
+ category = list("Weapons")
-datum/design/stunrevolver
+/datum/design/stunrevolver
name = "Stun Revolver"
desc = "A high-tech revolver that fires internal, reusable stun cartidges in a revolving cylinder. The stun cartridges can be recharged using a conventional energy weapon recharger."
id = "stunrevolver"
@@ -22,8 +23,9 @@ datum/design/stunrevolver
materials = list("$metal" = 4000)
build_path = /obj/item/weapon/gun/energy/stunrevolver
locked = 1
+ category = list("Weapons")
-datum/design/tele_shield
+/datum/design/tele_shield
name = "Telescopic Riot Shield"
desc = "An advanced riot shield made of lightweight materials that collapses for easy storage."
id = "tele_shield"
@@ -32,8 +34,9 @@ datum/design/tele_shield
materials = list("$metal" = 4000, "$glass" = 5000, "$silver" = 300)
build_path = /obj/item/weapon/shield/riot/tele
locked = 1
+ category = list("Weapons")
-datum/design/lasercannon
+/datum/design/lasercannon
name = "Laser Cannon"
desc = "A heavy duty laser cannon."
id = "lasercannon"
@@ -42,8 +45,9 @@ datum/design/lasercannon
materials = list("$metal" = 10000, "$glass" = 2000, "$diamond" = 2000)
build_path = /obj/item/weapon/gun/energy/lasercannon
locked = 1
+ category = list("Weapons")
-datum/design/decloner
+/datum/design/decloner
name = "Decloner"
desc = "Your opponent will bubble into a messy pile of goop."
id = "decloner"
@@ -52,18 +56,9 @@ datum/design/decloner
materials = list("$gold" = 5000,"$uranium" = 10000, "mutagen" = 40)
build_path = /obj/item/weapon/gun/energy/decloner
locked = 1
-/*
-datum/design/chemsprayer
- name = "Chem Sprayer"
- desc = "An advanced chem spraying device."
- id = "chemsprayer"
- req_tech = list("combat" = 3, "materials" = 3, "engineering" = 3, "biotech" = 2)
- build_type = PROTOLATHE
- materials = list("$metal" = 5000, "$glass" = 1000)
- reliability = 100
- build_path = /obj/item/weapon/chemsprayer"
-*/
-datum/design/rapidsyringe
+ category = list("Weapons")
+
+/datum/design/rapidsyringe
name = "Rapid Syringe Gun"
desc = "A gun that fires many syringes."
id = "rapidsyringe"
@@ -71,8 +66,9 @@ datum/design/rapidsyringe
build_type = PROTOLATHE
materials = list("$metal" = 5000, "$glass" = 1000)
build_path = /obj/item/weapon/gun/syringe/rapidsyringe
+ category = list("Weapons")
-datum/design/largecrossbow
+/datum/design/largecrossbow
name = "Energy Crossbow"
desc = "A reverse-engineered energy crossbow favored by syndicate infiltration teams and carp hunters."
id = "largecrossbow"
@@ -81,8 +77,9 @@ datum/design/largecrossbow
materials = list("$metal" = 5000, "$glass" = 1500, "$uranium" = 1500, "$silver" = 1500)
build_path = /obj/item/weapon/gun/energy/crossbow/largecrossbow
locked = 1
+ category = list("Weapons")
-datum/design/temp_gun
+/datum/design/temp_gun
name = "Temperature Gun"
desc = "A gun that shoots temperature bullet energythings to change temperature."//Change it if you want
id = "temp_gun"
@@ -91,8 +88,9 @@ datum/design/temp_gun
materials = list("$metal" = 5000, "$glass" = 500, "$silver" = 3000)
build_path = /obj/item/weapon/gun/energy/temperature
locked = 1
+ category = list("Weapons")
-datum/design/flora_gun
+/datum/design/flora_gun
name = "Floral Somatoray"
desc = "A tool that discharges controlled radiation which induces mutation in plant cells. Harmless to other organic life."
id = "flora_gun"
@@ -100,8 +98,9 @@ datum/design/flora_gun
build_type = PROTOLATHE
materials = list("$metal" = 2000, "$glass" = 500, "radium" = 20)
build_path = /obj/item/weapon/gun/energy/floragun
+ category = list("Weapons")
-datum/design/large_grenade
+/datum/design/large_grenade
name = "Large Grenade"
desc = "A grenade that affects a larger area and use larger containers."
id = "large_Grenade"
@@ -110,8 +109,9 @@ datum/design/large_grenade
materials = list("$metal" = 3000)
reliability = 79
build_path = /obj/item/weapon/grenade/chem_grenade/large
+ category = list("Weapons")
-datum/design/smg
+/datum/design/smg
name = "Prototype Submachine Gun"
desc = "A prototype weapon made using lightweight materials on a traditional frame, designed to fire standard 9mm rounds."
id = "smg"
@@ -120,17 +120,9 @@ datum/design/smg
materials = list("$metal" = 8000, "$silver" = 2000, "$diamond" = 1000)
build_path = /obj/item/weapon/gun/projectile/automatic
locked = 1
+ category = list("Weapons")
-datum/design/mag_smg
- name = "Submachine Gun Magazine (9mm)"
- desc = "A 20-round magazine for the prototype submachine gun."
- id = "mag_smg"
- req_tech = list("combat" = 4, "materials" = 3)
- build_type = PROTOLATHE
- materials = list("$metal" = 2000)
- build_path = /obj/item/ammo_box/magazine/smgm9mm
-
-datum/design/xray
+/datum/design/xray
name = "Xray Laser Gun"
desc = "Not quite as menacing as it sounds"
id = "xray"
@@ -139,8 +131,9 @@ datum/design/xray
materials = list("$gold" = 5000,"$uranium" = 10000, "$metal" = 4000)
build_path = /obj/item/weapon/gun/energy/xray
locked = 1
+ category = list("Weapons")
-datum/design/ionrifle
+/datum/design/ionrifle
name = "Ion Rifle"
desc = "How to dismantle a cyborg : The gun."
id = "ionrifle"
@@ -149,8 +142,9 @@ datum/design/ionrifle
materials = list("$silver" = 4000, "$metal" = 6000, "$uranium" = 1000)
build_path = /obj/item/weapon/gun/energy/ionrifle
locked = 1
+ category = list("Weapons")
-datum/design/wormhole_projector
+/datum/design/wormhole_projector
name = "Bluespace Wormhole Projector"
desc = "A projector that emits high density quantum-coupled bluespace beams."
id = "wormholeprojector"
@@ -159,8 +153,9 @@ datum/design/wormhole_projector
materials = list("$silver" = 1000, "$metal" = 5000, "$diamond" = 3000)
build_path = /obj/item/weapon/gun/energy/wormhole_projector
locked = 1
+ category = list("Weapons")
-datum/design/reciever
+/datum/design/reciever
name = "Modular Reciever"
desc = "A prototype modular reciever and trigger assembly for a variety of firearms."
id = "reciever"
@@ -168,8 +163,19 @@ datum/design/reciever
build_type = PROTOLATHE
materials = list("$metal" = 6500, "$silver" = 500)
build_path = /obj/item/weaponcrafting/reciever
+ category = list("Weapons")
-datum/design/stunshell
+/datum/design/mag_smg
+ name = "Submachine Gun Magazine (9mm)"
+ desc = "A 20-round magazine for the prototype submachine gun."
+ id = "mag_smg"
+ req_tech = list("combat" = 4, "materials" = 3)
+ build_type = PROTOLATHE
+ materials = list("$metal" = 2000)
+ build_path = /obj/item/ammo_box/magazine/smgm9mm
+ category = list("Ammo")
+
+/datum/design/stunshell
name = "Stun Shell"
desc = "A stunning shell for a shotgun."
id = "stunshell"
@@ -177,8 +183,9 @@ datum/design/stunshell
build_type = PROTOLATHE
materials = list("$metal" = 200)
build_path = /obj/item/ammo_casing/shotgun/stunslug
+ category = list("Ammo")
-datum/design/techshell
+/datum/design/techshell
name = "Unloaded Technological Shotshell"
desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects."
id = "techshotshell"
@@ -186,12 +193,14 @@ datum/design/techshell
build_type = PROTOLATHE
materials = list("$metal" = 1000, "$glass" = 200, "$silver" = 300)
build_path = /obj/item/ammo_casing/shotgun/techshell
+ category = list("Ammo")
-datum/design/suppressor
+/datum/design/suppressor
name = "Universal Suppressor"
desc = "A reverse-engineered universal suppressor that fits on most small arms with threaded barrels."
id = "suppressor"
req_tech = list("combat" = 6, "engineering" = 5, "syndicate" = 3)
build_type = PROTOLATHE
materials = list("$metal" = 2000, "$silver" = 500)
- build_path = /obj/item/weapon/suppressor
\ No newline at end of file
+ build_path = /obj/item/weapon/suppressor
+ category = list("Weapons")
diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm
index d4affb8af14..771d53cd16e 100644
--- a/code/modules/research/protolathe.dm
+++ b/code/modules/research/protolathe.dm
@@ -25,6 +25,14 @@ Note: Must be placed west/left of and R&D console to function.
var/adamantine_amount = 0.0
var/efficiency_coeff
+ var/list/categories = list(
+ "Power Designs",
+ "Stock Parts",
+ "Medical Designs",
+ "Weapons",
+ "Ammo",
+ )
+
reagents = new()
diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm
index 124bbf8599c..7c695ffe718 100644
--- a/code/modules/research/rdconsole.dm
+++ b/code/modules/research/rdconsole.dm
@@ -49,6 +49,8 @@ won't update every console in existence) but it's more of a hassle to do. Also,
req_access = list(access_tox) //Data and setting manipulation requires scientist access.
+ var/selected_category
+
/obj/machinery/computer/rdconsole/proc/CallTechName(var/ID) //A simple helper proc to find the name of a tech with a given ID.
var/datum/tech/check_tech
@@ -179,6 +181,9 @@ won't update every console in existence) but it's more of a hassle to do. Also,
var/temp_screen = text2num(href_list["menu"])
screen = temp_screen
+ if(href_list["category"])
+ selected_category = href_list["category"]
+
else if(href_list["updt_tech"]) //Update the research holder with information from the technology disk.
screen = 0.0
spawn(50)
@@ -413,7 +418,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
else
new_item.loc = linked_lathe.loc
linked_lathe.busy = 0
- screen = 3.1
+ screen = 3.15
updateUsrDialog()
else if(href_list["imprint"]) //Causes the Circuit Imprinter to build something.
@@ -778,31 +783,42 @@ won't update every console in existence) but it's more of a hassle to do. Also,
dat += "Protolathe Menu:
"
dat += "Material Amount: [linked_lathe.TotalMaterials()] / [linked_lathe.max_material_storage]
"
dat += "Chemical Volume: [linked_lathe.reagents.total_volume] / [linked_lathe.reagents.maximum_volume]
"
+
+ dat += list_categories(linked_lathe.categories, 3.15)
+
+ //Grouping designs by categories, to improve readability
+ if(3.15)
+ dat += "Main Menu"
+ dat += "Protolathe Menu"
+ dat += "Browsing [selected_category]:
"
+ dat += "
Material Amount: [linked_lathe.TotalMaterials()] / [linked_lathe.max_material_storage]
"
+ dat += "
Chemical Volume: [linked_lathe.reagents.total_volume] / [linked_lathe.reagents.maximum_volume]
"
+
var/coeff = linked_lathe.efficiency_coeff
for(var/datum/design/D in files.known_designs)
- if(!(D.build_type & PROTOLATHE))
+ if(!(selected_category in D.category)|| !(D.build_type & PROTOLATHE))
continue
- var/temp_dat = "[D.name]"
var/temp_material
var/c = 50
var/t
for(var/M in D.materials)
t = linked_lathe.check_mat(D, M)
+ temp_material += " | "
if (!t)
- temp_material += "
[D.materials[M]/coeff] [CallMaterialName(M)]"
+ temp_material += "
[D.materials[M]/coeff] [CallMaterialName(M)]"
else
temp_material += " [D.materials[M]/coeff] [CallMaterialName(M)]"
c = min(c,t)
if (c)
- dat += "*
[temp_dat]"
+ dat += "
[D.name]"
if(c >= 5.0)
dat += "
x5"
if(c >= 10.0)
dat += "
x10"
dat += "[temp_material]"
else
- dat += "*
[temp_dat][temp_material]"
+ dat += "
[D.name][temp_material]"
dat += "
"
dat += "
"
@@ -880,23 +896,33 @@ won't update every console in existence) but it's more of a hassle to do. Also,
dat += "Circuit Imprinter Menu:
"
dat += "Material Amount: [linked_imprinter.TotalMaterials()]
"
dat += "Chemical Volume: [linked_imprinter.reagents.total_volume]
"
+
+ dat += list_categories(linked_imprinter.categories, 4.15)
+
+ if(4.15)
+ dat += "Main Menu"
+ dat += "Circuit Imprinter Menu"
+ dat += "Browsing [selected_category]:
"
+ dat += "Material Amount: [linked_imprinter.TotalMaterials()]
"
+ dat += "Chemical Volume: [linked_imprinter.reagents.total_volume]
"
+
var/coeff = linked_imprinter.efficiency_coeff
for(var/datum/design/D in files.known_designs)
- if(!(D.build_type & IMPRINTER))
+ if(!(selected_category in D.category) || !(D.build_type & IMPRINTER))
continue
- var/temp_dat = "[D.name]"
var/temp_materials
var/check_materials = 1
for(var/M in D.materials)
+ temp_materials += " | "
if (!linked_imprinter.check_mat(D, M))
check_materials = 0
- temp_materials += "
[D.materials[M]/coeff] [CallMaterialName(M)]"
+ temp_materials += "
[D.materials[M]/coeff] [CallMaterialName(M)]"
else
temp_materials += " [D.materials[M]/coeff] [CallMaterialName(M)]"
if (check_materials)
- dat += "*
[temp_dat][temp_materials]
"
+ dat += "
[D.name][temp_materials]
"
else
- dat += "*
[temp_dat][temp_materials]
"
+ dat += "
[D.name][temp_materials]
"
dat += "
"
if(4.2)
@@ -931,11 +957,30 @@ won't update every console in existence) but it's more of a hassle to do. Also,
if(linked_imprinter.diamond_amount >= 2000) dat += "All"
dat += ""
- var/datum/browser/popup = new(user, "rndconsole", name, 420, 450)
+ var/datum/browser/popup = new(user, "rndconsole", name, 460, 550)
popup.set_content(dat)
popup.open()
return
+//helper proc, which return a table containing categories
+/obj/machinery/computer/rdconsole/proc/list_categories(var/list/categories, var/menu_num as num)
+ if(!categories)
+ return
+
+ var/line_length = 1
+ var/dat = ""
+
+ for(var/C in categories)
+ if(line_length > 2)
+ dat += "
"
+ line_length = 1
+
+ dat += "| [C] | "
+ line_length++
+
+ dat += "
"
+ return dat
+
/obj/machinery/computer/rdconsole/robotics
name = "Robotics R&D Console"
desc = "A console used to interface with R&D tools."
diff --git a/code/modules/research/research.dm b/code/modules/research/research.dm
index ef765b17f9e..6fa8bb0536a 100644
--- a/code/modules/research/research.dm
+++ b/code/modules/research/research.dm
@@ -159,6 +159,26 @@ research holder datum.
if(I.crit_fail)
D.reliability = min(100, D.reliability + rand(3, 5))
+/datum/research/proc/FindDesignByID(var/id)
+ for(var/datum/design/D in known_designs)
+ if(D.id == id)
+ return D
+
+
+//Autolathe files
+/datum/research/autolathe/New()
+ for(var/T in (typesof(/datum/tech) - /datum/tech))
+ possible_tech += new T(src)
+ for(var/path in typesof(/datum/design) - /datum/design)
+ var/datum/design/D = new path(src)
+ possible_designs += D
+ if((D.build_type & AUTOLATHE) && ("initial" in D.category)) //autolathe starts without hacked designs
+ AddDesign2Known(D)
+
+/datum/research/autolathe/AddDesign2Known(var/datum/design/D)
+ if(!(D.build_type & AUTOLATHE))
+ return
+ ..()
/***************************************************************
** Technology Datums **
diff --git a/config/admins.txt b/config/admins.txt
index 188e10fe49b..4e9a6da27d5 100644
--- a/config/admins.txt
+++ b/config/admins.txt
@@ -71,4 +71,6 @@ xxnoob = Game Master
tkdrg = Game Master
Cuboos = Game Master
thunder12345 = Game Master
+wjohnston = Game Master
+mandurrh = Game Master
thurgatar = Game Master
diff --git a/config/game_options.txt b/config/game_options.txt
index 7f469d35001..00fad47a4de 100644
--- a/config/game_options.txt
+++ b/config/game_options.txt
@@ -27,6 +27,10 @@ REVIVAL_BRAIN_LIFE -1
#Comment this out if you want OOC to be automatically disabled during the round, it will be enabled during the lobby and after the round end results.
OOC_DURING_ROUND
+### EMOJI ###
+#Comment this out if you want to disable emojis
+EMOJIS
+
### MOB MOVEMENT ###
## We suggest editing these variables ingame to find a good speed for your server.
diff --git a/html/changelog.html b/html/changelog.html
index c0dafcb126f..092b4c9d99f 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -55,6 +55,28 @@
-->
+
+
27 December 2014
+
Dorsidwarf updated:
+
+ - Buffs the RCD from 30 matter units to max capacity 100, and increases the value of matter charges.
+
+
Paprika updated:
+
+ - Taser electrodes now have a limited range of 7 tiles.
+ - The energy gun's stun mode has been replaced with a disable mode.
+ - Security officers will now spawn with tasers.
+ - Disabler beams now go through windows and grilles.
+ - Disabler beams now do 33 stamina damage instead of 34. This means they will only stun in 3 hits on someone that is NOT 100% healthy.
+ - Most ballistic projectiles now do stamina damage in addition to their regular damage instead of stunning. This includes nuke op c-20r .45, detective's revolver, etc. They are effectively better than disablers at stunning people, as well as do significant damage, but they do not stun instantly like a taser. Expect engagements to be a little longer and plan ahead for this.
+ - Added an advanced taser for RnD, the child of a disabler and a taser.
+
+
Tkdrg updated:
+
+ - Envoys from the distant Viji sector have brought an exotic contraption to Centcomm. Known as the 'supermatter shard', it is a fragment of an ancient alien artifact, believed to have a dangerous and mysterious power. This precious item has been made available to the Space Station 13 cargo team for the cost of a hundred supply points, as a reward for all your hard work. Good luck, and stay safe.
+
+
+
16 December 2014
Paprika updated:
diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml
index 11d9482ac4a..c68eb21a486 100644
--- a/html/changelogs/.all_changelog.yml
+++ b/html/changelogs/.all_changelog.yml
@@ -2205,3 +2205,27 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
- tweak: The number of junk food in snack vending machine is lowered from 6 to 5
of each type.
- bugfix: Fixing not being able to load an omelette du fromage on a tray.
+2014-12-27:
+ Dorsidwarf:
+ - tweak: Buffs the RCD from 30 matter units to max capacity 100, and increases the
+ value of matter charges.
+ Paprika:
+ - experiment: Taser electrodes now have a limited range of 7 tiles.
+ - experiment: The energy gun's stun mode has been replaced with a disable mode.
+ - experiment: Security officers will now spawn with tasers.
+ - tweak: Disabler beams now go through windows and grilles.
+ - tweak: Disabler beams now do 33 stamina damage instead of 34. This means they
+ will only stun in 3 hits on someone that is NOT 100% healthy.
+ - tweak: Most ballistic projectiles now do stamina damage in addition to their regular
+ damage instead of stunning. This includes nuke op c-20r .45, detective's revolver,
+ etc. They are effectively better than disablers at stunning people, as well
+ as do significant damage, but they do not stun instantly like a taser. Expect
+ engagements to be a little longer and plan ahead for this.
+ - rscadd: Added an advanced taser for RnD, the child of a disabler and a taser.
+ Tkdrg:
+ - rscadd: Envoys from the distant Viji sector have brought an exotic contraption
+ to Centcomm. Known as the 'supermatter shard', it is a fragment of an ancient
+ alien artifact, believed to have a dangerous and mysterious power. This precious
+ item has been made available to the Space Station 13 cargo team for the cost
+ of a hundred supply points, as a reward for all your hard work. Good luck, and
+ stay safe.
diff --git a/html/changelogs/Dorsidwarf-RCDbuff-6242.yml.txt b/html/changelogs/Dorsidwarf-RCDbuff-6242.yml.txt
deleted file mode 100644
index 885ecc9ef6a..00000000000
--- a/html/changelogs/Dorsidwarf-RCDbuff-6242.yml.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-################################
-# Example Changelog File
-#
-# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
-#
-# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
-# When it is, any changes listed below will disappear.
-#
-# Valid Prefixes:
-# bugfix
-# wip (For works in progress)
-# tweak
-# soundadd
-# sounddel
-# rscdel (general adding of nice things)
-# rscadd (general deleting of nice things)
-# imageadd
-# imagedel
-# spellcheck (typo fixes)
-# experiment
-# tgs (TG-ported fixes?)
-#################################
-# Your name.
-author: Dorsidwarf
-# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
-delete-after: True
-# Any changes you've made. See valid prefix list above.
-# INDENT WITH TWO SPACES. NOT TABS. SPACES.
-# SCREW THIS UP AND IT WON'T WORK.
-# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit.
-# Please surround your changes in single (') or double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog.
-changes:
-- tweak: "Buffs the RCD from 30 matter units to max capacity 100, and increases the value of matter charges.
\ No newline at end of file
diff --git a/html/changelogs/JJRcop-OOCemoji.yml b/html/changelogs/JJRcop-OOCemoji.yml
new file mode 100644
index 00000000000..fa65b93fb7e
--- /dev/null
+++ b/html/changelogs/JJRcop-OOCemoji.yml
@@ -0,0 +1,4 @@
+author: JJRcop, Nienhaus
+delete-after: True
+changes:
+ - rscadd: "Adds emoji to OOC chat."
\ No newline at end of file
diff --git a/html/changelogs/Tkdrg-FUCKING_SUPERMATTER.yml b/html/changelogs/Tkdrg-FUCKING_SUPERMATTER.yml
deleted file mode 100644
index 8a39d30d075..00000000000
--- a/html/changelogs/Tkdrg-FUCKING_SUPERMATTER.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-author: Tkdrg
-delete-after: True
-
-changes:
- - rscadd: "Envoys from the distant Viji sector have brought an exotic contraption to Centcomm. Known as the 'supermatter shard', it is a fragment of an ancient alien artifact, believed to have a dangerous and mysterious power. This precious item has been made available to the Space Station 13 cargo team for the cost of a hundred supply points, as a reward for all your hard work. Good luck, and stay safe."
diff --git a/icons/emoji.dmi b/icons/emoji.dmi
new file mode 100644
index 00000000000..a78a7e3df79
Binary files /dev/null and b/icons/emoji.dmi differ
diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi
index 2b363ca9647..05e667d2553 100644
Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ
diff --git a/icons/mob/ears.dmi b/icons/mob/ears.dmi
index 8ff02f67652..fe9e2b691e7 100644
Binary files a/icons/mob/ears.dmi and b/icons/mob/ears.dmi differ
diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi
index 63275683038..b10bcfce92b 100644
Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ
diff --git a/icons/mob/items_lefthand.dmi b/icons/mob/items_lefthand.dmi
index 57009026e86..bb4f4121a2a 100644
Binary files a/icons/mob/items_lefthand.dmi and b/icons/mob/items_lefthand.dmi differ
diff --git a/icons/mob/items_righthand.dmi b/icons/mob/items_righthand.dmi
index 33af023bd79..32316ec15f2 100644
Binary files a/icons/mob/items_righthand.dmi and b/icons/mob/items_righthand.dmi differ
diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi
index 2e3699a733d..b6923194bb1 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ
diff --git a/icons/mob/ties.dmi b/icons/mob/ties.dmi
index 00b0ba43ba1..bab5533b140 100644
Binary files a/icons/mob/ties.dmi and b/icons/mob/ties.dmi differ
diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi
index 11f6989810f..30334b16415 100644
Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ
diff --git a/icons/obj/clothing/belts.dmi b/icons/obj/clothing/belts.dmi
index 6ac0661e122..605c08c4590 100644
Binary files a/icons/obj/clothing/belts.dmi and b/icons/obj/clothing/belts.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index 37c6e4af66d..24f9048fc45 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index de4a3f70959..30fd1979df8 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ
diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi
index 994cee57532..9cee4e8a3bb 100644
Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ
diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi
index e68aa0b2318..819d09b6313 100644
Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ
diff --git a/icons/obj/food.dmi b/icons/obj/food.dmi
index b54a3b38536..29b3bd9e767 100644
Binary files a/icons/obj/food.dmi and b/icons/obj/food.dmi differ
diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi
index 319de920834..e73f17598ab 100644
Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ
diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi
index 9107f227f89..ac7af348b0f 100644
Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ
diff --git a/icons/obj/pda.dmi b/icons/obj/pda.dmi
index cf23e987632..848647eae2d 100644
Binary files a/icons/obj/pda.dmi and b/icons/obj/pda.dmi differ
diff --git a/icons/obj/tank.dmi b/icons/obj/tank.dmi
index 91d42d5ec4e..01e5983da03 100644
Binary files a/icons/obj/tank.dmi and b/icons/obj/tank.dmi differ