diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index 3226e36270a..27b1306636a 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -20,7 +20,7 @@ "aat" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/turf/simulated/shuttle/wall/interior{tag = "icon-swall_f10"; icon_state = "swall_f10"},/area/shuttle/abandoned) "aau" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"; dir = 2},/area/shuttle/abandoned) "aav" = (/obj/item/scalpel,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/abandoned) -"aaw" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_n"; name = "north of station"; width = 18},/turf/space,/area/space) +"aaw" = (/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "aax" = (/turf/simulated/shuttle/plating,/area/shuttle/abandoned) "aay" = (/obj/structure/window/full/shuttle{dir = 10; icon_state = "9"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/abandoned) "aaz" = (/obj/structure/computerframe{anchored = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/abandoned) @@ -95,7 +95,7 @@ "abQ" = (/turf/simulated/shuttle/wall{dir = 4; icon_state = "wall3"},/area/shuttle/syndicate) "abR" = (/obj/structure/table,/obj/item/screwdriver,/obj/machinery/light,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/abandoned) "abS" = (/obj/structure/table,/obj/item/radio,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/abandoned) -"abT" = (/obj/structure/table,/obj/item/flashlight/lamp{pixel_x = 4; pixel_y = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) +"abT" = (/obj/machinery/computer/camera_advanced/shuttle_docker/vox,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "abU" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "abV" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "abW" = (/obj/structure/table,/obj/machinery/door_control{id = "syndieshutters"; name = "remote shutter control"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) @@ -229,7 +229,7 @@ "aeu" = (/obj/effect/decal/warning_stripes/north,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; name = "standard air scrubber"; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/range) "aev" = (/obj/effect/decal/warning_stripes/north,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/plasteel{icon_state = "red"; dir = 1},/area/security/range) "aew" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/armoury) -"aex" = (/obj/docking_port/stationary{dir = 2; dwidth = 2; height = 18; id = "skipjack_nw"; name = "northwest of SS13"; width = 19},/turf/space,/area/space) +"aex" = (/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/sit,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_sit) "aey" = (/turf/simulated/floor/plasteel{dir = 9; icon_state = "darkred"},/area/security/warden) "aez" = (/obj/effect/decal/warning_stripes/red/partial,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4; level = 1},/turf/simulated/floor/plasteel,/area/security/main) "aeA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel,/area/security/main) @@ -282,7 +282,7 @@ "afv" = (/obj/structure/closet/secure_closet/brigdoc,/turf/simulated/floor/plasteel{dir = 6; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/security/medbay) "afw" = (/obj/structure/bed/roller,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/security/medbay) "afx" = (/obj/structure/closet/wardrobe/red,/obj/machinery/light_switch{pixel_y = -25},/obj/item/clothing/suit/tracksuit/red,/turf/simulated/floor/plasteel{dir = 2; icon_state = "redcorner"},/area/security/main) -"afy" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_ne"; name = "northeast of station"; width = 18},/turf/space,/area/space) +"afy" = (/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/sst,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite) "afz" = (/obj/machinery/recharge_station/upgraded,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "afA" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) "afB" = (/obj/structure/table,/obj/machinery/cell_charger,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate) @@ -363,7 +363,7 @@ "agY" = (/obj/structure/chair/stool,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/plasteel{dir = 2; icon_state = "redfull"; tag = "icon-redfull (NORTHWEST)"},/area/security/main) "agZ" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/vox) "aha" = (/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) -"ahb" = (/obj/machinery/computer/station_alert,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) +"ahb" = (/obj/machinery/door/airlock/external{id_tag = "s_docking_airlock"; name = "Shuttle Hatch"; req_access_txt = "109"},/obj/structure/fans/tiny,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops) "ahc" = (/obj/machinery/computer/shuttle/vox,/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "ahd" = (/obj/structure/table,/obj/machinery/door_control{id = "voxshutters"; name = "remote shutter control"; req_access_txt = "152"},/turf/simulated/shuttle/floor4/vox,/area/shuttle/vox) "ahe" = (/obj/structure/chair/stool,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; name = "standard air scrubber"; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "redfull"; tag = "icon-redfull (NORTHWEST)"},/area/security/main) @@ -1358,7 +1358,7 @@ "aAf" = (/turf/simulated/wall,/area/maintenance/abandonedbar) "aAg" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/abandonedbar) "aAh" = (/obj/structure/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite) -"aAi" = (/obj/structure/table,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_sit) +"aAi" = (/obj/machinery/computer/camera_advanced/shuttle_docker/ert,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops) "aAj" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/siberia) "aAk" = (/obj/structure/shuttle/engine/propulsion,/turf/space,/area/shuttle/siberia) "aAl" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "solar_tool_outer"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/solar/auxport) @@ -2118,7 +2118,7 @@ "aOL" = (/turf/simulated/floor/plating,/area/maintenance/electrical) "aOM" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/electrical) "aON" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/pod_1) -"aOO" = (/obj/structure/mirror{icon_state = "mirror_broke"; pixel_y = 28},/obj/machinery/iv_drip,/turf/simulated/floor/plating,/area/maintenance/fpmaint2) +"aOO" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/pod_1) "aOP" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "aOQ" = (/turf/simulated/floor/plating,/area/hallway/secondary/entry) "aOR" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/hallway/secondary/entry) @@ -2171,14 +2171,14 @@ "aPM" = (/obj/machinery/cryopod/right,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreencorner"},/area/crew_quarters/sleep) "aPN" = (/obj/machinery/cryopod,/obj/machinery/light{dir = 1},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreencorner"},/area/crew_quarters/sleep) "aPO" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall,/area/maintenance/electrical) -"aPP" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/pod_1) +"aPP" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/pod_2) "aPQ" = (/obj/effect/decal/warning_stripes/north,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/entry) "aPR" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry) "aPS" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "north bump Engineering"; pixel_x = 0; pixel_y = 24; shock_proof = 1},/turf/simulated/floor/plating,/area/maintenance/electrical) "aPT" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry) -"aPU" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/pod_2) +"aPU" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/pod_2) "aPV" = (/obj/structure/chair{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/trade/sol) -"aPW" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/pod_2) +"aPW" = (/obj/structure/mirror{icon_state = "mirror_broke"; pixel_y = 28},/obj/machinery/iv_drip,/obj/item/reagent_containers/iv_bag/salglu,/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "aPX" = (/obj/machinery/optable,/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "aPY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "arrival"},/area/hallway/secondary/entry) "aPZ" = (/obj/machinery/door/airlock/external{name = "Escape Pod"},/turf/simulated/floor/plating,/area/hallway/secondary/entry) @@ -4098,7 +4098,7 @@ "bAP" = (/obj/machinery/status_display{pixel_y = -30},/obj/machinery/light/spot,/turf/simulated/shuttle/floor,/area/shuttle/escape) "bAQ" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "burst_l"},/turf/space,/area/shuttle/specops) "bAR" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/specops) -"bAS" = (/obj/machinery/door/airlock/external{id_tag = "s_docking_airlock"; name = "Shuttle Hatch"; req_access_txt = "109"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops) +"bAS" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/obj/structure/chair,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops) "bAT" = (/turf/space,/turf/simulated/shuttle/wall{dir = 1; icon_state = "diagonalWall3"},/area/shuttle/specops) "bAU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar) "bAV" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/wood,/area/crew_quarters/bar) @@ -4157,7 +4157,7 @@ "bBW" = (/obj/structure/noticeboard,/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/escape) "bBX" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"; dir = 2},/area/shuttle/escape) "bBY" = (/obj/machinery/door/airlock/medical/glass{id_tag = null; name = "Escape Shuttle Infirmary"; req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) -"bBZ" = (/obj/structure/chair,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops) +"bBZ" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/obj/structure/chair,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops) "bCa" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "propulsion"},/turf/space,/area/shuttle/specops) "bCb" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops) "bCc" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the Special Ops team."; name = "Spec Ops Monitor"; network = list("ERT"); pixel_y = 30},/obj/machinery/computer/shuttle/ert,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops) @@ -4166,10 +4166,10 @@ "bCf" = (/turf/simulated/wall,/area/maintenance/disposal) "bCg" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/maintenance/disposal) "bCh" = (/obj/effect/decal/cleanable/fungus,/turf/simulated/wall,/area/maintenance/disposal) -"bCi" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/obj/machinery/light/spot{tag = "icon-tube1 (NORTH)"; icon_state = "tube1"; dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops) +"bCi" = (/obj/machinery/door/airlock/external{id_tag = "s_docking_airlock"; name = "Shuttle Hatch"; req_access_txt = "109"},/obj/docking_port/mobile{dir = 8; dwidth = 2; height = 11; id = "specops"; name = "ert shuttle"; roundstart_move = "specops_away"; width = 5},/obj/docking_port/stationary{dir = 8; dwidth = 2; height = 11; id = "specops_home"; name = "port bay 2"; width = 5},/obj/structure/fans/tiny,/turf/simulated/shuttle/plating,/area/shuttle/specops) "bCj" = (/obj/effect/decal/cleanable/fungus,/turf/simulated/wall,/area/maintenance/port) "bCk" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port) -"bCl" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops) +"bCl" = (/obj/machinery/computer/security{network = list("SS13","Research Outpost","Mining Outpost")},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops) "bCm" = (/obj/machinery/door/airlock{name = "Unit 3"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet) "bCn" = (/obj/structure/window/reinforced{dir = 8},/obj/effect/decal/warning_stripes/west,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/crew_quarters/locker) "bCo" = (/obj/item/latexballon,/turf/simulated/floor/plating,/area/maintenance/port) @@ -4243,7 +4243,7 @@ "bDE" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/disposaloutlet{dir = 4},/obj/effect/decal/warning_stripes/east,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/disposal) "bDF" = (/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0; req_access_txt = "0"},/obj/structure/bed/roller,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape) "bDG" = (/obj/structure/chair{dir = 4},/obj/machinery/light/spot{tag = "icon-tube1 (WEST)"; icon_state = "tube1"; dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops) -"bDH" = (/obj/machinery/door/airlock/external{id_tag = "s_docking_airlock"; name = "Shuttle Hatch"; req_access_txt = "109"},/obj/docking_port/mobile{dir = 8; dwidth = 2; height = 11; id = "specops"; name = "ert shuttle"; roundstart_move = "specops_away"; width = 5},/obj/docking_port/stationary{dir = 8; dwidth = 2; height = 11; id = "specops_home"; name = "port bay 2"; width = 5},/turf/simulated/shuttle/plating,/area/shuttle/specops) +"bDH" = (/obj/structure/table/glass,/obj/item/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/storage/box/syringes,/obj/item/storage/box/iv_bags{pixel_x = 4; pixel_y = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellow"},/area/medical/chemistry) "bDI" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/stack/sheet/cardboard,/obj/item/stack/rods{amount = 50},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bDJ" = (/obj/machinery/conveyor/east{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) "bDK" = (/obj/structure/sign/securearea{name = "\improper STAY CLEAR HEAVY MACHINERY"; pixel_y = 32},/obj/machinery/recycler,/obj/machinery/conveyor/east{id = "garbage"},/turf/simulated/floor/plating,/area/maintenance/disposal) @@ -4767,7 +4767,7 @@ "bNI" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bNJ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics) "bNK" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/biostorage) -"bNL" = (/obj/structure/table/glass,/obj/item/storage/box/beakers{pixel_x = 2; pixel_y = 2},/obj/item/storage/box/syringes,/obj/item/storage/box/iv_bags{pixel_x = -2; pixel_y = -2},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteyellow"},/area/medical/chemistry) +"bNL" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/closet/secure_closet/medical1,/obj/machinery/ai_status_display{pixel_x = 32; pixel_y = 0; step_size = 0},/obj/item/storage/box/pillbottles,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/item/storage/box/iv_bags,/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/biostorage) "bNM" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/item/radio/intercom{broadcasting = 0; name = "station intercom (General)"; pixel_y = 25},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plasteel,/area/quartermaster/office) "bNN" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/radio/intercom{frequency = 1459; name = "station intercom (General)"; pixel_x = 28},/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics) "bNO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel,/area/quartermaster/office) @@ -5132,7 +5132,7 @@ "bUJ" = (/obj/structure/closet/wardrobe/genetics_white,/obj/machinery/camera{c_tag = "Medbay Genetics"; network = list("SS13")},/obj/structure/extinguisher_cabinet{pixel_x = 25; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitepurplecorner"},/area/medical/genetics) "bUK" = (/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) "bUL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/decal/warning_stripes/yellow/partial{icon_state = "3"; dir = 8},/obj/effect/decal/warning_stripes/arrow{icon_state = "4"; dir = 8},/turf/simulated/floor/plasteel,/area/hallway/primary/central/se) -"bUM" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/closet/secure_closet/medical1,/obj/machinery/ai_status_display{pixel_x = 32; pixel_y = 0; step_size = 0},/obj/item/storage/box/pillbottles,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/item/reagent_containers/iv_bag/salglu,/obj/item/storage/box/iv_bags,/turf/simulated/floor/plasteel{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/biostorage) +"bUM" = (/obj/structure/closet/crate/freezer,/obj/item/tank/emergency_oxygen/engi/empty,/obj/item/tank/emergency_oxygen/engi/empty,/obj/item/reagent_containers/iv_bag/blood/AMinus,/obj/item/reagent_containers/iv_bag/blood/APlus,/obj/item/reagent_containers/iv_bag/blood/BMinus,/obj/item/reagent_containers/iv_bag/blood/BPlus,/obj/item/reagent_containers/iv_bag/blood/OMinus,/obj/item/reagent_containers/iv_bag/blood/OPlus,/obj/item/reagent_containers/iv_bag/blood/random,/obj/item/reagent_containers/iv_bag/blood/random,/obj/item/reagent_containers/iv_bag/blood/random,/obj/machinery/iv_drip,/obj/machinery/ai_status_display{pixel_y = -32},/obj/item/reagent_containers/iv_bag/salglu,/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/sleeper) "bUN" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/assembly/chargebay) "bUO" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/camera{c_tag = "Research Hallway Entrance"; dir = 2; network = list("Research","SS13")},/obj/effect/decal/warning_stripes/yellow/hollow,/turf/simulated/floor/plasteel,/area/medical/research{name = "Research Division"}) "bUP" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/effect/decal/warning_stripes/yellow/hollow,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/medical/research{name = "Research Division"}) @@ -5281,11 +5281,11 @@ "bXC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel,/area/teleporter) "bXD" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/medical/sleeper) "bXE" = (/obj/item/roller,/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/sleeper) -"bXF" = (/obj/machinery/light_switch{pixel_x = -20; pixel_y = 0},/obj/machinery/sleeper{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/sleeper) +"bXF" = (/obj/machinery/light_switch{pixel_x = -21; pixel_y = 0},/obj/machinery/sleeper{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTHWEST)"; icon_state = "whiteblue"; dir = 9},/area/medical/sleeper) "bXG" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/sleeper) "bXH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/sleeper) "bXI" = (/obj/machinery/vending/medical,/turf/simulated/floor/plasteel{dir = 5; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/sleeper) -"bXJ" = (/obj/structure/table,/obj/item/reagent_containers/syringe/antiviral,/obj/item/reagent_containers/syringe/charcoal,/obj/item/reagent_containers/syringe/insulin,/obj/item/reagent_containers/glass/bottle/morphine,/obj/item/reagent_containers/glass/bottle/epinephrine,/obj/item/reagent_containers/syringe,/obj/item/stack/medical/bruise_pack/advanced{pixel_x = 6; pixel_y = 6},/obj/item/stack/medical/ointment/advanced{pixel_x = 6; pixel_y = 8},/obj/item/reagent_containers/food/pill/patch/styptic{pixel_y = 6},/obj/item/reagent_containers/food/pill/patch/styptic{pixel_x = 2; pixel_y = 8},/obj/item/reagent_containers/food/pill/patch/silver_sulf{pixel_x = -8; pixel_y = 6},/obj/item/reagent_containers/food/pill/patch/silver_sulf{pixel_x = -8; pixel_y = 8},/obj/item/storage/pill_bottle/painkillers{pixel_x = -6; pixel_y = -3},/obj/machinery/defibrillator_mount/loaded{pixel_y = 28},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/sleeper) +"bXJ" = (/obj/structure/table,/obj/item/reagent_containers/syringe/antiviral,/obj/item/reagent_containers/syringe/charcoal,/obj/item/reagent_containers/syringe/insulin,/obj/item/reagent_containers/glass/bottle/morphine,/obj/item/reagent_containers/glass/bottle/epinephrine,/obj/item/reagent_containers/syringe,/obj/item/stack/medical/bruise_pack/advanced{pixel_x = 6; pixel_y = 6},/obj/item/stack/medical/ointment/advanced{pixel_x = 6; pixel_y = 8},/obj/item/reagent_containers/food/pill/patch/styptic{pixel_y = 6},/obj/item/reagent_containers/food/pill/patch/styptic{pixel_x = 2; pixel_y = 8},/obj/item/reagent_containers/food/pill/patch/silver_sulf{pixel_x = -8; pixel_y = 6},/obj/item/reagent_containers/food/pill/patch/silver_sulf{pixel_x = -8; pixel_y = 8},/obj/item/storage/pill_bottle/painkillers{pixel_x = -6; pixel_y = -3},/obj/machinery/defibrillator_mount/loaded{pixel_y = 30},/turf/simulated/floor/plasteel{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/sleeper) "bXK" = (/obj/item/twohanded/required/kirbyplants,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/cryo) "bXL" = (/obj/structure/table/glass,/obj/item/reagent_containers/glass/beaker/cryoxadone{pixel_x = 7; pixel_y = 1},/obj/item/reagent_containers/glass/beaker/cryoxadone{pixel_x = -3; pixel_y = 1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/cryo) "bXM" = (/obj/machinery/atmospherics/unary/cryo_cell,/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/cryo) @@ -5330,7 +5330,7 @@ "bYz" = (/obj/machinery/ai_status_display{pixel_y = 32},/obj/machinery/computer/card/minor/rd,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) "bYA" = (/obj/structure/rack,/obj/item/aicard,/obj/effect/decal/warning_stripes/west,/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) "bYB" = (/obj/structure/lamarr,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor/plasteel{icon_state = "white"},/area/crew_quarters/hor) -"bYC" = (/obj/structure/table,/obj/item/roller,/obj/item/soap/nanotrasen,/obj/item/reagent_containers/iv_bag/salglu,/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/sleeper) +"bYC" = (/obj/structure/table,/obj/item/roller,/obj/item/soap/nanotrasen,/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/sleeper) "bYD" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; name = "standard air scrubber"; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel,/area/quartermaster/office) "bYE" = (/obj/machinery/camera{c_tag = "Cargo Bay South"; dir = 1},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable,/turf/simulated/floor/plasteel,/area/quartermaster/storage) "bYF" = (/obj/machinery/door/window/westleft{name = "Janitoral Delivery"; req_access_txt = "26"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/effect/decal/warning_stripes/yellow,/turf/simulated/floor/plasteel,/area/janitor) @@ -5510,7 +5510,7 @@ "cbX" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/genetics_cloning) "cbY" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical/glass{id_tag = "CloningDoor"; name = "Genetics Cloning"; req_access_txt = "0"; req_one_access_txt = "5;9"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/genetics_cloning) "cbZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/genetics_cloning) -"cca" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/iv_bag,/obj/item/reagent_containers/iv_bag,/obj/item/reagent_containers/iv_bag/blood/AMinus,/obj/item/reagent_containers/iv_bag/blood/APlus,/obj/item/reagent_containers/iv_bag/blood/BMinus,/obj/item/reagent_containers/iv_bag/blood/BPlus,/obj/item/reagent_containers/iv_bag/blood/OMinus,/obj/item/reagent_containers/iv_bag/blood/OPlus,/obj/item/reagent_containers/iv_bag/blood/random,/obj/item/reagent_containers/iv_bag/blood/random,/obj/item/reagent_containers/iv_bag/blood/random,/obj/machinery/iv_drip,/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/sleeper) +"cca" = (/obj/structure/closet/crate/freezer,/obj/item/tank/emergency_oxygen/engi/empty,/obj/item/tank/emergency_oxygen/engi/empty,/obj/item/reagent_containers/iv_bag/blood/AMinus,/obj/item/reagent_containers/iv_bag/blood/APlus,/obj/item/reagent_containers/iv_bag/blood/BMinus,/obj/item/reagent_containers/iv_bag/blood/BPlus,/obj/item/reagent_containers/iv_bag/blood/OMinus,/obj/item/reagent_containers/iv_bag/blood/OPlus,/obj/item/reagent_containers/iv_bag/blood/random,/obj/item/reagent_containers/iv_bag/blood/random,/obj/item/reagent_containers/iv_bag/blood/random,/obj/machinery/iv_drip,/obj/item/reagent_containers/iv_bag/salglu,/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/sleeper) "ccb" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/genetics_cloning) "ccc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/genetics_cloning) "ccd" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"},/area/medical/genetics_cloning) @@ -5520,7 +5520,7 @@ "cch" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "cci" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/research{name = "Research Division"}) "ccj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitehall"},/area/medical/research{name = "Research Division"}) -"cck" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/iv_bag,/obj/item/reagent_containers/iv_bag,/obj/item/reagent_containers/iv_bag/blood/AMinus,/obj/item/reagent_containers/iv_bag/blood/APlus,/obj/item/reagent_containers/iv_bag/blood/BMinus,/obj/item/reagent_containers/iv_bag/blood/BPlus,/obj/item/reagent_containers/iv_bag/blood/OMinus,/obj/item/reagent_containers/iv_bag/blood/OPlus,/obj/item/reagent_containers/iv_bag/blood/random,/obj/item/reagent_containers/iv_bag/blood/random,/obj/item/reagent_containers/iv_bag/blood/random,/obj/machinery/iv_drip,/obj/machinery/ai_status_display{pixel_y = -32},/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/sleeper) +"cck" = (/obj/structure/table/glass,/obj/item/hemostat{pixel_x = 6},/obj/item/retractor{pixel_x = -6; pixel_y = 6},/obj/item/stack/medical/bruise_pack/advanced,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/item/reagent_containers/iv_bag/salglu,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/surgery1) "ccl" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/hallway/primary/central/south) "ccm" = (/obj/machinery/door/airlock/public/glass{name = "Central Access"},/turf/simulated/floor/plasteel,/area/hallway/primary/central/se) "ccn" = (/obj/machinery/atm{pixel_y = 32},/turf/simulated/floor/plasteel,/area/hallway/primary/central/se) @@ -5694,14 +5694,14 @@ "cfz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/public/glass{name = "Central Access"},/turf/simulated/floor/plasteel,/area/hallway/primary/central/se) "cfA" = (/obj/structure/closet/secure_closet/medical3,/obj/machinery/door_control{id = "surgeryobs1"; name = "Privacy Shutters Control"; pixel_x = 0; pixel_y = 25},/turf/simulated/floor/plasteel{tag = "icon-whitebluecorner (WEST)"; icon_state = "whitebluecorner"; dir = 8},/area/medical/surgery1) "cfB" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel,/area/hallway/primary/central/se) -"cfC" = (/obj/structure/table/glass,/obj/item/hemostat{pixel_x = 6},/obj/item/retractor{pixel_x = -6; pixel_y = 6},/obj/item/stack/medical/bruise_pack/advanced,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/item/reagent_containers/iv_bag/salglu,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/surgery1) +"cfC" = (/obj/structure/table/glass,/obj/item/hemostat{pixel_x = 6},/obj/item/retractor{pixel_x = -6; pixel_y = 6},/obj/machinery/alarm{pixel_y = 25},/obj/item/stack/medical/bruise_pack/advanced,/obj/item/reagent_containers/iv_bag/salglu,/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/surgery2) "cfD" = (/obj/structure/chair{dir = 8},/obj/machinery/camera{c_tag = "Medbay Surgery Observation"; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 8; icon_state = "darkblue"},/area/medical/ward) "cfE" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "open"; id_tag = "surgeryobs1"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgery1) "cfF" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/ward) "cfG" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/ward) "cfH" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/shutters{density = 0; dir = 4; icon_state = "open"; id_tag = "surgeryobs2"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgery2) "cfI" = (/obj/structure/chair{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "darkblue"},/area/medical/ward) -"cfJ" = (/obj/structure/table/glass,/obj/item/hemostat{pixel_x = 6},/obj/item/retractor{pixel_x = -6; pixel_y = 6},/obj/machinery/alarm{pixel_y = 25},/obj/item/stack/medical/bruise_pack/advanced,/obj/item/reagent_containers/iv_bag/salglu,/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/surgery2) +"cfJ" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/iv_bag/blood/AMinus,/obj/item/reagent_containers/iv_bag/blood/APlus,/obj/item/reagent_containers/iv_bag/blood/BMinus,/obj/item/reagent_containers/iv_bag/blood/BPlus,/obj/item/reagent_containers/iv_bag/blood/OPlus,/obj/item/reagent_containers/iv_bag/blood/OMinus,/obj/structure/disposalpipe/segment,/obj/item/reagent_containers/iv_bag/salglu,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/medical/surgery2) "cfK" = (/obj/structure/closet/secure_closet/medical3,/obj/machinery/door_control{id = "surgeryobs2"; name = "Privacy Shutters Control"; pixel_x = 0; pixel_y = 25},/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitebluecorner"; tag = "icon-whitebluecorner"},/area/medical/surgery2) "cfL" = (/obj/structure/table/glass,/obj/item/circular_saw,/obj/item/bonesetter{pixel_x = 5; pixel_y = 5},/obj/item/surgicaldrill,/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/surgery2) "cfM" = (/obj/item/bonegel{pixel_x = 6; pixel_y = 6},/obj/item/cautery,/obj/item/FixOVein{pixel_x = -6; pixel_y = 6},/obj/machinery/light{dir = 1; in_use = 1},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/table/tray,/obj/item/scalpel,/turf/simulated/floor/plasteel{tag = "icon-whiteblue"; icon_state = "whiteblue"},/area/medical/surgery2) @@ -5790,7 +5790,7 @@ "chr" = (/turf/simulated/wall/r_wall,/area/medical/cmo) "chs" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "darkblue"},/area/medical/surgery2) "cht" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkblue"},/area/medical/surgery2) -"chu" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/iv_bag/blood/AMinus,/obj/item/reagent_containers/iv_bag/blood/APlus,/obj/item/reagent_containers/iv_bag/blood/BMinus,/obj/item/reagent_containers/iv_bag/blood/BPlus,/obj/item/reagent_containers/iv_bag/blood/OPlus,/obj/item/reagent_containers/iv_bag/blood/OMinus,/obj/structure/disposalpipe/segment,/obj/item/reagent_containers/iv_bag/salglu,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/medical/surgery2) +"chu" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/iv_bag/blood/AMinus,/obj/item/reagent_containers/iv_bag/blood/APlus,/obj/item/reagent_containers/iv_bag/blood/BMinus,/obj/item/reagent_containers/iv_bag/blood/BPlus,/obj/item/reagent_containers/iv_bag/blood/OPlus,/obj/item/reagent_containers/iv_bag/blood/OMinus,/obj/item/reagent_containers/iv_bag/salglu,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/medical/surgery1) "chv" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/toxins/server) "chw" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; name = "standard air scrubber"; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/toxins/server) "chx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{tag = "icon-whitebluecorner (WEST)"; icon_state = "whitebluecorner"; dir = 8},/area/medical/medbay2) @@ -6069,7 +6069,7 @@ "cmK" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel{icon_state = "bcarpet05"},/area/blueshield) "cmL" = (/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/medical/surgery1) "cmM" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/ntrep) -"cmN" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/iv_bag/blood/AMinus,/obj/item/reagent_containers/iv_bag/blood/APlus,/obj/item/reagent_containers/iv_bag/blood/BMinus,/obj/item/reagent_containers/iv_bag/blood/BPlus,/obj/item/reagent_containers/iv_bag/blood/OPlus,/obj/item/reagent_containers/iv_bag/blood/OMinus,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/medical/surgery1) +"cmN" = (/obj/structure/table,/obj/item/storage/box/cups,/obj/item/storage/box/syringes{pixel_y = 5},/obj/item/reagent_containers/syringe/antiviral,/obj/effect/decal/warning_stripes/southeastcorner,/obj/item/reagent_containers/spray/cleaner,/obj/item/reagent_containers/iv_bag/salglu,/turf/simulated/floor/plasteel{tag = "icon-whitegreen (SOUTHWEST)"; icon_state = "whitegreen"; dir = 10},/area/medical/virology/lab{name = "\improper Virology Lobby"}) "cmO" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel,/area/hallway/primary/aft) "cmP" = (/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/obj/effect/decal/warning_stripes/yellow,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/toxins/storage) "cmQ" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft) @@ -6211,7 +6211,7 @@ "cpw" = (/obj/structure/table,/obj/item/storage/box/gloves{pixel_x = 3; pixel_y = 3},/obj/item/storage/box/masks,/obj/item/reagent_containers/spray/cleaner{desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; name = "Surgery Cleaner"},/obj/machinery/camera{c_tag = "Medbay Surgery West Storage"; dir = 1; network = list("SS13"); pixel_x = 0},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/medical/surgery1) "cpx" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/medical/surgery1) "cpy" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "open"; id_tag = "viroshutters"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/virology) -"cpz" = (/obj/structure/table,/obj/item/storage/box/cups,/obj/item/storage/box/syringes{pixel_y = 5},/obj/item/reagent_containers/syringe/antiviral,/obj/effect/decal/warning_stripes/southeastcorner,/obj/item/reagent_containers/spray/cleaner,/turf/simulated/floor/plasteel{tag = "icon-whitegreen (SOUTHWEST)"; icon_state = "whitegreen"; dir = 10},/area/medical/virology/lab{name = "\improper Virology Lobby"}) +"cpz" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "cpA" = (/obj/effect/decal/warning_stripes/southwestcorner,/obj/machinery/light_switch{pixel_x = 27},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 12; pixel_y = 0},/turf/simulated/floor/plasteel{tag = "icon-whitegreen (SOUTHEAST)"; icon_state = "whitegreen"; dir = 6},/area/medical/virology/lab{name = "\improper Virology Lobby"}) "cpB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology/lab{name = "\improper Virology Lobby"}) "cpC" = (/turf/simulated/wall,/area/medical/virology/lab{name = "\improper Virology Lobby"}) @@ -6701,7 +6701,7 @@ "cyS" = (/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access_txt = "12;24"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/asmaint) "cyT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "cyU" = (/obj/item/twohanded/required/kirbyplants,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/machinery/light,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) -"cyV" = (/obj/structure/closet/crate/freezer,/obj/item/reagent_containers/iv_bag,/obj/item/reagent_containers/iv_bag,/obj/item/reagent_containers/iv_bag/blood/AMinus,/obj/item/reagent_containers/iv_bag/blood/APlus,/obj/item/reagent_containers/iv_bag/blood/BMinus,/obj/item/reagent_containers/iv_bag/blood/BPlus,/obj/item/reagent_containers/iv_bag/blood/OMinus,/obj/item/reagent_containers/iv_bag/blood/OPlus,/obj/item/reagent_containers/iv_bag/blood/random,/obj/item/reagent_containers/iv_bag/blood/random,/obj/item/reagent_containers/iv_bag/blood/random,/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = -32; step_size = 0},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{tag = "icon-whitegreen (SOUTHWEST)"; icon_state = "whitegreen"; dir = 10},/area/medical/virology) +"cyV" = (/obj/structure/closet/crate/freezer,/obj/item/tank/emergency_oxygen/engi/empty,/obj/item/tank/emergency_oxygen/engi/empty,/obj/item/reagent_containers/iv_bag/blood/AMinus,/obj/item/reagent_containers/iv_bag/blood/APlus,/obj/item/reagent_containers/iv_bag/blood/BMinus,/obj/item/reagent_containers/iv_bag/blood/BPlus,/obj/item/reagent_containers/iv_bag/blood/OMinus,/obj/item/reagent_containers/iv_bag/blood/OPlus,/obj/item/reagent_containers/iv_bag/blood/random,/obj/item/reagent_containers/iv_bag/blood/random,/obj/item/reagent_containers/iv_bag/blood/random,/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = -32; step_size = 0},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{tag = "icon-whitegreen (SOUTHWEST)"; icon_state = "whitegreen"; dir = 10},/area/medical/virology) "cyW" = (/obj/structure/table,/obj/machinery/kitchen_machine/microwave{pixel_x = -3; pixel_y = 6},/obj/item/storage/secure/safe{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plasteel{tag = "icon-whitegreen (SOUTHEAST)"; icon_state = "whitegreen"; dir = 6},/area/medical/virology) "cyX" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor/plasteel{dir = 2; icon_state = "whitegreen"; tag = "icon-whitehall (WEST)"},/area/medical/virology) "cyY" = (/obj/structure/table,/turf/simulated/floor/plasteel{tag = "icon-whitegreen (SOUTHWEST)"; icon_state = "whitegreen"; dir = 10},/area/medical/virology) @@ -7409,7 +7409,7 @@ "cMy" = (/obj/effect/decal/cleanable/blood/oil,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) "cMz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/assembly/assembly_line) "cMA" = (/obj/effect/spawner/random_spawners/blood_maybe,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint) -"cMB" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) +"cMB" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "cMC" = (/obj/effect/landmark{name = "blobstart"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) "cMD" = (/obj/item/mounted/frame/apc_frame,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/assembly/assembly_line) "cME" = (/obj/machinery/hologram/holopad,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) @@ -7464,7 +7464,7 @@ "cNB" = (/turf/simulated/floor/plating,/area/maintenance/aft) "cNC" = (/obj/structure/closet,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/aft) "cND" = (/obj/structure/table,/turf/simulated/floor/plating,/area/maintenance/aft) -"cNE" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) +"cNE" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 10; level = 2},/turf/simulated/floor/plating/airless/catwalk,/area/space) "cNF" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/solar{id = "portsolar"; name = "Port Solar Array"},/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/port) "cNG" = (/turf/simulated/floor/plating,/area/assembly/assembly_line) "cNH" = (/obj/item/pen,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) @@ -7560,19 +7560,19 @@ "cPt" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/camera{c_tag = "Xenobiology Module North-East"; dir = 8; network = list("Research","SS13"); pixel_y = -22},/obj/item/radio/intercom{dir = 1; name = "station intercom (General)"; pixel_x = 28; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cPu" = (/obj/structure/chair,/turf/simulated/floor/plating,/area/maintenance/aft) "cPv" = (/obj/structure/table,/obj/item/radio/intercom{dir = 1; name = "station intercom (General)"; pixel_y = -28},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/assembly/assembly_line) -"cPw" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 10; level = 2},/turf/simulated/floor/plating/airless/catwalk,/area/space) -"cPx" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating/airless/catwalk,/area/space) +"cPw" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/turf/simulated/floor/plating/airless/catwalk,/area/space) +"cPx" = (/turf/space,/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "cPy" = (/obj/structure/table/reinforced,/obj/item/paper_bin,/obj/item/pen,/obj/structure/cable,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/turf/simulated/floor/engine,/area/toxins/test_chamber) "cPz" = (/obj/structure/table/reinforced,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/item/clipboard,/obj/item/hand_labeler,/turf/simulated/floor/engine,/area/toxins/test_chamber) "cPA" = (/obj/structure/table/reinforced,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/item/clothing/mask/gas,/obj/machinery/atmospherics/pipe/simple/hidden/purple,/turf/simulated/floor/engine,/area/toxins/test_chamber) "cPB" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 8},/turf/simulated/floor/plasteel,/area/atmos/distribution) -"cPC" = (/turf/space,/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) +"cPC" = (/turf/space,/obj/machinery/power/tracker,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "cPD" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{level = 2},/turf/simulated/floor/plasteel,/area/atmos/distribution) "cPE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/binary/valve/digital{color = ""; dir = 4; name = "Gas Mix Outlet Valve"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plasteel,/area/atmos/distribution) "cPF" = (/obj/structure/table,/obj/item/stack/sheet/mineral/plasma{pixel_x = -2; pixel_y = -2},/obj/item/stack/sheet/mineral/plasma,/obj/item/stack/sheet/mineral/plasma{pixel_x = 2; pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) -"cPG" = (/turf/space,/obj/machinery/power/tracker,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) -"cPH" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) -"cPI" = (/turf/space,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) +"cPG" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) +"cPH" = (/turf/space,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) +"cPI" = (/turf/space,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "cPJ" = (/obj/structure/table,/obj/item/storage/box/monkeycubes,/obj/item/storage/box/monkeycubes,/obj/item/book/manual/sop_science,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cPK" = (/obj/structure/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cPL" = (/obj/machinery/vending/coffee,/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/aft) @@ -7590,7 +7590,7 @@ "cPX" = (/obj/machinery/camera{c_tag = "Engineering SMES"; dir = 8; network = list("SS13"); pixel_x = 0; pixel_y = 0},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/effect/decal/warning_stripes/north,/turf/simulated/floor/plasteel,/area/engine/engineering) "cPY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/computer/camera_advanced/xenobio,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cPZ" = (/obj/effect/spawner/window/reinforced,/turf/simulated/floor/plating,/area/atmos/distribution) -"cQa" = (/turf/space,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) +"cQa" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "robotics_solar_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "13"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "cQb" = (/obj/machinery/particle_accelerator/control_box,/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/engine/engineering) "cQc" = (/obj/machinery/light/small{dir = 1},/obj/structure/closet/firecloset,/obj/effect/decal/warning_stripes/northeast,/turf/simulated/floor/plasteel,/area/engine/engineering) "cQd" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/machinery/pipedispenser,/turf/simulated/floor/plasteel,/area/atmos) @@ -7606,7 +7606,7 @@ "cQn" = (/turf/simulated/wall,/area/medical/virology) "cQo" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6; level = 2},/turf/simulated/floor/plasteel,/area/atmos/distribution) "cQp" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4; level = 2},/turf/space,/area/space) -"cQq" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "robotics_solar_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "13"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) +"cQq" = (/turf/space,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "cQr" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cQs" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cQt" = (/obj/structure/table/reinforced,/obj/item/circular_saw{pixel_y = 0},/obj/item/scalpel,/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) @@ -7646,7 +7646,7 @@ "cRb" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Singularity"; name = "Singularity Blast Doors"; opacity = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engine/engineering) "cRc" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "atmos"; name = "Atmos Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 10; initialize_directions = 10; level = 2},/turf/simulated/floor/plating,/area/atmos/distribution) "cRd" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; level = 2},/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Mix to Gas Turbine"},/turf/simulated/floor/plasteel,/area/atmos/distribution) -"cRe" = (/turf/space,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) +"cRe" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "cRf" = (/obj/machinery/door/poddoor{density = 0; icon_state = "open"; id_tag = "Singularity"; name = "Singularity Blast Doors"; opacity = 0},/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 32; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engine/engineering) "cRg" = (/obj/machinery/atmospherics/unary/portables_connector,/obj/machinery/portable_atmospherics/canister/air,/obj/effect/decal/warning_stripes/south,/turf/simulated/floor/plasteel,/area/engine/engineering) "cRh" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "engineering_east_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "10;13"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engine/engineering) @@ -7704,7 +7704,7 @@ "cSh" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; name = "standard air scrubber"; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology) "cSi" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "engineering_west_pump"; tag_exterior_door = "engineering_west_outer"; frequency = 1379; id_tag = "engineering_west_airlock"; tag_interior_door = "engineering_west_inner"; pixel_x = 25; req_access_txt = "10;13"; tag_chamber_sensor = "engineering_west_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "engineering_west_sensor"; pixel_x = 25; pixel_y = 12},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/engine/engineering) "cSj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/aft) -"cSk" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) +"cSk" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) "cSl" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/plasteel,/area/engine/engineering) "cSm" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 1; level = 2},/turf/simulated/floor/plasteel,/area/atmos/distribution) "cSn" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/obj/structure/grille,/obj/machinery/meter,/turf/simulated/wall/r_wall,/area/atmos) @@ -7789,7 +7789,7 @@ "cTO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/table,/obj/item/t_scanner,/obj/item/radio/headset/headset_eng,/obj/item/multitool{pixel_x = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage) "cTP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage) "cTQ" = (/obj/effect/spawner/random_spawners/blood_maybe,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/asmaint) -"cTR" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/port) +"cTR" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1450; master_tag = "south_maint"; name = "exterior access button"; pixel_x = -25; pixel_y = 8; req_access_txt = "13"},/turf/simulated/floor/plating/airless/catwalk,/area/space) "cTS" = (/obj/effect/landmark/burnturf,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "cTT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/table,/obj/item/clothing/gloves/color/black,/obj/item/clothing/gloves/color/black,/obj/item/clothing/gloves/color/black,/obj/item/crowbar/large,/obj/item/storage/box/lights/mixed,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plasteel,/area/engine/equipmentstorage) "cTU" = (/obj/effect/landmark/damageturf,/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -8031,7 +8031,7 @@ "cYw" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) "cYx" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/hallway/secondary/exit) "cYy" = (/obj/machinery/atmospherics/pipe/manifold4w/visible,/obj/machinery/meter,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) -"cYz" = (/obj/docking_port/stationary{dir = 2; dwidth = 2; height = 18; id = "skipjack_se"; name = "southeast of SS13"; width = 19},/turf/space,/area/space) +"cYz" = (/turf/space,/obj/machinery/access_button/airlock_exterior{master_tag = "atmospherics_south"; pixel_x = -25; pixel_y = -8},/turf/simulated/floor/plating/airless/catwalk,/area/space) "cYA" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cYB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/maintenance/engi_shuttle) "cYC" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor{id_tag = "Secure Storage"; name = "Secure Storage Blast Doors"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/storage/secure) @@ -8292,11 +8292,11 @@ "ddx" = (/obj/machinery/camera{c_tag = "Atmospherics Central"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel,/area/atmos) "ddy" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) "ddz" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/machinery/embedded_controller/radio/airlock/access_controller{frequency = 1449; id_tag = "turbine_control"; name = "Turbine Access Console"; pixel_x = 6; pixel_y = -26; req_access_txt = "12"; tag_exterior_door = "gas_turbine_exterior"; tag_interior_door = "gas_turbine_interior"},/obj/machinery/ignition_switch{id = "gasturbine"; pixel_x = -6; pixel_y = -24},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plasteel,/area/maintenance/turbine) -"ddA" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1450; master_tag = "south_maint"; name = "exterior access button"; pixel_x = -25; pixel_y = 8; req_access_txt = "13"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"ddA" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "solar_xeno_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "13"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) "ddB" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"ddC" = (/turf/space,/obj/machinery/access_button/airlock_exterior{master_tag = "atmospherics_south"; pixel_x = -25; pixel_y = -8},/turf/simulated/floor/plating/airless/catwalk,/area/space) -"ddD" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "solar_xeno_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "13"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) -"ddE" = (/turf/space,/obj/structure/transit_tube{icon_state = "E-W-Pass"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"ddC" = (/turf/space,/obj/structure/transit_tube{icon_state = "E-W-Pass"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"ddD" = (/turf/space,/obj/item/wrench,/turf/simulated/floor/plating/airless/catwalk,/area/space) +"ddE" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) "ddF" = (/obj/structure/sign/biohazard{pixel_y = 32},/turf/space,/area/space) "ddG" = (/obj/machinery/field/generator,/turf/simulated/floor/plating,/area/storage/secure) "ddH" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -8304,27 +8304,27 @@ "ddJ" = (/obj/structure/table,/obj/item/paper_bin,/turf/simulated/floor/plating,/area/maintenance/asmaint2) "ddK" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "ddL" = (/obj/structure/lattice,/obj/docking_port/stationary{dir = 8; dwidth = 3; height = 5; id = "sit_engshuttle"; name = "Cyberiad Eng Shuttle"; width = 11},/turf/space,/area/space) -"ddM" = (/turf/space,/obj/item/wrench,/turf/simulated/floor/plating/airless/catwalk,/area/space) -"ddN" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) -"ddO" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "ai_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "75;13"},/turf/simulated/floor/plating/airless/catwalk,/area/space) -"ddP" = (/turf/space,/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) -"ddQ" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6; level = 2},/turf/simulated/floor/plating/airless/catwalk,/area/space) -"ddR" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) +"ddM" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "ai_airlock"; name = "exterior access button"; pixel_x = 25; pixel_y = 25; req_access_txt = "75;13"},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"ddN" = (/turf/space,/obj/structure/cable,/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) +"ddO" = (/turf/space,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 6; level = 2},/turf/simulated/floor/plating/airless/catwalk,/area/space) +"ddP" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) +"ddQ" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) +"ddR" = (/turf/space,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) "ddS" = (/obj/structure/particle_accelerator/fuel_chamber,/turf/simulated/floor/plating,/area/engine/engineering) -"ddT" = (/turf/space,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) -"ddU" = (/turf/space,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) -"ddV" = (/turf/space,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) -"ddW" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) -"ddX" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) -"ddY" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 8},/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/shuttle/pod_4) +"ddT" = (/turf/space,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) +"ddU" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) +"ddV" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) +"ddW" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 8},/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/shuttle/pod_4) +"ddX" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1450; master_tag = "sci_maint"; name = "exterior access button"; pixel_x = 8; pixel_y = 25; req_access_txt = "13"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk0"; icon_state = "catwalk0"},/area/space) +"ddY" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 8},/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/shuttle/pod_4) "ddZ" = (/obj/structure/reagent_dispensers/watertank,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "dea" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"deb" = (/turf/space,/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1450; master_tag = "sci_maint"; name = "exterior access button"; pixel_x = 8; pixel_y = 25; req_access_txt = "13"},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk0"; icon_state = "catwalk0"},/area/space) +"deb" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) "dec" = (/obj/machinery/atmospherics/pipe/manifold/visible,/turf/simulated/floor/plasteel,/area/atmos) -"ded" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 8},/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/shuttle/pod_4) -"dee" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) -"def" = (/turf/space,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) -"deg" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) +"ded" = (/turf/space,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) +"dee" = (/turf/space,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) +"def" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) +"deg" = (/turf/space,/obj/structure/cable,/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) "deh" = (/obj/machinery/space_heater,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plasteel,/area/atmos) "dei" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{dir = 8; icon_state = "freezer_0"; tag = ""},/turf/simulated/floor/plasteel,/area/atmos) "dej" = (/obj/machinery/atmospherics/pipe/simple/visible/green{level = 2},/obj/machinery/atmospherics/binary/pump{dir = 8; name = "CO2 to Pure"; on = 0},/turf/simulated/floor/plasteel,/area/atmos) @@ -8332,8 +8332,6 @@ "del" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/visible/yellow{dir = 4; level = 2},/obj/machinery/atmospherics/pipe/simple/heat_exchanging,/turf/space,/area/space) "dem" = (/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/atmos) "den" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = "co2_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/atmos) -"deo" = (/turf/space,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) -"dep" = (/turf/space,/obj/structure/cable,/obj/machinery/power/tracker,/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard) "deq" = (/obj/machinery/computer/guestpass,/turf/simulated/wall,/area/medical/reception) "der" = (/obj/structure/table,/turf/simulated/floor/plating,/area/maintenance/asmaint) "des" = (/obj/machinery/light/small{dir = 8},/obj/machinery/field/generator,/turf/simulated/floor/plating,/area/storage/secure) @@ -8418,7 +8416,6 @@ "dfT" = (/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/maintenance/storage) "dfU" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"; tag = ""},/obj/structure/window/reinforced/tinted{dir = 1},/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"; tag = ""},/obj/structure/window/reinforced/tinted,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/asmaint2) "dfV" = (/turf/simulated/floor/plating,/area/storage/secure) -"dfW" = (/obj/docking_port/stationary{dir = 2; dwidth = 2; height = 18; id = "skipjack_sw"; name = "southwest of SS13"; width = 19},/turf/space,/area/space) "dfX" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/shuttle/constructionsite) "dfY" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/constructionsite) "dfZ" = (/obj/machinery/door/airlock/external{id_tag = "s_docking_airlock"; name = "Shuttle Hatch"; req_access_txt = "0"; req_one_access_txt = "10;24"},/obj/docking_port/mobile{dir = 2; dwidth = 3; height = 5; id = "engineering"; name = "engineering shuttle"; rebuildable = 1; roundstart_move = "engineering_away"; width = 7},/obj/docking_port/stationary{dir = 2; dwidth = 3; height = 5; id = "engineering_home"; name = "engineering dock"; width = 7},/turf/simulated/floor/plating,/area/shuttle/constructionsite) @@ -8872,7 +8869,6 @@ "doL" = (/obj/docking_port/mobile/pod{dir = 4; id = "pod4"; name = "escape pod 4"},/obj/machinery/door/airlock/shuttle{id_tag = "s_docking_airlock"; name = "Escape Pod Hatch"},/turf/simulated/shuttle/floor,/area/shuttle/pod_4) "doM" = (/obj/structure/chair{dir = 4},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/pod_4) "doN" = (/obj/machinery/computer/station_alert,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior) -"doT" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_sw"; name = "southwest of station"; width = 18},/turf/space,/area/space) "doV" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/shuttle/pod_4) "doW" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/computer/monitor{name = "Grid Power Monitoring Computer"},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = -32},/turf/simulated/floor/plasteel{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/aisat_interior) "doY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = ""},/obj/structure/chair/office/dark{dir = 8},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/turret_protected/aisat_interior) @@ -8921,7 +8917,6 @@ "drf" = (/turf/simulated/wall/r_wall,/area/turret_protected/ai) "drg" = (/obj/machinery/status_display,/turf/simulated/wall/r_wall,/area/turret_protected/ai) "drh" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/turf/simulated/floor/bluegrid,/area/aisat{name = "\improper AI Satellite Hallway"}) -"drn" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_s"; name = "south of station"; width = 18},/turf/space,/area/space) "dro" = (/obj/machinery/light/small{dir = 1},/obj/structure/table/reinforced,/obj/item/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/pen/multi,/turf/simulated/floor/plasteel{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/ai) "drq" = (/obj/machinery/alarm{pixel_y = 22},/obj/structure/chair{dir = 8},/turf/simulated/floor/plasteel{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/ai) "drt" = (/obj/structure/table/reinforced,/obj/item/folder,/turf/simulated/floor/plasteel{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/ai) @@ -8943,7 +8938,6 @@ "drS" = (/obj/item/radio/intercom/custom{pixel_y = 25},/obj/item/radio/intercom/private{pixel_y = -28},/obj/item/radio/intercom{pixel_x = -28},/obj/effect/landmark{name = "tripai"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "drT" = (/obj/item/radio/intercom/custom{pixel_x = -28; pixel_y = -10},/obj/item/radio/intercom/private{pixel_x = 28; pixel_y = -10},/obj/item/radio/intercom{dir = 1; name = "station intercom (General)"; pixel_y = -28},/obj/machinery/requests_console{department = "AI"; departmentType = 5; name = "AI Requests Console"; pixel_x = 32; pixel_y = -32},/obj/machinery/newscaster/security_unit{pixel_x = -32; pixel_y = -32},/obj/effect/landmark/start{name = "AI"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "drV" = (/obj/item/radio/intercom/custom{pixel_y = 25},/obj/item/radio/intercom/private{pixel_y = -28},/obj/item/radio/intercom{pixel_x = 28},/obj/effect/landmark{name = "tripai"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"drW" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_se"; name = "southeast of station"; width = 18},/turf/space,/area/space) "drX" = (/obj/structure/lattice,/obj/machinery/camera{c_tag = "AI Satellite Exterior South West"; dir = 8; network = list("SS13","MiniSat")},/turf/space,/area/turret_protected/ai) "dsa" = (/obj/structure/lattice,/obj/machinery/camera{c_tag = "AI Satellite Exterior South East"; dir = 4; network = list("SS13","MiniSat")},/turf/space,/area/turret_protected/ai) "dsb" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/plasteel{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/turret_protected/ai) @@ -9015,7 +9009,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaacaagaaiaaiaajaaiaahaakaaeaafaaaaaaaaaaaaaadaakaalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaamaaoaaiaaiaaiaaiaaiaaiaanaahaapaafaaaaaaaadaaqaasaaraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaapaakaataaiaaiaaiaaiaavaaiaaiaaiaauaapaafaadaaqaaxaasaaraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaapaagaazaahaacaaeaaAaayaaCaacaacaaDaakaakaakaamaaEaaxaasaaraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaapaagaazaahaacaaeaaAaayaaCaacaacaaDaakaakaakaamaaEaaxaasaaraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauaagaaiaaFaaiaaGaaBaaIaaiaaHaaiaaiaaiaaiaaiaaiaaKaaxaaJaacaaLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaBaaiaaiaaiaaiaaGaaBaaiaaiaaiaaiaaiaaiaaiaaiaaiaauaacaapaafaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaOaaiaaiaaiaaiaaPaaBaaiaaiaaMaaRaacaacaataaiaaSaaBaaTaahaakaaeaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9031,7 +9025,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaabBaaiaaiaaiaaiaaiaaiaaiabCabjaaMaapabiablabzabEaasaaraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabDaaiabFaaiaaiaaiaaiaaiaauaaeaapabiaaaaaaablabzaasaaraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGabIabJabHabHabHabKabIabLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablaacaaeaataaiabRabSaaMaapaakabiaaaaaaaaaaaaablaaeaaLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQabUabVabTabXabWabZabZabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablaakaacaacaacaakabiaaaaaaaaaaaaaaaaaaaaaablabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQabUabVaawabXabWabZabZabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablaakaacaacaacaakabiaaaaaaaaaaaaaaaaaaaaaablabiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQacdabVabVaceabVabVacfabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQackaclabVabVacmabVacnabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaaaaaaaabaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacqabIabIabIacrabIabIabIacsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9041,13 +9035,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQadeabVabVadfabQacIabVacJabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQadeabVadyadzabQacIabVacJabQabIadBadAadCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQadSabVabVadTabQadUabVacfadWacNacNacNabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQadeabVabVabVaesabVabVaetadcacQacQdovabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaexaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQadeabVabVabVaesabVabVaetadcacQacQdovabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQadeabVabVabVaePabVabVabVaeQdoxdoxdoAabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTabIabIabIabIabIabIafgabVabVabIabIabIabIabIabIadCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTabIabIabIabIabIabIafgabVabVabIabIabIabIabIabIadCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQafzafzafAafBafCabQafDabVabVabQafEafFafGafHafIabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQabVabVabVadyabVafPabVabVabVafQabVadyabVadyafRabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafZagbagaagcaaaaaaaaaafZaaaaaaaaaagcaaaaaaaaaafZagdageagcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQagfabVabVabVabVaggabVabVabVaghabVabVabVabVagiabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwailagxagwaaaaaaafZagwagzagBagAagwagcaaaaaaagwagCailagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQagEabVagFahvagGabQagHagIagHabQagJagKabVabVabVabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwailaddagwaaaafZagZahaahbahcahdahaagZagcaaaagwadLailagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQagEabVagFahvagGabQagHagIagHabQagJagKabVabVabVabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwailaddagwaaaafZagZahaabTahcahdahaagZagcaaaagwadLailagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQabVabVahgabQabIabQabVahhahiabQabIabQabVabVabVabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMafXafXafXafXafXafXafXafXafXafXafXafXafXafXabMabMabMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagwadVahlahnaaaahoahpahaahaahqahaahaahpahraaaahsahtaenagwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQahwdcZahxabQaaaabQahyahyahyabQaaaabQahzahAahBabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMafXafXafXafXafXafXafXafXafXafXafXafXafXafXafXafXafXabMabMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagZailagZaaaaaaahJahpahaahKahLahaahaahpahMaaaaaaagZailagZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQahyahyahyabQaaaacqahNahOahPacsaaaabQahyahyahyabQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMafXafXabMafXafXafXafXafXafXafXafXafXafXafXafXabMabMafXafXabMabMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagZailagZagZagZagZagZagZagZahZagZagZagZagZagZagZagZailagZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9074,15 +9068,15 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaabarXarXarXarXarXaaaasbaaaarXarXarXarXarXaabalwaxkaxlaxlaxlaxkaaaaaaaaaabNabNabNancamXadoanNadoanfadoanganhabNanoanmabNanpanranqantansabNanPanTaIoaoaanZaKsaobaoeaodaogaxLaokaojaomanXaonaojaopanYaAzaoqaoUaowaoqaoWaoXaoqaoZaoYavzapaawhavAapbaypaxtapcaFLapdaolapyapKapGaFLaabawlavqavqawlapZapYaqcaqbapYaqcaqnawlavqaqqaqrawlaaaaaaamWaaaappapnapqaaaaaaappapnapqaaaaaaappapnapqaaaaaaappapnapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapoaaaarLarMarMarMarMarNasbarUasLasLasLasLasMaaaalwaxkaykaylaykaxkaaaaaaaaaabNaqtaqsanfanfanfaquanfaqMabNaqNabNabNaqPaqOabNaqQaqSaqRaqSaqTabNaooaoAaqVaKwaqYaKsaraaMOaodaogaxLarjarcarlarkaoOarmarpanYaAzarqaqUapzarqarnaroaruarxarwawgaxtavBavAarzaryarFarEaFLarKarParOarQaFLaFLaaaawlavqaCharRavqarSaqcaCharTaqcascawlasfawlawlawlaaaaaaamWaaaappapnapqaabaabappapnapqaabaabappapnapqaabaabappapnapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaxnatFatFatFatFatFaaaasbaaaatFatFatFatFatFaabalwaxkazfazjaziaxkaaaaaaaaaasgasianfanfasjaslaquasrabNabNassaswasuaszasxabNabNasBaqRasBabNabNarrarsasDasOasNasNasPaodaIoasQaxLarjarcasXasRasYarmarpanYaAzasZatbataasZatdateasZathartaxvatiavBarvatlatkatnatmaxCatoarAatpavFapGaFLaaaawlaBwavqawlatraqcaqcatsaqcarRattavqatwatuawlaaaaaaaaaamWaabappapnapqaaaaaaappapnapqaaaaaaappapnapqaaaaaaappapnapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawoawqawpawsawralwaaaaaaaaaaabaaaaaaaaaasbaaaaaaaaaaabaaaaaaaaaalwaxkaAiaykaykaxkaaaaaaaaaasgatAatzatHatDatQatOatSasgatZarBaubarHaueaudaugaufaujauhaulaukasEasCaoAauoaurasNatfautaodaAzavdaxLauFauDauGauGauJauHauLatqauMaAxauOauNaAxauPauQaAxauSauRawVauTaAFaypayqatvauXauWaFLauYaytamaauIauIaFLaabawlavqavqaHpavaauZavaavaaEIavbavcavqatTatGatGawlawlaaaamWaaaaabannaabaaaaaaappapnapqaaaaaaappapnapqaaaaaaappapnapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawoawqawpawsawralwaaaaaaaaaaabaaaaaaaaaasbaaaaaaaaaaabaaaaaaaaaalwaxkaEfaykaykaxkaaaaaaaaaasgatAatzatHatDatQatOatSasgatZarBaubarHaueaudaugaufaujauhaulaukasEasCaoAauoaurasNatfautaodaAzavdaxLauFauDauGauGauJauHauLatqauMaAxauOauNaAxauPauQaAxauSauRawVauTaAFaypayqatvauXauWaFLauYaytamaauIauIaFLaabawlavqavqaHpavaauZavaavaaEIavbavcavqatTatGatGawlawlaaaamWaaaaabannaabaaaaaaappapnapqaaaaaaappapnapqaaaaaaappapnapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaxjaxjaxjaxialwaabarXarXarXarXarXaaaasbaaaarXarXarXarXarXaabalwaxkaBkaykaBlaxkaaaaaaaaaasgavgavfaviavhavkavjavmavlavoavnavCavravEavDavHavGavJavIavLavKavOatXaoAaIoavQasNavSavRavUavTavVaxLaAzaxZaxZaxZaxZaxZavdanYaAzavWavYavXauaavXaumawaawdaunawfaweawjawiawAawnawCawVaFLaFLaFLaFLaFLaFLaFLawlawlavqavqaqcawDattawFawEawHaAQavqavqauKauAaxfazTdmoaaaaaaaaaaabaqZaabaabaabappapnapqaabaabappapnapqaabaabappapnapqaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiawMazgawNaxialwaaaarLarMarMarMarMarNasbarUasLasLasLasLasMaaaalwaxkaBkaykaBlaxkaaaaaaaaaabNawSawOadoanfawUawTanfabNabNawWawYawXaxaawZaxbaxbaxcaxcaxcaxdaxbauUaveaIoaxpasNavNaxraodaxuaxxaAWaAWavPaAWaxzaAWavZaxDawbawIawcawLawJaxHaxGaxJaxIaxMaxKaxPaxOaxRaxQaxTaxSaxUawVaxVatwazMazLawlaxWaxYaxXaIqavqavqayaawDayeawFayfaygawFavqavqbVQaxgdgkazTavMaaaaaaaabaqZaqZaqZaabaaaaaaannaabaabaabaabannaabaabaabaabannaabaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiazeazgazhaxiaabaBmatFatFatFatFatFaaaasbaaaatFatFatFatFatFaabalwaxkaCYaykaykaysaaaaaaaaaabNabNabNayuadoaywaxsanfayxabNayyabNabNayBayzaxbayCayDayDayDayFaxbaxwaoAaIoayHasNasNayIaodaIoayKayJayMayLayNayNayPayOaxAaxyaxBaAxauOayTaAxayUauQaAxayXayWazaayYayYaAxazdazcazcaBsazmazlaAKaAJawlavqavqavqavqattavqawlawlavqavqaznawFayeavqatGatGaxhaxhaxhdmoaaaaaaaabaqZazUaqZaqZaqZaqZaqZaqZaqZaqZaqZaqZaqZaqZaqZaqZaqZaaaaaaamWaaaaAfaAfaAgaAgaAgaAgaAgaAgaAfaAfaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaAhazgazhaxialwaaaaaaaabaaaaabaaaaaaawkaaaaaaaabaaaaabaaaaaaalwaxkaEfaykdiyaxkaaaaaaaaaaabazoabNabNazpabNazqanfanfanfazrazsabNazuaztaxbazvaxEazwazzazyaxbaxwaoAaIoazBazAazCaraaoeaIoazEazDaIlazFazFazFaIlaDfayjaxFaAzazIazNazKaoqatdazOaoqazQaynaoqayrazWaAxazYazXazZaBsawlaBvaBRaBvaIqavqavqavqaAcaAaavqavqawlaqcayaarRawlaHpawlatGaupawPauqauqausaaaaaaaabaqZawQawRaabaaaaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaAfaAfaBdaBcaBeaBgaBhaBfaBjaBeaAfaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaAhazgazhaxialwalwalwaabaabaabaabaAdaAlaAdaabaabaabaabalwalwalwaFiaykaykaFkaFiaaaaaaaaaaaaaababNaAoaAnabNaAqaAranfakLaAsakQaAtaAvaAuaxbaAwaAyaAyaAyayvaxbayGayQaIoaAEaADaAHaAGaAIaIlaIlaIlaIlaAMaAOaANaIlaIlayjaxFaAzaAPaySayRarqazxaroaruaAXaAVaBaaAZaBbaAxaBoaBiaBpaBsaydaBqavqaBraBuaBtaBuaBuaBtaBtaBuaBzavqavaaBCattavqavqavbavsavqavtavpavuavwaaaaaaaabaabaxqaabaabaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaabaAfaAfaAfaBUaBgaBVaBgaBVaBXaBgaBgaBgaBWaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaAhazgazhaxialwaaaaaaaabaaaaabaaaaaaawkaaaaaaaabaaaaabaaaaaaalwaxkdiyaykdiyaxkaaaaaaaaaaabazoabNabNazpabNazqanfanfanfazrazsabNazuaztaxbazvaxEazwazzazyaxbaxwaoAaIoazBazAazCaraaoeaIoazEazDaIlazFazFazFaIlaDfayjaxFaAzazIazNazKaoqatdazOaoqazQaynaoqayrazWaAxazYazXazZaBsawlaBvaBRaBvaIqavqavqavqaAcaAaavqavqawlaqcayaarRawlaHpawlatGaupawPauqauqausaaaaaaaabaqZawQawRaabaaaaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaAfaAfaBdaBcaBeaBgaBhaBfaBjaBeaAfaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaAhazgazhaxialwalwalwaabaabaabaabaAdaAlaAdaabaabaabaabalwalwalwaFiaFkaykaexaFiaaaaaaaaaaaaaababNaAoaAnabNaAqaAranfakLaAsakQaAtaAvaAuaxbaAwaAyaAyaAyayvaxbayGayQaIoaAEaADaAHaAGaAIaIlaIlaIlaIlaAMaAOaANaIlaIlayjaxFaAzaAPaySayRarqazxaroaruaAXaAVaBaaAZaBbaAxaBoaBiaBpaBsaydaBqavqaBraBuaBtaBuaBuaBtaBtaBuaBzavqavaaBCattavqavqavbavsavqavtavpavuavwaaaaaaaabaabaxqaabaabaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaabaAfaAfaAfaBUaBgaBVaBgaBVaBXaBgaBgaBgaBWaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiaCTazgaBDaxiaaaaaaaaaaaaaaaaaaaaaaAdaBFaBEaaaaaaaaaaaaaaaaaaaaaaGgaFiaBGaFiaGhaaaaaaaaaaaaaababNaAoaBHabNaBIaAraBJaBLaBKaBMabNabNabNaxbaBNaBPaBOaBSaBQaxbazGazHaIoaIoaCbaCcaCbaCbaIlaCeaCdaCgaCfaCjaCiaClaCkazPazJazRaAxaCqaCpasZaCraCsasZaCtartasZaAAaCwaAxaABaFnaACaBsavqaSPavqavqavqaCharRarRaHpawlawlaSPavqavqaqcattaCzaASaCAatGavqaxNauqauqawmaaaaaaaabaabayEaabaabaaaaaaaabaaadmoazbdmoaaaaGXaGXaHNaHNaGXaAfaCNaCOaCPaCMaCRaCQaCSaBgaBgazSaCVaBgaCWaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCBazgazgaCXaxiaaaaaaaaaaaaaaaaaaaAdaAdaCDaCCaAdaaaaaaaGnaGnaIIaIIaIIaGnaGnaGnaGndmoaaaaaaaaaaababNabNacRabNabNaCEabNabNabNabNabNaabaabaxbaxbaCGaCFaCIaCHaxbaARaATaCKaDbaDaaDdaDcaDgaDeaDiaDhaDiaLEaDjaCfaDiaCkaBYaAUaCaaAxaAxaHEaHEaHEaHEaHEaDoaDnaAxaAxaAxaAxaBsaBsaBsaBsaDpaSPaChavqavqavqawlavqaChavqawlaSPavqatGatGatGatGatGatGatGatGatGatGaaaaaaaaaaaaaabaDSaDKaDSaabaabaaaaabaaaaHNaJCaHNaaaaGXaDqaWVaDraHOaAfaDtaDsaDWaDVaDYaDXaBgaBgaBgaAbaEaaBgaEcaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiazgazgaEeaxiaaaaaaaaaaaaaaaaaaaDwaDuaDyaDxaDwaaaaGnaGnaDAaDzaDCaDBaGnaOTaDDaGndmoaaaaaaaaaaabaababNaDEabNaDFaPiaDGaSuaabaabaabaabaabaabaxbaxbaxbaxbaxbaxbaDHaDJaDIaDLaDLaDMaDLaDQaDOaDiaDRaDUaCmaEdaCnaEgaCkaCvaCoaCxaEiaEmaxeaEoaEnaEpaxeaEraEqaEtaEsaEsaEuaBtaBtaBtaBtaBtaEvavqavqavqavqawlaybaEwaycawlaBraBzatGaaaaabaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaDSaERaDSaaaaabaaaaabaaaaHNaCydofaaaaGXaExaEyaQIaGYaAfaEzaESaCPaEUaEWaEVaEXaBgaEZaALaFbaFaaAfaFdaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCBaCXazgaCXaxiaaaaaaaaaaaaaaaaaaaAdaAdaCDaCCaAdaaaaaaaGnaGnaIIaIIaIIaGnaGnaGnaGndmoaaaaaaaaaaababNabNacRabNabNaCEabNabNabNabNabNaabaabaxbaxbaCGaCFaCIaCHaxbaARaATaCKaDbaDaaDdaDcaDgaDeaDiaDhaDiaLEaDjaCfaDiaCkaBYaAUaCaaAxaAxaHEaHEaHEaHEaHEaDoaDnaAxaAxaAxaAxaBsaBsaBsaBsaDpaSPaChavqavqavqawlavqaChavqawlaSPavqatGatGatGatGatGatGatGatGatGatGaaaaaaaaaaaaaabaDSaDKaDSaabaabaaaaabaaaaHNaJCaHNaaaaGXaDqaWVaDraHOaAfaDtaDsaDWaDVaDYaDXaBgaBgaBgaAbaEaaBgaEcaAfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaxiafyazgaEeaxiaaaaaaaaaaaaaaaaaaaDwaDuaDyaDxaDwaaaaGnaGnaDAaDzaDCaDBaGnaOTaDDaGndmoaaaaaaaaaaabaababNaDEabNaDFaPiaDGaSuaabaabaabaabaabaabaxbaxbaxbaxbaxbaxbaDHaDJaDIaDLaDLaDMaDLaDQaDOaDiaDRaDUaCmaEdaCnaEgaCkaCvaCoaCxaEiaEmaxeaEoaEnaEpaxeaEraEqaEtaEsaEsaEuaBtaBtaBtaBtaBtaEvavqavqavqavqawlaybaEwaycawlaBraBzatGaaaaabaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaabaDSaERaDSaaaaabaaaaabaaaaHNaCydofaaaaGXaExaEyaQIaGYaAfaEzaESaCPaEUaEWaEVaEXaBgaEZaALaFbaFaaAfaFdaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFeaFfaEBaFfaFgaaaaaaaaaaaaaaaaaaaDwaECaEEaEDaDwaaaaGnaEFaEHaEGaEKaEJaGnaHSaELaGndmoaBxaGnaaaaaaaaaabNabNabNaENaPiaEOaSuaaaaaaaaaaMAaMAaMAaMAaEQaEPaFcaETaSuabNabNaAmaBnaFhaFlaFjaBnaIlaFoaFmaFqaFpaFsaFraFtaIlaCZaCJaDkaFwaFAaFzaFCaFBaFDaxeaFGaFEaxeaxeaxeaGKavqaFHaDPaDPaDPaDPaDPaFIaFIaIYaFIaFIaFIaFIaFIaFIaSPaFJaFJaFJaFKaFKaFKaFKaFKaFKaFJaFJaFJaaaaabaDSaDSaFZaDSaGTaGXaGXaGXaGXaHNaMfdogaHNaGXaFMaFOaFNaGYaMnaFPaDsaCPaAfaCPaCPaGdaGcaAfaAfaAfaAfaAfaAfaaaaabaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaFeaGfaFgaaaaaaaaaaaaaaaaaaaaaaDwaFQaFSaFRaFTaaaaGnaFUaEJaFVaFXaFWaGnaHSaELaGnaFYaFYaGnaaaaaaaaaaaaaabaSuaGaaGbaSuaSuaaaaaaaaaaMAaGeaGjaGiaGlaGkaGoaGmaGpaAmaGraGqaGsaApaGtaApaGuaIlaIlaIlazFazFazFaGvaIlaIlaDmaDlaFFaFwaFAaFzaGzaGyaGBaGAaGDaGCaGFaGEaxeaGGaGHaIqaDPaGIaGLaGJaGMaFIaGOaGNaGQaGPaGZaGRaHaaFIaSPaFJaKQaKQaKQaKQaKQaKQaKQaKQaKQaKQaFJaaaaabaGTaGUaGSaGWaGTaTXaUaaMzaHcaGYaNfaNgaJIaGXaHdaHfaHeaGXaAfaCPaAfaCPaGYaAYaHbaMzaGYaGYaGYaIEaGYaGYaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaGnaGnaStaStaHhaHgaHiaGnaGnaHjaHlaHkaHkaHmaHnaHSaELaGnaEbaDTaGnaGnaGnaaaaaaaaaaSuaSuaSuaSuaabaaaaaaaaaaQgaHraHsaGiaGmaHtaHuaGmaHvaAmaHxaHwaHyaApaGtaHzaHzaHAaHCaHBaHFaHDaHDaHGaElaHHaBYaEhaFFaFwaFwaHVaHWayVaEkaHXaEAaHZaIbaHZaIgaIdavqaIiaDPaIjaFuaIkaInaFIaIpaGNaItaIsaIsaIsaIuaFIaSPaFJaKQaKQaKQaKQaKQaKQaKQaKQaKQaKQaFJaaaaabaGTaHKaHIaHJaGTaURaUaaMzaIvaOCaGYaGYaGYaGXaGYaGYaGYaGXaHbaGYaGYaGYaGYaGYaGYaGYaGYaGYaHOaGXaGYaLcaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9091,8 +9085,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaJPaJSaJQaaaaJRaJVaJTaabaabaIIaHSaIIaaaaaaaabaGnaJXaKWaJZaJUaHSaKaaGnaKbaHSaKdaLtaLvaLuaKeaKeaKeaKeaLxblGbqtblLaGnaMAaMAaMAaLBaMAaLDaLCaLGaLFaLIaLHaMAaGiaGiaMAaLJaKcaLLaLKaPiaLMaElaLNaLQaLOaIZaLRaLSaHAaLUaLTaLWaLVaLYaLXaMaaLZaINaIraIOaEjawlawlaCzaMjavqaFHaxeaxeaxeaxeaxeaJpavqawlaDPaMmaJtaMwaFIaMCaGNaJfaMHaJzaJwaMIaMJaFIaSPaFJaKQaKQaKQaKQaKQaKQaKQaKQaKQaKQaFJaaaaIFaKRaKTaKSaMKaGXaMLaGXaGXaGXaQIaGYaGYaMnaGYaGYaKVaKUaKXaIEaGYaMqaDZaOLaEYaMqaGVaHLaNkaMqaMraMraMraMraabaMraMraabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLdaLaaLbaLaaLdaLeaLfaLeaLdaabaIIaJgaLwaaaaaaaGnaGnaGnaGnaGnaLhaGnaGnaPcaLiaLmaLmaMNaMPaLraLqaLpaGnaHSaHSaHSaHSaIxaHSaPiaMQaMQaMQaMAaMSaMRaMUaMTaMWaMVaMAaPiaPiaMAaMYaMXaMYaGiaMZaMZaElaNaaKlaNbaNdaJiaNlaNeaNJaNGaJJaJFaNNaNMaNPaNOaKoaKgaKzaKxaKHaNUaNUaNUaNUaNUaNUaNUaNUaNUaNUaNWavqaFHaDPaNXaNZaNYaFIaObaGNaGNaOdaOcaOfaOeaOgaFIaSPaFJaFKaFKaFKaOhaFKaFKaOhaODaFKaFKaFJaFJaIFaMiaGYaMkaGYaHbaVJaGXaOiaGXaGXaMnaGXaGXaGYaKXaMoaMlaGYaGXaGYaPOaMqaKJaKMaPSaOJaDZaOKaMqaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapsaptaprapuaprapraprapraprapuapvaaaaaaaMsaLaaMpaLaaMsaLeaMtaLeaMsaGnaIIaLyaMuaIIaIIaGnaLgaKNaKNaKNaLlaLjaLjaLnaLoaGnaGnaGnaGnaGnaMxaGnaGnaHSaMyaGnaMvaOjaKeaOmaPiaOnaPiaMAaOpaOoaOqaOoaMWaPiaOraMQaPiaOsaMQaMQaMQaOsaMQaOtaOvaOuaOuaOuaOxaOwaOyaHAaJcaOzaOBaOAaOHaKraBnaSNaHQaHqaHTawlavqaLPaLPaHpaLPaLPaLPaLPaLPaOIaOIaPbaOIaOIaDPaDPaDPaPeaFIaPfaPfaPfaPgaPfaPfaPfaFIaFIaPhaOIaPlaPkaPkaPmaPkaPnaPmaPoaPkaPpaPraPqaGXaMoaKXaMkaGYaNhaPsaGXaGXaGXaMoaGYaNiaGXaGYaGYaMoaNjaGYaMnaMcaMbaMgaMeaQUaQTaOMaQYaQWaMqaGXaGXaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqfapxapwaqhaqgarharhaqiarhaqjapxaaaaaaaMsaONaNtaPPaMsaPUaNyaPWaNwaNxaHSaNzaNCaNAaMyaNBaMhaGnaGnaGnaGnaGnaGnaGnaMFaGnaByafOaBTaGnaNEaNFaNHaHSaNBaGnaNAaHSaGnaPtaPiaMAaMAaMAaMAaPuaLMaPuaMAaMAaMAaMAaPvaMAaPiaLMaLMaMAaMQaPwaElaElaPxaApaPzaPyaPAaHAaPCaPBaPEaPDaPGaPFaBnaPHaMGaHqaNcawlavqaLPaPMaPLaPNaPMaQfaQdaLPaQkaQnaQmaQpaQoaQraQqaQuaQtaQxaQvaQAaQzaQBaQvaQvaQvaQFaQEaQHaQGaQVaQKaQKaPmaPmaRtaPmaQKaQKaRvaRxaRvaGXaOFaGYaOEaOGaOGaRDaRzaRIaRGaRJaGYaGYaGYaGYaGYaGYaGYaGYaMzaNnaPOaMqaNraNsaOLaOLaEYaRZaMqaJNaJLaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaardapxarharharharhaqkaqmaqlareapxaaaaaaaMsaOPaOQaORaMsaOPaOQaORaNwaKaaLgaNDaKNaKNaKNaKNaNIaGnaOTaOOaOVaOUaOWaGnaMFaGnafOaOXaByaOYaPaaOZaGnaPcaGnaGnaGnaGnaPcaLsaHSaMAaaaaaaaMAaGmaGmaGmaMAaaaaaaaMAaPiaPjaGiaGiaGiaMAaPiaPwaGbaElaRPaRMaRRaRQaGuaElaElaElaElaRVaElaElaElaEjaNKaHqaHTawlavqaLPaPMaPLaQdaPMaShaQdaSlaSkaSxaSmaSBaSBaSBaSDaSGaSEaSJaSJaSJaSDaSLaPmaSMaSMaSMaSMaSQaSOaSRaPmaPmaPmaNQaNLaSZaSUaTcaTbaTdaTbaGXaHPaHPaGXaGXaGXaMzaMzaMzaGXaTeaPKaGXaMzaMzaGXaMzaMzaGXaGXaNRaMqaTjaQRaTlaTkaTmaQRaTnaMqaKZaKYaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqfapxapwaqhaqgarharhaqiarhaqjapxaaaaaaaMsaONaNtaOOaMsaPPaNyaPUaNwaNxaHSaNzaNCaNAaMyaNBaMhaGnaGnaGnaGnaGnaGnaGnaMFaGnaByafOaBTaGnaNEaNFaNHaHSaNBaGnaNAaHSaGnaPtaPiaMAaMAaMAaMAaPuaLMaPuaMAaMAaMAaMAaPvaMAaPiaLMaLMaMAaMQaPwaElaElaPxaApaPzaPyaPAaHAaPCaPBaPEaPDaPGaPFaBnaPHaMGaHqaNcawlavqaLPaPMaPLaPNaPMaQfaQdaLPaQkaQnaQmaQpaQoaQraQqaQuaQtaQxaQvaQAaQzaQBaQvaQvaQvaQFaQEaQHaQGaQVaQKaQKaPmaPmaRtaPmaQKaQKaRvaRxaRvaGXaOFaGYaOEaOGaOGaRDaRzaRIaRGaRJaGYaGYaGYaGYaGYaGYaGYaGYaMzaNnaPOaMqaNraNsaOLaOLaEYaRZaMqaJNaJLaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaardapxarharharharhaqkaqmaqlareapxaaaaaaaMsaOPaOQaORaMsaOPaOQaORaNwaKaaLgaNDaKNaKNaKNaKNaNIaGnaOTaPWaOVaOUaOWaGnaMFaGnafOaOXaByaOYaPaaOZaGnaPcaGnaGnaGnaGnaPcaLsaHSaMAaaaaaaaMAaGmaGmaGmaMAaaaaaaaMAaPiaPjaGiaGiaGiaMAaPiaPwaGbaElaRPaRMaRRaRQaGuaElaElaElaElaRVaElaElaElaEjaNKaHqaHTawlavqaLPaPMaPLaQdaPMaShaQdaSlaSkaSxaSmaSBaSBaSBaSDaSGaSEaSJaSJaSJaSDaSLaPmaSMaSMaSMaSMaSQaSOaSRaPmaPmaPmaNQaNLaSZaSUaTcaTbaTdaTbaGXaHPaHPaGXaGXaGXaMzaMzaMzaGXaTeaPKaGXaMzaMzaGXaMzaMzaGXaGXaNRaMqaTjaQRaTlaTkaTmaQRaTnaMqaKZaKYaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaqfapxarfargarharharWasaarZarhaqoaSdaSdaLdaMsaPZaQaaLdaMsaPZaQaaLdaGnaNSaGnaGnaGnaGnaGnaHSaGnaHSaQbaPXaHSaHSaGnaMFaGnaByaabaBZaGnaJYaOZaGnaQeaQcaGnaNAaKaaGnaLsaMAaMAaQgaQgaMAaPiaPiaPiaMAaQgaQgaMAaTfaPjaQhaQiaQjaMAaThaPwaThaElaElaElaElaElaElaElaPiaGbaPiaTwaPiaPiaGbaMAaMGaAUaNTawlavqaLPaTCaPLaQdaPMaShaQdaSlaTDaTFaTEaTIaTGaTRaTJaUGaUdaUIaUIaUKaUJaUMaNVaVoaUTaVpaUTaVsaVqaVuaVtaVtaVvaVzaVwaLAaLAaLAaLAaLAaMnaGXaQCaVAaQLaQJaHbaGXaOFaHbaGXaVBaGYaGXaQMaGYaGXaQOaQNaQPaOGaOkaMqaUgaQRaUiaUhaUiaQRaUjaMqaMzaMzaGXaGXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaardapxarharharharharWasaaPVarhaQXaRbaPIaWeaVfaMdaMdaRaaPJaPQaPQaPTaPRaQwaPYaPYaPYaQyaGnaHSaGnaRhaRgaRiaHSaRjaPcaMFaGnaGnaGnaGnaGnaGnaPcaGnaHSaRiaLkaHSaHSaHSaRkaRmaRlaRnaRnaRnaRnaRoaRnaRnaRpaRqaRlaRsaRraRraRraRraVDaVDaVEaVDaVDaVDaVDaVFaVDaVDaVDaVDaVDaVHaVEaVDaVKaVDaVLaQQaQDaQSawlavqaLPaWzaQZaQdaPMaRcaQdaLPaWBaTFaWCaWEaWDaWFaTJaWHaWGaWKaWJaWMaWLaWQaWPaWUaWTaWTaWTaWWaVqaWYaWXaXfaXfaXfaXfaXTaXiaXVaXUaLAaGYaGYaGYaXWaOGaOGaOGaOGaOGaOGaOGaXXaGYaGYaGYaGYaMnaGYaGYaMkaGYaRXaUYaUYaMqaMqaMqaMqaMqaMqaUfaQIaOFaJMaGXaabafOaMraMraabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarVapxdgKdgLarharharWasadhbarhaqoaZPaSdaSdaMBaSfaMDaMEaSfaSfaRdaMDaSfaReaMEaSfaSfaRfaGnaHSaGnaSoaHSaHSaSpaSqaGnaRAaRuaRBaRBaRBaRBaRBaRCaPcaSsaHSaGnaNxaNxaGnaSraMAaSuaSwaSvaSvaSvaXYaSvaSvaSvaSyaSuaSzaMAaMAaOsaMAaMAaMAaQjaPiaPiaPiaPiaXZaPiaRwaRwaRwaRwaRwaYaaQlaYbaYhaMAaRFaREaHTawlavqaLPaYsaYpaYwaYvaYIaLPaLPaZsaTFaZtaZvaZuaZtaTJaZwaWGaZyaWKaWMaZzaZAaWPaWUaZCaZDaZCaZGaZEaZIaZHaXfaXfaZKaZJaIhaZLaRHaZMaLAaGYaGYaGYaZQaGYaGYaGYaGYaGXaIEaGXaZXaQIaMzaGXaIEaGXaKXaUUaMkaGYaRKaGXaHOaHbaGYaGYaGYaQIaGYaGYaGYaGYaGYaGXaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9118,16 +9112,16 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabysbwEbwGbwHbwIbwIbwJbwIbwIbwIbwJbrQaSdaSdaSdaTobBsbBrbBGbBtbBHbBHbBJbBIbwMbrUbqrbvybwKboZbvsbwPbwQbBNbBPbvsbBQbwTbBUblMbrNbstbCnbwYblMbCsbCrbxbbxbbxcbxbbxbbxbbxbbxebxdbxdbxdbxfbxdbxgbxhbxibCtbxkbxlbxlbxlbxlbxlbxmbxmbCwbxmbvXbvXbxobxpbxqbCybxtbxsbxobvXbvXbxvbCAbxvbxvbxvbxvbxvbxvbxvbwjbpAbhqaUSbxxbmqaVGbJQbmqbznbmqbzobCIbCBbmqbxEbdTbxFbxGbdTbdTbxHbxJbxIbxJbdTbdTbebblbbxLbxMbxMbxMbxMbxLbxNbebbCNbwvbwvbwvbxPbaubxQbxRbxSbxTbCObxVbxWbCSbCRaYPbjDbyZbyaboJboJboJbyabzlbjDbEFbAIbuHbmmbCXbCTbDkbCTbDpbmmbmmbmmbDtbAEboIbrLbrMboIbrKbeCbeCbeCbeCbeCbeCbeCbeCbeCbeCblCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabysbrObrObrQbrObrObrObrRbrObrObydaabaSdbwObmSbDubqrbtFbtFbtFbrUbyhbygbyjbyibqrbwZbyeboZbvsbymbvsbynbDvbvsbwTbypbwTblMbrNbstbCnbskblMbCsbCrbxbbDIbDxbyvbywbzBbxbbyybykbDNbylbyBbyBbyBbyCbEjbDObyFbxlbyGbyHbyIbyJbyLbyKbDSbyNbvXbyObDVbDTbDYbDWbEabDZbEdbEbbvXbySbEebyTbyWbyVbyYbyXaZObxvbzabEgbzbbzcaUSaUSaUSaUSbAvbsNbAvbzeaUSaUSaUSaUSbdTbdTbdTbdTbzgbzfbzfbzfbzfbzhaQsbebbjBbzjbjBbzkbzkbjBbzjbjBbebbCNbwvbwvbwvbxPbaubaubaubaubaubaubaubaubaubauaYPaYPaYPaYQbElaYQbElaYQaYPaYPbEFbAIbuHbAJbAKbjRbjRbjRbEFbALbmmbmmbAMbjRbjRbjRbqnbjRbicbttbeCblCblDblAbeCblCblDblAbeCbtubicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjQaLdaSdaSdaSdaMsaMsaMsaMsaMsaMsbzrbEmbqrbqrbqrbqrbqrbqrbztbqrbqrbqrbnKbnKbnqbvsbzubzvbErbEzbvsbzzbzybzAblMbrNbstbCnbnDblMbCsbCrbxbbzCbEBbEHbECbBjbxbbyybyzbBnbzFbzIbzHbzKbzJbzMbDObyFbzRbzNbENbEZbEVbEVbEZbFabzSbvXbzTbFbbxqbyPbzWbyPbxqbFfbFebvXbzXbFhbFgbzZbAabAdbzYbAcbxvbAlbFibAfbAgbAhbAicMKbAkbAkbAkbAkbAkbAkbFjbAobAnbAkbAkbAqbAkbAkbAkbAkbAkbAkbAkbAkbApbAsbArbArbArbArbArbArbAtbAibFkbvhbvhbvhbvhbFnbvhbFobvhbFrbvhbFsbvhbFvbFubFzbFwaSIaSIaSIaSIaSIaSIbFGbFBcYwbFHbGjbGhbjRbwDbwCbxzbjRbGobmmbmmbGIbGsbjRbGMbGNbjRblDblAbeCblCbnbblAbeCblCbnbblAbeCblCblDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAQbARbARbARbARbASbASbARbARbATaaaaabaSdaUlaMEbFMbFJbFZbFYbFYbFYbFYbGabGbbBablQbnwbBbbnqbvsbvsbvsbGkbyobvsblMblMblMblMbrNbuabGnbBfblMbGRbGUbxbbBkbGYbywbBjbCubxbbyybzGbBnbzFbBnbBobBpbzJbBqbGZbHabzRbDobHgbDsbBubBvbBwbHjbBxbvXbBybHkbxqbBAbBzbBAbxqbHlbBBbvXbBCbHmbzYbzZbBDbAdbzYbBEbxvbBFbHobHsbHrbHubHtbHybHybHybHybHybHybHybHAbHybHybHybHybHybHybHybHybHybHybHybHAbHybHybHybHybHybHybHAbHybHybHybHtbHCbHHbHFbHPbHIbHIbHIbHIbHIbHIbHIbHIbHIbHIbHIbHQbHIbHIbHIbHIbHIbHIbHRbHTbHSbHVbHUdckcVtbjRcVVbzdbzmbjRcWhbmmbmmcWAcWvbjRcWEcWQbjRbnbblAbeCblCbnbblAbeCblCbnbblAbeCblCbnbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbCcbBZbCebCbbCbbClbCibARbATaSdaSdaSdbHWbIbbCfbCgbCfbCfbCfbCfbChbIebCjblQblQblQbIrbvsbwPbCmbCxbIsbvsbCobCpbCoblMblMblMblMbCqblMbxabnKbxbbCvbIzbBjbCzbDRbxbbyybzJbIGbzFbIKbIJbCEbzJbCFbDObyFbzRbDybHgbDsbCGbCCbBwbHjbCDbvXbCHbILbxqbCKbCJbCLbxqbINbIMbvXbCMbIQbIObCPbCQbCUbzYbCVbxvbCYbIRbAfbAgbAhbAibAkbCZbAkbDAbDbbDbbDbbITbDbbDbbDbaRybAkbAkbAkbAkbAkbDabAkbJbbAkbCZbAkbAkbAkbJcbJebJdbJhbJgbJlbJkbJmaSIaTHaSVbwvbwvbwvcXfbJpbwvbwvbwvbwvbwvbJqbwvbwvbwvbwvbwvbDrbDqcXhcXgcXjbJrbmmbGhbjRbwDbwCbxzbjRbGobmmbmmcXlcXkbjRbGNbGMbjRbqoblAbeCblCbqoblAbeCblCbqoblAbeCblCbqoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbDGbCbbCbbCbbCbbCbbCbbCbbDHbDCaOQbDCaSfbJsbCfbDEbDJbDLbDKbDMbChbJubJtbIPbIPbJwbJvbvsbvsbvsbynbJxbymblQblQblQblQbDPbCkbCkbJybCkbJBbCkbFmbEibywbywbJDbywbxbbDUbzJbJEbzFbzEbBnbEfbDXbEjbDOcXqbxlbHpbJGbJHbJHbJHbJHbJIbEcbvXbvXbvXbvXbvXbvXbvXbvXbvXbvXbvXbxvbJNbJKbEhbEUbEsbEkbEvbxvbEwbJTbEnbEpbEpbEpbEpbEpbEpbEqbEybEpaTLbJYaTMbEpbNebEobEobEobEobEobEubEubEuaTNbEubEubEubEubEubEuaTObEubEubEubtebKabKbbwvbuxbuxbEAbEAbEAbEAbEAbEJbDqbDqbDrbDqbJqbDqbDqbDqbDqbEMbEDbEDbEDbEDcXnbJrbmmbAJbEFbjRbjRbjRbAKbALbmmbmmbAMbjRbjRbjRbqnbjRbicbzqbeCbeCbeCbeCbeCbeCbeCbeCbeCbeCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbEKbELbELbCbbELbELbELbARbERaSdaSdaSdaTobKdbCfbEYbEXbEXbEXbFcbChbnKbKfbESbETbETbKhbvsbwPbEWbynbKqbymbKtbKrbnwbKubKEbKybKybKGbFdbKHbnKbxbbFlbFpbFqbywbKQbFmbNsbyBbKIbFtbzEboxbFybvQbEjbDOcYPbxlbwebxlbJabFFbFIbKJbKKbxmbxmaaabFCbFDbFEbFNbFEbFPbFCaaabxvbxvbKMbKLbFKbFLbEsbzYdoBbxvbFUbKNbFWbEpaTTaTSaTVaTUaTYaTWaUPaUObLzbKObBLaVxaVIaVyaWOaWIaWSaWRbEuaYkaYoaYlaYraYqaZUaZTbobbbybuOaZTaZTbzibGrbGrbKRbGrbwLbwLbEAbGubGAbGwbEAbGBbGEbGBbEAbGFbKTbEMbEDbGKbGLbGKbEDbGCbGDbEDcXobJrbmmbmmcXscXpcYdcXpcYebmmbmmbmmbwWbAEboIbANbrMboIbAObeCbeCbeCbeCbAPbeCbAPbeCbeCbeCbeCaYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabAQbARbARbARbARahbahbbARbARbATaaaaabaSdaUlaMEbFMbFJbFZbFYbFYbFYbFYbGabGbbBablQbnwbBbbnqbvsbvsbvsbGkbyobvsblMblMblMblMbrNbuabGnbBfblMbGRbGUbxbbBkbGYbywbBjbCubxbbyybzGbBnbzFbBnbBobBpbzJbBqbGZbHabzRbDobHgbDsbBubBvbBwbHjbBxbvXbBybHkbxqbBAbBzbBAbxqbHlbBBbvXbBCbHmbzYbzZbBDbAdbzYbBEbxvbBFbHobHsbHrbHubHtbHybHybHybHybHybHybHybHAbHybHybHybHybHybHybHybHybHybHybHybHAbHybHybHybHybHybHybHAbHybHybHybHtbHCbHHbHFbHPbHIbHIbHIbHIbHIbHIbHIbHIbHIbHIbHIbHQbHIbHIbHIbHIbHIbHIbHRbHTbHSbHVbHUdckcVtbjRcVVbzdbzmbjRcWhbmmbmmcWAcWvbjRcWEcWQbjRbnbblAbeCblCbnbblAbeCblCbnbblAbeCblCbnbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbCcaAibCebCbbCbbBZbASbARbATaSdaSdaSdbHWbIbbCfbCgbCfbCfbCfbCfbChbIebCjblQblQblQbIrbvsbwPbCmbCxbIsbvsbCobCpbCoblMblMblMblMbCqblMbxabnKbxbbCvbIzbBjbCzbDRbxbbyybzJbIGbzFbIKbIJbCEbzJbCFbDObyFbzRbDybHgbDsbCGbCCbBwbHjbCDbvXbCHbILbxqbCKbCJbCLbxqbINbIMbvXbCMbIQbIObCPbCQbCUbzYbCVbxvbCYbIRbAfbAgbAhbAibAkbCZbAkbDAbDbbDbbDbbITbDbbDbbDbaRybAkbAkbAkbAkbAkbDabAkbJbbAkbCZbAkbAkbAkbJcbJebJdbJhbJgbJlbJkbJmaSIaTHaSVbwvbwvbwvcXfbJpbwvbwvbwvbwvbwvbJqbwvbwvbwvbwvbwvbDrbDqcXhcXgcXjbJrbmmbGhbjRbwDbwCbxzbjRbGobmmbmmcXlcXkbjRbGNbGMbjRbqoblAbeCblCbqoblAbeCblCbqoblAbeCblCbqoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbDGbCbbCbbCbbCbbCbbCbbCbbCibDCaOQbDCaSfbJsbCfbDEbDJbDLbDKbDMbChbJubJtbIPbIPbJwbJvbvsbvsbvsbynbJxbymblQblQblQblQbDPbCkbCkbJybCkbJBbCkbFmbEibywbywbJDbywbxbbDUbzJbJEbzFbzEbBnbEfbDXbEjbDOcXqbxlbHpbJGbJHbJHbJHbJHbJIbEcbvXbvXbvXbvXbvXbvXbvXbvXbvXbvXbvXbxvbJNbJKbEhbEUbEsbEkbEvbxvbEwbJTbEnbEpbEpbEpbEpbEpbEpbEqbEybEpaTLbJYaTMbEpbNebEobEobEobEobEobEubEubEuaTNbEubEubEubEubEubEuaTObEubEubEubtebKabKbbwvbuxbuxbEAbEAbEAbEAbEAbEJbDqbDqbDrbDqbJqbDqbDqbDqbDqbEMbEDbEDbEDbEDcXnbJrbmmbAJbEFbjRbjRbjRbAKbALbmmbmmbAMbjRbjRbjRbqnbjRbicbzqbeCbeCbeCbeCbeCbeCbeCbeCbeCbeCbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCabCdbEKbClbELbELbELbELbELbARbERaSdaSdaSdaTobKdbCfbEYbEXbEXbEXbFcbChbnKbKfbESbETbETbKhbvsbwPbEWbynbKqbymbKtbKrbnwbKubKEbKybKybKGbFdbKHbnKbxbbFlbFpbFqbywbKQbFmbNsbyBbKIbFtbzEboxbFybvQbEjbDOcYPbxlbwebxlbJabFFbFIbKJbKKbxmbxmaaabFCbFDbFEbFNbFEbFPbFCaaabxvbxvbKMbKLbFKbFLbEsbzYdoBbxvbFUbKNbFWbEpaTTaTSaTVaTUaTYaTWaUPaUObLzbKObBLaVxaVIaVyaWOaWIaWSaWRbEuaYkaYoaYlaYraYqaZUaZTbobbbybuOaZTaZTbzibGrbGrbKRbGrbwLbwLbEAbGubGAbGwbEAbGBbGEbGBbEAbGFbKTbEMbEDbGKbGLbGKbEDbGCbGDbEDcXobJrbmmbmmcXscXpcYdcXpcYebmmbmmbmmbwWbAEboIbANbrMboIbAObeCbeCbeCbeCbAPbeCbAPbeCbeCbeCbeCaYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGPbARbARbARbARbARbARbARbARbERaaaaaaaSdbBgbmSbKUbCfbHdbCfbHebIHbHfbGQbChbKVbGSbGTbGVbKWbGWbGWbGWbGWbGWbGWbKXbGXbHvbHbbKYbxbbxbbxbbxbbxbbxbbxbbIwbFmbFmbFmbOIbMlbHcbAFbKZbBnbzEbBnbHnbDXbEjbDOcZjbxlbBebxlbxlbxlbxlbxmbLabxmaabaaabFCbLbbHBbHzbHDbLcbFCaaaaabbxvbLebHmbHwbHxbEsbLfbzYbxvbFUbKNbLgbEpbCWbBMbDfbDfbDfbDfbDfbDfbDfbLhbDhbDgbDjbDibSnbDlbDnbDmbEubEtbLjbExbLkaZTbEEaZTbFQbEIbuObFTbFXbFVbGrbIfbLlbIgbBmbBmbIabGcbIdbIdbImbIcbIlbInbEAbIibLnbIkbEDbItbPDbIvbIobIpbIybEDcYhbLobBcbBcbBcbLpbLrbLqcYkcYkcYkcYkcYnbqnbjRbjRbjRbjRbqpbjCbBWbBVbjCbBXaYUbBXaYUbBYbBRbBSbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjQaLdaSdaSdaSdaSdaSdaSdaSdaSdaSdbLsaSjbLCbCfbJjbIBbIIbIDbLJbLHbLUbLObKybKybMfbMdbDQbDQbDQbDQbDQbDQbDQbDQbDQbMgbMhbxbbIVbIUbIYbIXbISbIZbJfbMibxbbIWbJibUEbyCbDXbKZbMkbzEbKCbzJbzJbMnbMmbMubMsbMvbMvbMCbMBbxlbMDbMHbxmaabaaabFCbMIbHzbFEbHzbMKbFCaaaaabbxvbMNbMLbMPbMObMRbMQbMSbxvbMTbKNbFObEpbDcbBMbGdbDdbGfbGebGebLybDebLhbDebGtbGxbGvbSnbDlbGzbGybEubHEbHJbHGbHLbHKbHMaZTbFQbEIbuObFTbFXaZTbGrbHNbMVbMUbNbbMWbNfbNcbNhbNJbNJbNJbNJbNjbNlbNkbNnbNmbNqbNpbKibKibKibKibKjbEDcYpbNtcYwcYwcYwbNubNwbNvcYwcYwcYwcYxbBKbAEboIbrMbrMboIbDBdsldsldsldsnbicaaabicbDDbDwbDwbDFbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbGmbGlbKpaMdaMdaMdbmSaSfaSfbCfbKPbCfbKDbKsbNFbNBbCfblQbKvbKvbKwbKFbKwbKwbKwbKFbKwblQblQbxbbxbbxbbNHbxbbKzbKzbKzbKzbKzbNIbJfbKzbKBcrCbzFbNMbNPbNObNWbNVbNXbFxccYccZbKSbNYbOibNZbOjbOjbOobOlbxlbOqbOrbxmaabaaabFCbOsbHDbLibHBbOubFCaaaaabbLdbLdbOxbLdbLdbLdbLdbOybxvbOzbKNbFOchhbGibGgbGibEpbIhbGqbJAbIjbODbOBbOFbJPbJXbJWbOGbJZbKcbOUbEubEubEubEubEubKebKgaZTbFQbEIbOPbFTbFXaZTbGrbLNbLEbLPbLmbOSbLIbLTbPabLLbLMbIdbPbbKkbEAbPdbPibKnbEDbKobPlbKxbIpbLWbNCbEDcYhbPqcYObjRcZkbxXbPuboDcZmbjRcZnbuHcZobqnbjRbjRbjRbjRaYUdsqdsldslbEObicaaabicbEPbDwbDwbEQbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbLYbLXbKpbLZbLZbMabMbbLZbMcbCfbMebIBbNSbPwbPHbPCbCfaaaaabaabbMpbMobMobMobMobMobMraaaaaabKBbPYbPXbQcbMqbKzbKzbKzbKzbKzbKAbMwbQgbMzbMybQmbQjbMxbDXbzJbzJbMFbMAbzJbzJbMJbQncdIbMEbMMbMGbMGbMGbMGbQobQpbMGaabaaabFCbQqbQsbQrbJnbQtbFCaaaaabbLdbQvbQubQzbQybQDbOKbQMbONbRfbQObRgchhbJFbJCbJJbIqbJLbDebLvbLubHObLAbLBbEobEobLDbLFbDlbLQbLKbLVbLSbMYbMXbLKbMZbNdbNabFTbEIbRhbFTbEIaZTbGrbNgbHXbRibRrbRjbNEbNibRybRsbRFbRzbRObNNbEAbRPbRTbRQbEDbMjbRXbMtbRYbIpbNUbEDcZpbPqcZDbAKcZkbSabPubSccZmbAKcZIcZHcZJbEGaaaaaaaaaaaabicdsudswdsvdsvbicaaabicbGObDwbGObDwbicaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbKpbKpbObaSdaSdbjQaLdaSdaSdbCfbOdbIBbIBbIBbCfbCfbCfaaaaaaaaabOebOcbOcbOfbOcbOcbOeaaaaaabKBbNQbSebSgbOhbOhbSjbOhbOhbOkbSmbOhbOhbOnbOmbOpbSpbSMbSKbzJbOtbBnbFAbSQbDXbOwbSTbSUbMEbMEbMGbOAbTcbOCbTdbTfbMGaaaaaabFCbOEbOHbTibOObOMbFCaaaaaabLdbTBbTjbOJbOKbOLbOKbTFbONbTGbKNbTHchhbTIbLwbTLdeqbTMbLxbTQbNobHObLAbNrbEobNDbNAbNGbTTbNLbNKbORbTUbOVbOTbLKbOWaZTbOXbFQbEIbOYbFTbFXbFVbGrbOZbLEbLPbUlbTWbNEbPnbPobTXbPpbIdbUebPybPsbPtbLnbUhbEDbPzbUjbUibUkbPBbPJbEDcZpbPqcYObjRcZkbmmbPubmmcZmbjRcZnbmmcZKbEGaaaaaaaaaaaabIAbjJbIubIubIubICaaabIEbIxbIxbIxbjJbIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbPIbPIbPIbPNbPMbPIbPIbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbOebPTbKBbKBbNRbPObKzbHhbHhbHhbPObKzceEbPPbKzbKzbKBbPZbPSbUmbUnbPVbQebHibBnbUobUpbDXbOwbSTbQhbHqbJObQibQkbUqbQlbUrbUsbMGaaaaaabFCbUtbUwbUvbUzbUybFCaaaaaabLdbUDbUBbQwbOKbQxbOKbQMbONbUGbKNbULbPcbPebLtbPfbEpbPgbNybDebPhbHObLAbPmbEobPGbPFbQabPKbQAbNKbQCbQBbQEbUMbLKbFXaZTbQFbQHbQGbQIbNdbQJbNdbQLbQKbQKbQKbQNbUNbIabRkbPobPobRlbIdbUebRmbEAbOvbUPbUObEDbRpbUQbRqbURbIpbREbEDcZTbUScYkcZVdaacYkbUTdakbmmdambmmdandaqbEGaaaaaaaaaaaaaaabIAbKmbKmbKmbIFaaabIAbKmbKmbKmbIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdbKpbKpbObaSdaSdbjQaLdaSdaSdbCfbOdbIBbIBbIBbCfbCfbCfaaaaaaaaabOebOcbOcbOfbOcbOcbOeaaaaaabKBbNQbSebSgbOhbOhbSjbOhbOhbOkbSmbOhbOhbOnbOmbOpbSpbSMbSKbzJbOtbBnbFAbSQbDXbOwbSTbSUbMEbMEbMGbOAbTcbOCbTdbTfbMGaaaaaabFCbOEbOHbTibOObOMbFCaaaaaabLdbTBbTjbOJbOKbOLbOKbTFbONbTGbKNbTHchhbTIbLwbTLdeqbTMbLxbTQbNobHObLAbNrbEobNDbNAbNGbTTbDHbNKbORbTUbOVbOTbLKbOWaZTbOXbFQbEIbOYbFTbFXbFVbGrbOZbLEbLPbUlbTWbNEbPnbPobTXbPpbIdbUebPybPsbPtbLnbUhbEDbPzbUjbUibUkbPBbPJbEDcZpbPqcYObjRcZkbmmbPubmmcZmbjRcZnbmmcZKbEGaaaaaaaaaaaabIAbjJbIubIubIubICaaabIEbIxbIxbIxbjJbIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbPIbPIbPIbPNbPMbPIbPIbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbOebPTbKBbKBbNRbPObKzbHhbHhbHhbPObKzceEbPPbKzbKzbKBbPZbPSbUmbUnbPVbQebHibBnbUobUpbDXbOwbSTbQhbHqbJObQibQkbUqbQlbUrbUsbMGaaaaaabFCbUtbUwbUvbUzbUybFCaaaaaabLdbUDbUBbQwbOKbQxbOKbQMbONbUGbKNbULbPcbPebLtbPfbEpbPgbNybDebPhbHObLAbPmbEobPGbPFbQabPKbQAbNKbQCbQBbQEbNLbLKbFXaZTbQFbQHbQGbQIbNdbQJbNdbQLbQKbQKbQKbQNbUNbIabRkbPobPobRlbIdbUebRmbEAbOvbUPbUObEDbRpbUQbRqbURbIpbREbEDcZTbUScYkcZVdaacYkbUTdakbmmdambmmdandaqbEGaaaaaaaaaaaaaaabIAbKmbKmbKmbIFaaabIAbKmbKmbKmbIFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbRubRvbRwbRxbRGbRHbRAbRGbRBbRCbRDbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbRJbRIbRKbRIbRSbRRbRRbRRbRRbRRbRRbPQbJfbPPbRLbxbbxbbRMbBnbzFbQdbRNbDXbUUbBnbUVbUXbUWbUZbUYbRZbRVbQbbSbbSdbVabVcbVbbVdbMGaabaaabFCbSfbShbVjbSlbSkbFCaaaaaabSibSibSibSibSibSibSibVqbSibVwbKNbVxchhbQQbQPbQQbEpbQSbQRbSsbSqbHObLAbNzbQTbQWbQUbQZbQYbRabLKbQCbRbbOVbRcbLKbWdbWdbWdbRebRdbEubEubEubEubGrbJobHXbVzbVCbVAbIabSWbIdbIdbVDbIdbUebSYbTabSZbVFbVEbTbbTgbTebTebVGbTebEDbEDbEGbVHbEFbEFbigdatbVIdatbigaYSaYSaYSaYSaYSaYSdaCdaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbRAbRAbRAbTlbRGbTnbTnbRGbTobRAbRAbTpbWLbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebOcbOcbOcbOcbOcbTtbTrbTqbTrbNTbKzbKzbHhbHhbHhbKzbKzbJfbPPbQfbRobxbbTAbVKbVJbVsbTvbDXbUUbBnbVLbBnbPWbOwbSTbTzbRVbQbbTCbTEbTDbTKbVMbVNbMGbTJbTJbTJbTJbTNbVObTPbFCbFCaaaaaabSibVPbTObTSbTRbTVdglbVRbSibVTbVSbWbbQVbSobRtbSrbEpbIqbStbIqbEpbPvbPrbPxbOUbOUbSwbSybSxbOQbLKbNKbSzbSAbLKbLKbWdbSCbSBbSEbSDbWgbSFbSHbSGbGraZSbpDbSIbRUbRUbIabSJcrHbUFbIabWebUebUHbIabUKbWlbWkbWpbWnbWnbWqbWrbqbbRnbtscjTbWvcOCbKlbigbaNbWRbaObaGbaTbaQbaRbaHbaTbaUbaVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIbVebVfbVgbVhbVibRGbVkbRAbVlbRAbRAbRAbRAbRAbTlbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabOebVmbOcbOcbOcbVnbOebPTbKBbKBbOgbWVbXdbXdbXdbXebXdbXdbXgbXfbQfbRWbxbbVrbBnbzFbXhbUXbXibUXbXkbXjbVtbDXbOwbSTbTzbRVbQbbMGbVubVvbVybXpbXqbMGbVBbXrbXtbTJbFCbXubFCbFCaaaaaaaaabSibXxbXwbXzbXybXXbXCbXZbXYbYbbYabYcbSubSObSNbSPbSvbYdbSLcrAcrAbSRbYecrAbSSbwFbXAbSXbRtbYfbThbXAbJRcuobJSbTZbTYbYgbUabUcbUbbWgbUdbUfbUdbWibWibWjbWjbWjbWjbIabIabIabIabIabLIbYlbLIbIabUKbYmcbnbLRbLRbLRbOabLRctvbPkbPjcacbYnbGGdaSbigdaZbYpbYobYqbaTbaTbaTbaTbaTbaUbaVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9137,17 +9131,17 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPIbPIbPIbPIbPIbPIbRGbTobRAcbzbRAcbxcbycbAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbDcbBbOccbCbOccbEcbFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbGaabaaaaaaaaaaaacamcbIcbHcbKcbJbYMcdQcbLcdRcbRbYMbOwbSTbTzbTycdTcdScdVcdUcdJcdXcdZcdYcescfvceucetcewcevceycexceBceAceDceCceFcclccmbEnccnbFOccobFOceGbKNbXBbQVceHcaAcaAbXDbXDcaAbXFbXEbZhbXHbZibXIbWabXKbXMbXLbXMbXObWabXPbWAbXRbWdbXSbXUbXTbXSbXSbWibXVbXWbXQbYkcbdccTceIccVccUceJccWcdbcbfceLceKchTcbjcbjceMceNcddcdfbPEceOcdgcdiceQcdkbYjdsmdfcbZZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPLbPIcdlcdmcdpcdlcdobRGbRAbRAbRGbRAcdrcdqcdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacdvcdtcducducducdtcdwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacamcdycdxcdAcdzbYLcfdcdDcfecdEbYMcfjcfhcfqcfmcfmcfscfucftcfTcfxcgecgbcgicghcgjcgjcglcgkcgmcgjcgjcgncgjcgjcgjcfxcgpcgocgIcgrcgrcgrcgKcgJbFOchfckScaAbZjbYsbYsbXJbZhbZkcgLbZlcgMbZmbZpbZocgObZqcgRbZsbZvbZubWAcuvchrbZwbZybZxbZAbZzbZBccQbXWbXQbZBcbdcezcgTchbchachvchgchwcbfchIceKcjNcjNcbjchMchOchNchQchPchSchRchWchVceSbYjcFccLhbGpdbPdbPdbPdbZdbXdbXdcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabWObWGceRceRceRceRceRceTbRAbRAbRGbPIbPIbPIbPIbPIbPIbPRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceVceUceUceUceWaaaaaaaaaaaaaaaaaaaaaceXceZceYceZcfaaaaaaaaaacamcamcamcffchXciscfcbYLciucbMcivcfgbYMbOwbNxciycficflcfkciLciCciOciMcjbciScjicjhcdNcdNcjkcjjcfvcfvcfvcfvcfvcfvcjlcfycfzcfBcjncjmcjpcjocjrbFObFOchfcjscaAcazcjtcjucaEcaEcaDcaGcaFcaIcaHcaKcaJcaMcaLcaOcaNbZvcaPcaQcuvbZzcaRcaTcjFcaVcaUcaXcaWcaZcaYcaXcbdcgccjHcjJcgdcjKcgfcggcbfcjMcjLcjNcjNcbjbUKceNcbnbYjcjOcjQcjPcjScgqcgvbYjdsocgscgtcgscgucgycgucgucgudccaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabaaaaaaaaaaaaaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubWGceRceRceRcgwcgxbRGbRAbRAbRGbRAbRAbRAcgzbRAcgAbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgFcgBcgCcgDcgFbYPbYPbYPcamcgHcgGcfbcfbckqcjUcgNckxckHckGcgPbYMbTkcgQckIcgScgScgUckNcgVcgScgWcgWcgYckPcgZcgWcgWckRckQcclchechcchcchcchcckTchcchcchfclachfchfchfchfchfchfchfckScbtbWXbYCcckccaccsccqccucctccwccvbWaccxcczccyccBccAccDccCccEcuvccGccFclbccHccJchrbWibWgbWgbWgbWicbdcbdcbdcbdcbfcbfcbfcbfcbfchUclgclqclqcbjcljclnbTwbYjbYjbYjbYjbYjbYjbYjbYjcFccgscifchYchZciaciacibcguaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcicciccicciccidcidcieciecieciecijaabaabaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabYubWGceRceRceRcgwcgxbRGbRAbRAbRGbRAbRAbRAcgzbRAcgAbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgFcgBcgCcgDcgFbYPbYPbYPcamcgHcgGcfbcfbckqcjUcgNckxckHckGcgPbYMbTkcgQckIcgScgScgUckNcgVcgScgWcgWcgYckPcgZcgWcgWckRckQcclchechcchcchcchcckTchcchcchfclachfchfchfchfchfchfchfckScbtbWXbYCbUMccaccsccqccucctccwccvbWaccxcczccyccBccAccDccCccEcuvccGccFclbccHccJchrbWibWgbWgbWgbWicbdcbdcbdcbdcbfcbfcbfcbfcbfchUclgclqclqcbjcljclnbTwbYjbYjbYjbYjbYjbYjbYjbYjcFccgscifchYchZciaciacibcguaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcicciccicciccidcidcieciecieciecijaabaabaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIcigceRceRcihciibRGbRAbRAcikbRAbRAbRAciobRAcilbRGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceYcimcincimceYbYPcipciqcamcitcfbcircfbclsclrbYMclvciwcixcizbYMcgQcgQclycgSciAciBccKciDciHcgWccLciGclLciIciKcgWclOclNciNchcccOccNccRclPclQcdebYFbYQclSchfceacdWceccebchfcedckScaAcaAcaAcaAcaAcaAcaAcefceecegcaAcDfcDfcDfcDfcDfcDfcDfcDfceicehccGcejcelcekcencemcepceocerceqclpclTclUcjGcjIcjGcjGcjGclpcbjclXclWcmPcmScbjclYcmicbnbPtbGGcmxcmkcmBcmBcmkcmBcmFcgscjVcjWchZciackecjXcguaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciccjZckacjZcidciecieckbckcckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIckdceRceRckfbRGbRAbRAbRGckgbRAbRAckjckhbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgFckicimcimckkcklcfbcfbckmckncfbcfbcfbcmIckobYMbYMbYMbYMbYMbYMckpcgQclycgSclRcktcmKcktckucgWckvckwcmMckwcePcgWcmQcmOcfnchccfpcfocmTcmRcnrcmUchcchfcPdchfcebcebcfrcebchfcsLckSchfcfwbUucfCcfAcfEcfDcfGcfFcfIcfHcfKcfJcfMcfLcDfcfNcfPcfOcfRcfQcIxcfScfVcfUcfXcfWcepcfYcgacfZclpcntcjGcjGclmclocjGcltclpcbjcnvceKcmVcmVcbjbUKcnycbnbPtcgsdsxcgscgscgscgscgscgscgscluclwcguclxclzcnEcguafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOclBcjZcjZclAciecieckbckbclHckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIclCclDclEbRGbRAclFbRGclGclIbRAbPIbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceYcincincinceYbYPclJclMclKckncnGcnScnScnUcnTcogcnXcnXcnXcohcgQcgQcgQclycgScolcokcomcktclVcgWckvckwcooconcopcgWckOcoqclZchccmccmacmbcmecorcgXchcchdcoschfchfchichfchfchfcsLckSchfchkchjchmchlcfEchncfGcfFchocfHchqchpchtchscDfchucotcDfchxcouchzchychBchAchEchDcepchFcgachGclpcovcoxcowcowcowcozcoyclpcbjcoBcoAcmVcmVcbjcoCcoDcbnbPtcojdszdsycgscmWcmYcmXcnbcmZcnacnfcgucnccndcnecgucgscgscgscgEcgEcgEcgEcgEaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaacnkcieclBciecieckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIckdceRceRckfbRGbRAbRAbRGckgbRAbRAckjckhbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacgFckicimcimckkcklcfbcfbckmckncfbcfbcfbcmIckobYMbYMbYMbYMbYMbYMckpcgQclycgSclRcktcmKcktckucgWckvckwcmMckwcePcgWcmQcmOcfnchccfpcfocmTcmRcnrcmUchcchfcPdchfcebcebcfrcebchfcsLckSchfcfwbUucckcfAcfEcfDcfGcfFcfIcfHcfKcfCcfMcfLcDfcfNcfPcfOcfRcfQcIxcfScfVcfUcfXcfWcepcfYcgacfZclpcntcjGcjGclmclocjGcltclpcbjcnvceKcmVcmVcbjbUKcnycbnbPtcgsdsxcgscgscgscgscgscgscgscluclwcguclxclzcnEcguafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOafOclBcjZcjZclAciecieckbckbclHckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIclCclDclEbRGbRAclFbRGclGclIbRAbPIbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceYcincincinceYbYPclJclMclKckncnGcnScnScnUcnTcogcnXcnXcnXcohcgQcgQcgQclycgScolcokcomcktclVcgWckvckwcooconcopcgWckOcoqclZchccmccmacmbcmecorcgXchcchdcoschfchfchichfchfchfcsLckSchfchkchjchmchlcfEchncfGcfFchocfHchqchpchtchscDfcfJcotcDfchxcouchzchychBchAchEchDcepchFcgachGclpcovcoxcowcowcowcozcoyclpcbjcoBcoAcmVcmVcbjcoCcoDcbnbPtcojdszdsycgscmWcmYcmXcnbcmZcnacnfcgucnccndcnecgucgscgscgscgEcgEcgEcgEcgEaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaacnkcieclBciecieckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaebPIbPIbPIbPIbPIbPIbPIbPIbPIbPIbYvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabafOcgQcngcngcgQcngcngcgQaaaaaacgFcnhcnicnjcgFbYPbYPbYPcamcnmcnlcnocnocnocamcamcgQcnncnpcoEcnqcgQcnscoFcgSclRcktcoMcoHcoTcgWcoVcoUcoWcnuchHcgWcpicpgcnAchcchcchcchcchccpmchcchccnCcPdcsLcsLcsLchfcABchJcsLckSchfchLchKciEcpncfEciFcfGcfFcfIcfHcpociJciQciPcDfciRcppcDfciUbSVchrciVciXciWchrchrcepciYcjaciZclpcpqcodcoicoicoicodcodcodcodchIceKcmVcmVcbjcprcpucptcpDcpvcpTcpGcpZcpXcqbcqacqdcqccqkcqecqgcqfcqicqhcqlcqjcqocqmcgEcqpcqqcoGcoIaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaacidciecbwcbScbSckbckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaacgQcoKcoLcgQcoKcoLcgQaaaaaacoOceZcoNceZcoQaaaaabaaacamcamcamcamcamcamcamcoPcgQcoScoRcqscqrcnXcqtcqucgScoYcoXcpfcktcjccgWcjdckwcjfcjecjgcgWckOcqvcqycqwcqDcqDcqDcqDcqUcqPcqWcqVcqYcqXcqXcqZcFpcracrbcqDcrcchfcjwcrecjycjxcjAcjzcjCcjBcjCcjDckrcjEcrfcksckzckyckAcDfckBcuvckCcjvckDcmDckFckEciYckJckLcgacpRcrgcpRcpUcpWcpVcpRcrhcpYcodcrjcrichTcbjcbjceMcrocrnbPtcrqdszcrscgscrxcrBcrzcqncrGcqacrIcrIcrJcqbcrJcrKcrIcrIcrNcrScrQcrTcqxcqCaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaacieciecdHckbckbckbckbckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafOaaaafOcgQcqzcoLcgQcqzcoLcgQaaaaaaaabaabaabaabaabaabaabaabaabcgQcoLcqAcqBcgQcqEcqGcgQcqHcgQcgQcqFcgQcgQclycgScqRcqIcqJcqKcqLcgWckMcqOcqScqQcqTcgWckOcrUcrVcJZcsDcsDcsDcsDcsDcrdcsDchfchichfcuccrXcsLckScmJcsLcsKchfckVckUckXckWcCWckYcrYckZcrZcDfcldclcclfclecDfcDfcDfcDfclhcsackCchCcsbclicllclkciYcmdcgacmfcpRcsdcsfcrLcrMcrLcsAcsvcrPcodcbjcsBcbjcbjcrRcsFcsHbLRbPtcgsdsxcgscgscrWcsMcsJcsRcsPcsTcsgcsgcsecsVcsecsgcshcsgcsicgEcsncrwcsqcsraabaabaabaabaabaabaabaabaaaaaaaaaaaaaaacieckbckbckbckbckbckbcdKckbcmzckbckbckbckbckbciecieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcsjafOaabaMraMrafOcgQcgQcqFcgQcgQcqFcgQcgQcgQcngcngcngcgQcgQcgQcgQcgQcgQcgQcoLcskcslcgQcsmcgQcgQcsucgQcsocspcoLcgQcticgScsycsxcszclRcmgcgWcswckvcsEcsCcmhcgWcsIctjctlcsDcsDcsNcsOcsGcmjcsQcsDcsKcsLcsUchfcttcsLckScmJchfchfchfcCWcCWcmlcCWcCWcxhcnwcmmcxhcDfcDfcDfcDfcDfcDfcmncmpcmocmrcmqcmtcmscmvcmuctzcmwciYcgacgaaqEcpRctActxctwctyctwctBcrOcrLctuctvbYmbLRctCbLRbLRcnybLRbIictFctHctGcgscgscgscgscgsctIctoctKctDcsccrBctEcqkclucqkctLcgEctOctQctPcgEaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaciecmCcmCcmCcmCcmCcmCcmEckbcoJcmCcmzckbckbckbckbcieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabafOafOcngcoLcoLcoLcoLctMctNcoLcoLcoSctUctUctVctUctUctUctUctUctUctUctUctUctUctUctUcoRcgQcskcqzctWcgQctictRctRctRctRctRctRcgWcgWcgWcgWcgWcgWcgWcuactScuectXcutcukctYctYctYcuicsDcmHcsLcubcuccuucsLckScmJchicsLcsLcsKcCWcmLcuzcmNcCWcHWcnxcnBcnzcuBcnDcuGcnFcnIcnHcnKcnJcnMcnLckCcnNcnPcnOcnRcnQciYbQXcgacgacpRcuJcuLcuKcuMcuKcuOcuNcuScuRcuXcuVcvFcvFcvGcvFcvHbLRbIibPAcAScuYcuPcuQbGGbGGcgscvccvecuTcuUcvfcuWcvgcvicuZcvacvbcgEcvjdoKdoFcvraaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaacvscjZcjZcjZcjZcjZcjZcjZcvhcvtckbckbckbckbcvvckccieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabafOafOcngcoLcoLcoLcoLctMctNcoLcoLcoSctUctUctVctUctUctUctUctUctUctUctUctUctUctUctUcoRcgQcskcqzctWcgQctictRctRctRctRctRctRcgWcgWcgWcgWcgWcgWcgWcuactScuectXcutcukctYctYctYcuicsDcmHcsLcubcuccuucsLckScmJchicsLcsLcsKcCWcmLcuzchucCWcHWcnxcnBcnzcuBcnDcuGcnFcnIcnHcnKcnJcnMcnLckCcnNcnPcnOcnRcnQciYbQXcgacgacpRcuJcuLcuKcuMcuKcuOcuNcuScuRcuXcuVcvFcvFcvGcvFcvHbLRbIibPAcAScuYcuPcuQbGGbGGcgscvccvecuTcuUcvfcuWcvgcvicuZcvacvbcgEcvjdoKdoFcvraaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaacvscjZcjZcjZcjZcjZcjZcjZcvhcvtckbckbckbckbcvvckccieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabafOaabaabafOcngcvkcvlcvmcoLcoLcvncoLcoLcsucgQcgQcgQcgQcgQcgQcqFcgQcgQcgQcgQcvocvocvocvocvocvocvocvocvocgQcticvpaaaaaaaaaaaacvqcvwcvzcvycvucvAcvDcvxcmQcvJcvKcvBcvCcvLcvEcvEcvEcvMcvIcvIcvIcvIcvIcvNcvIckScmJchfcnVcKOdercCWcvScnWcnZcnYcobcoacoccoccofcoecpacoZcpccpbcpecpdcphciTciYciYciYciYciYciYciYciYcpkcpjcpRcwjcplcwqcwlcvTcrLcwmcpRcpRbIibIibIibIibIicwocwtcwpbIibGGcAScwKcwucuQcuQcuQcgscgscgscgscgscgscgscgscgscgscgscgscgEcgEcgEcgEcgEaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaciecbScbScbScbScbScbScssckbcbwcbScstckbckbckbckbcieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcgQcwxcwxcwxcwxcwxcwxcwycwxcsucwzcgQcoLcwAcwBcwCcoLcwCcwDcwEcwBcvocwFcwFcvocwGcvocwHcwIcvocoLclycngaaacwPcwUcwQcwVcwNcwOcwWcwOcwOcwvcvxcwJcwwcwLctJcxdcwMcxfcxecwRcxgcvIcxkcxmcxmcxmcwScvIckScmJchfdgmcQkcQkcQkcQkcpwcpxcQkcpycpycpycpycQkcpzcpBcpAcQkcQncQncpCcwXcwTcwZcwYcwYcxacwYcwYcwYcwYcxbcpFcpRcpRcpRcpRcxccpRcpRcpRcxIcpHcpIcxicxUcxMcxNcxNcxjcxNcxNbGGcAScylbGGbGGcxScxZcyactFbGGbGGbGGbGGbGGbGGbGGcxVcymbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacieckbckbckbckbckbckbcdKckbcstckbckbckbckbckbciecieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcgQcwxcwxcwxcwxcwxcwxcwycwxcsucwzcgQcoLcwAcwBcwCcoLcwCcwDcwEcwBcvocwFcwFcvocwGcvocwHcwIcvocoLclycngaaacwPcwUcwQcwVcwNcwOcwWcwOcwOcwvcvxcwJcwwcwLctJcxdcwMcxfcxecwRcxgcvIcxkcxmcxmcxmcwScvIckScmJchfdgmcQkcQkcQkcQkcpwcpxcQkcpycpycpycpycQkcmNcpBcpAcQkcQncQncpCcwXcwTcwZcwYcwYcxacwYcwYcwYcwYcxbcpFcpRcpRcpRcpRcxccpRcpRcpRcxIcpHcpIcxicxUcxMcxNcxNcxjcxNcxNbGGcAScylbGGbGGcxScxZcyactFbGGbGGbGGbGGbGGbGGbGGcxVcymbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacieckbckbckbckbckbckbcdKckbcstckbckbckbckbckbciecieaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacxXcxYcxYcxYcxYcxYcxYcyocyncybcyccydcyecyfcwycsucygcgQcoLcoLcwBcoLcoLcoLcwDcqBcwBcvocwFcyicwIcwIcyjcwIcykcvocypclycngaaacyrcytcyscyvcyqcwOcywcyAcyycxocvxckOcrUcrVcvBcyxcxqcxvcxrcyzcyGcxzcyHcyDcyDcyDcxAcvIckScmJchfcQkcQkcpKcpJcQkcQkcQkcQkcpMcpLcpOcpNcQkcQkcpPcQkcQkcTBdgmbQVcpScuvcqMcqMcqMcqMcqMcqMcHfbQXcxJcxDcxDcxDcxDcxKcxQcxOcxOcxRcxOcxOcxOcxTcxTcxTcyucxWcyCcyBcyEcmBcyIcyFcyRcyRcyTcyRcyRcyRcyRczcczecyRcyRcyRcyRczLbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacieciecdHckbckbckbckbckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczEczFczFczFczFczPczHczQczJczKczKczRcwxcsucoLcqFcoLcoLcoLcoLcoLcoLcoLcoLcoLcvocvocwIczMcwIcvocwIczMcvoczNcticngaaacyrczTczSczVczUcznczmczwczvczyczxczAczzcnAcsDcsDczBczCctYcAhcAgcxzcyDcyDcyDcyDczDcvIcrkcmJcrlcQkcrmcxHczGcUTcrpcrrczIcrtczOcrvcrucQnczWctecrycQkczXcFpczYczZcuvcrEcuwcuAcrFcvUcqMcqMbUxcAbcAabQXbQXbQXbQXbQXcAccAecAdcpHcepcepcBQcBQcBPcBRcAfcAicAfcAPcAPcAQcAZcAPcAPcAPcAPcAPcAPcAPcAPcAPcAPcAPcAPbGGcBecAUbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacnkcieciecmCcmCckbckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacBicBgcAXcBjcAXcBmcBacBbcBccBdcBncwxcsucgQcgQcBfcngcngcngcngcngcngcngcBocvocwIcwIcwIcwIcBhcwIcwIcvocygclycngaaacyrcBrcBqcBkcBlcAjcBscBucBtcBpcvxcpicAkcHDcBvcsDcAlcsDcvBcvBcvBcvIcyDcAncyDcApcAocvIckScmJcsLcQkcsScArcAqcsXcsWcsZcsYctbctactdctcctfctgcthcuqcQkcmJcJGbQVcAtcAscvXctkctnctmctpcwncqMctqctrcfZcepcepcepcepcepctsctsctscepcepaaaaaaaaaaaacBRcBScAGcADcAPcCdcCfcCecCgcBZcChcCbcCccCicCkcCjcCmcClcCncAPbGGcCocCrcCpcCscCscCscCscCscCscCscCscCscCscCscCscCscCscCscCscCscCscCvcCucieclBcieckbckbckbckbckbckbckbciecieaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9160,55 +9154,55 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJUcJScEWcEWcEWcEWcJYcEYcEYcEYcEYcKacEYcJVcJVcJVcJWcHCcKdcEYcJZcHEcKbcKbcHFcKbctTcKbcKbcKecKfcKbcKbcKfcKfcKfcKbcKbcKbcKbcKkcHHcHLcHKcHOcHMcHRcHPcHXcHVcHXcIgcHXcIhcIicKrcIpcKzcGKczdcIvcsLczfcsLcYiczgcuccTBcKOcyZcQkcQkcQkcQkcQkcQkcQkcQkcsLcIzchfczhczjcziczkchfczlchfchfchfchfchfctrbQXcepaaaaaaaaaaaaaaacepcKPcKQcKRcKWcIUcKYcIAcxNcIBcINcILcxNcJKcKZcLacBRaabaabcLbcLkcLjcLecLlcLgcLbbGGbGGcaccLhbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalwalvalvalwalvalvaabamhaabayiaaaayiayicLicJncLmcLmcLmcLpcLocEYbTmcLrcGhcLtcLscLucEYcLycIPcKfcJxcIQcLxcLzcLBcLAcLCcLDcLEcKbcLDcLGcLFcJxcJxcLHcKbcLLcIRcHJcIScHDcLTcLMcITdcjcIVcjRcIWdcjcIXcJacIYcJbcMacGKcGKcJccsLcnVcsLcYicsLcuEcsLcsLctZcsLcsLcsLcKOctZczocsLcyJcsLcmJcBQcsLczqczpczrcyJczschfcztchfczuchfcJdbQXcepaaaaaacepcepcepcepcJKcMgcJKcMlcJrcEHcVfcxNcxNcJecxNcxNcJKcJKcMkcBRaabaaacLbcMucMmcLecLecMncLbcMpbGGcacbKlcMsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaaaaabaabaaaaabaabaaaaaaaabaabaabaabaabcLicLicMqcLicLicMrcMvcEYcEYcEYcEYcEYcEYcEYcEYcLicIPcKfcLIcJfcMtcMtcMtcMtcMtcMwcMzcMDcJxcMxcJgcJicJhcJicJjcJlcJkcHIcJmcHDcMLcHQcJodcjdcBcHSdcEdcjcJqcJycMNcJEcJDcJHcJFcJNcAmcKccAmcKgcAmcAmcKhcjqcjqcKicjqcjqcjqcjqcjqcKlcKjcKncKmcBQcAvcAvcAwcAycAxcAzchfcAAcAvcACchfcKocsLcBPcepcepcepbQXcAEcepcJKcJKcJKcNmcJJcNocKqcKxcKtcKIcKycxNcNtcNycNxcBRaaaaaacLbcNzcLecNucLecNvcLbbGGbGGcaccMsbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhnaaaalwaaacNFcMBcNMaaacNFcMBcNMaaacNFcMBcNMaaaaaacLicNAcNBcNCcLicNDcNNcLmcLmcLmcLmcLmcLmcLmcLmcLmcKJcKfcNGcKKcMycMCcJxcJxcJxcMEcJxcNGcNGcJxcJxcJxcJxcNwcNKcMGcHGcHDcKLcnAcHQcHQcKUdcjcNOcNPcNQdcjcKXcGKcJMcLJcLwcLKcGKcsKcsLcNYcsLcAIdfMdfMcLNcLOcLOcLOcLOcLOcLPcLOcLOcLOcLOcLWcLUcMicLXcMocMocMAcFpcFpcMFcMHcMHcLXcMFcMOcsLcsLcBGcBHciYbQXcBIcepcxNcxNcxNcxNcKpcEHcMPcNocNocMScMRcxNcKscKVcKTcBRaaaaaacLbcOvcOucMTcLecODcLbcOCbGGcacbGHaabaabaabaabaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaacNFcNEcNMaaacNFcNEcNMaaacNFcNEcNMaaaayicLicNBcNBcNBcLicLicOwcOxcLicLicOxcOxcLicLicOxcOxcIPcKfcNGcNHcJxcJxcNJcNZcNZcMxcJxcNGcOGcJxcJxcJxcJxcNGcMUcMGcHGcHDcOKcMVcOLcOYcMWdcjcNOcOZcONdcjcMXcGKcGKcGKcGKcMYcGKcZScOTcOUcOTcOWcOTcOTcOTcOTcOTcBKcBPcBPcBPcBPcBPcBPcBPcNbcnVcBQcsLcBOcBMcBTcsLcsLchfcBWcBVcBXchfcNncNicNqcNpcDgciYbQXcDhcepcKPcKQcKRcPmcLccNocTKcEHcEHcNscNrcNLcNIcPpcPtcBRaaaaaacLbcLbcPycPAcPzcLbcLbbGHbGGcNRcuQcuQcuQbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaayiaabcNFcNEcNMaaacNFcNEcNMaabcNFcNEcNMaaaaabcLicMrcPucNDcLiaaaaabaaaaaaaaaaaaaaaaabaaaaaacOxcIPcKbcOzcJxcJxcJxcOBcLfcLdcLfcLncLfcOEcOQcLDcPvcNGcNGcNKcPLcNScwLcNTcOccNUcOfcOecHTcNOcOhcONdcjcOlcZScPUcPUaPdcDjcDicQdcPZcQfcDkcQhcQgcDlcQicQocQmcQpcQpcQpcQpcQpcQpcPwcBPcNbcsLcDmchfchfcBQcBQchfcDnchfchfchfchfchfciYcDobQXcOmbQXciYcDpbQXcepcJKcKZcJKcQxcJrcEHcQzcOocOncOpcEHcEHcQtcEHcQBcBRaaaaabaabcLbcLbcQvcLbcLbaaabGHbGGcaccuQcQwcQCbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaacNFcNEcNMaabcNFcNEcNMaaacNFcNEcNMaabaaacLicLicOxcLicLiaaaaabaabaaaaabaaaaabaabaaaaaacQycOqcKbcLqcLvcLvcOrcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcJZcOscJZcJZcJZcFacOycOtbHYcQNcQNcQNcyhcQNcZScQLcQMcSdcErcSdcQQcPZcOHcOAcQTcOIcOJcRacRdcRcaabcQZcQZcQZcQZcQZcPxcBPcOMcsLcMfcsLcyJcyJcsLcsLcsLchfcEpchfcsKcEqciYciYciYcOmbQXciYciYciYcepcJKcJKcJKcRDcLQcNocRHcOPcOOcORcEHcEHcOScEHcRxcBRaabaabaaaaaaaaacRyaaaaaaaaabGHbGGcaccuQbGGbGGbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvayiaaacNFcNEcNMaabcNFcNEcNMaaacNFcNEcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcRzcRAcRAcRAcRAcQycRBcIPcRCcRKcREcREcOVcKbcPbcOXcOXcOXcOXcOXcPhcOXcOXcOXcPjcPjcOXcPlcRRcRRcRRcRRcPocPncTecSabHZcRXcRXcPqcZScPrcSbbjicErcSdcSecPZcPBcPscSmcPDcPEcSocSrcSqcQpcSncSucSscSwcQZcPxcBQcOMcsLchfcExchfcEycEAcEzcyJchfcECcEBcsLcsLciYcEDcgacOmbQXciYcEFcEEcepcxNcxNcxNcxNcLRcEHcQzcPJcPFcPKcSHcSHcSHcSHdnYdoacSKaabaaaaaaaaaaaaaaaaaaaaabGHbGGcNRbGGbGGcSLbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaabcPCaabaabaabcPCaabaaaaabcPCaabaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcSRcTacSTcRAcTbcTccKJcRCcRCcSScTdcKbcKbdsGcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcRRcRRcRRcRRcTfcTicTgcRXcPMcPOcPNcRXcRXcRXcPPcZScTlcThcPQcPScPRcPTcPZcPBcPscTncPVcPWcTpcTucTraabcTocTvcSwcTwcQZcPxcBQcOMcsLcsLcsLchfcsLcsLcsLcFqcMfcFscyJcFscsLciYbQXcgacOmcFvciYbQXcFvcepcKPcKQcKRcTJcLccNocTKcQlcPYcQscQrcQrcQucQDcQAcBRaabaabaabaaaaaaaaaaaaaaaaaabGHcTLcacbGHbGHbGHbGHbGHaabaabaabdoEdoEdoEdoEdoEdoEaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcPGcPHcPHcPIcyOcyOcyOcyOcyOcyOcyOcyOcyOcyOcyOcyOcQacPHcPHcPHcPHcPHcQqcTZcTYcUbcUacUecUdcUgcUfcNBcIPcUccRCcKbcKbcKbcUhdsGcSUcUkcUjdsIdsHdsKdsKdsLdsKdsKcFCcUucQEcQIcUwcUycFCcUtcQKcTecUvcRXcRXcQPcQOcZSdsNcSdcSdcQUcQScFGcFFcQXcQWcRkcRjcRlcUNcUScSqcUVcSncUWcSwcSwcQZcPxcBQcNbcsLctZcsLchfchfcMfchfchfchfcyJcyJcyJcsKchfchfchfcOmbQXcGLbQXbQXcepcJKcMgcJKcVecJrcEHcVfcRncRmcRtcUZcVgcxNcxNcxNcBRaaaaaaaabaabaaaaaaaaaaaaaaabGHcJQcacbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaabcReaabaaaaabcReaabaaaaabcReaabaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcVlcVdcVmcRAcVncNBcRFcRGcRGcRGcRGcRIcTcdsOcSUcVhcVicVjdsPcOgcOgcOgcOgcOgcRJcRMcRLdsTcGYcHbcHacUtcROcRQcRPcRTcRScRVcRUcZScLScOFcSdcVIcErcVJcVEcVLcVKcVOcVMcVQcVPcVQcVRaabcQZcQZcQZcQZcQZcPxcBPcRWctZctZcsLcKOcAucsLcyJcsLcMfcsLcHdchfchfchfcHechfcOmbQXciYbUxcHfcepcJKcJKcJKcWicRYcNocRZcSccRvcSfcSHcShcEHcWgcWrcWwaaaaaaaaaaabaabaaaaaaaaaaaabGHbGHcacbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwaabcNFcSkcNMaaacNFcSkcNMaaacNFcSkcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabcRzcRAcRAcRAcRAcWkcWlcWmcNBcWncNBcNBcSjdsUdsWcSUcWzcWycVjdsXcSlcVjcSpdsYdsYcHkcWDcStcSGaYtaZBcHkcWBcSJcWJcSOcWLcWKcSYcSPcTjcSZcTkcWTcWUcTqcWOcWVcWWcWRcWYcWXcXbcXacXdcXccQpcSncXecWZcWZcQZcPxcBPcNbcsLcsLcxlchfchfchfcyPcyPchfchfchfchfcHZcIacsLchfcOmcIccIbcIbcIbcIbcIbcIbcIbcIbcMjcXvcXtcXzcXAcNocXAcNocXAcNocXBcWwaaaaaaaaaaaaaabaabaaaaaaaaaaaabGHcacbGHaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNFcSkcNMaabcNFcSkcNMaaacNFcSkcNMaaaaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabcXucXucXucXucXucXucXucTGcXucXucSUcXwcXDcVjdsXdbrcVjcTHdtadtbcRRcXGcTIcTMcIdcIecRRcXLcTNcPOcTOcTTcTPcUscUmcUxdtcdfFcXQcXVcUzcXRcXWcXYcXXcYacSdcXTcXUcYccYbaabcTocYfcIfcXZcQZcPxcBQcUCcUAcUAcUAcUGchfcIkcIjcImcIlcIocInchfcsLcAvcsLchfcOmcIqciYbQXcIrcIsciYcIucItcepcMIcMQcMJcNacMIcMQcUPcNccMIcMQcNlcBRaabaabaabaabaabaabaabaabaabaabbGHcacbGHbGHbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNFcSkcNMaaacNFcSkcNMaaacNFcSkcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaabaabaabcXucYtcYtcYucYAcYBcYBcUYcUXcUXcVbcVocVkcVxcVscVFcVDcTHdtkdtlcRRcYLcVUcWfcIwcIycYIcYJcWjcYRcYMcYMcYMcYXcYUcZScWpdtndtncVIcErcYTcZbcYVcYWcZccSdcXTcZdcZgcZecZhcSncZicWZcWZcQZcPxcBQcPdcExchfcyJcWqcyPcJscImcJucJtcJvcsLcJwcYjcAvcTQchfcOmcIqciYbQXcpEbQXciYcJzcIrcepcZqcZscZrcxNcZtcZycZvcxNcZzcZBcZAcBRaabaabaaaaaaaaaaaaaaaaaaaaaaaabGHcacbGGbGGbGHaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNFcSkcNMaaacNFcSkcNMaabcNFcSkcNMaabaabaabaabaaaaabaaaaaaaabaabaaaaaaaaaaabaaaaaacXucYtcYtcYucZucZucZucZCcZwcZxcSUcJBdtpdtqcJCcOgcWscWtcVjcVjcWCcWFcVjcWHcVjcSlcZPcWMcWIcZMcJIcNXcNVdacdabdcqdcqdcqdtncVIcErcZUdagcZWcZXcZYcSdcZZdahaOSaOldadcQZcQZcQZcQZcQZcPxcBQcPddaecsLcyJcWqchfcKvcKucKwcJtcKAcIjcKCcKBcKDcTQchfcOmcIqcGLbQXcKEcKFciYcKGbQXcepcMkcJKcJKcxNcMkcJKcJKcxNcMkcJKcJKcBRaaaaabaabaaaaaaaaaaaaaaacuQcuQbGHdfUcuQbGGbGHbGHbGHdoEdoEaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamhaabcNFcTRcNMaaacNFcTRcNMaaacNFcTRcNMaabalvaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaabcXudaodapcZucZucZudaxdardardardardardardarcKHcWPcWNcXicWScXycXxcXCcXxcXFcXEcXHcXxcXJcXIcXNcXMcNXcObdacdabddrddrdcqcXOcVIcErdaMdaNcZcdaOdaPdaVdaYdaWcOkcXcdbacSndbcdbbdbbcQZcPxcBPcPdchfcBNdaXcWqchfcKNcKMcJtcIjcJtcKScJtcJucJtcsLchfcOmcIqciYbQXciYciYciYbQXbQXcepdbfcKZcJKcxNdbfcKZcJKcxNdbfcKZcJKcBRaaaaaaaabaabaaaaaaaaaaaacuQdbgbGGcaccuQdbhcuQdbibGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaaaaabaaaaaaaaaaabaabaabaaaaaaaabaabaaaalvaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaabcXudbjcZucZucZucZucZudardbtdbldtsdttcXPdarcXScVjcWHcHhdbrcVjdbsdbBdbFdbFcYmdbGdbFcSUcSUcSUcYocNXcPgdacdbJdcqddrdcqdbKdbLcErdaMdaNdbNcSddaPdaVcXTcXUcPicYbdbIcTodbScLVdbWcQZcPxcBPcPdchfdbMdbMcWqchfcLYcsLcLZcIjcMccMbcMecMdcJGcJvcyPcOmcIqciYbQXbQXcMhciYbQXaqFcepdbRcJKcJKcxNdbRcJKcJKcxNdbRcJKcJKcBRaaaaaaaaaaabaabaaaaaaaaacuQbGGbGGcaccuQbGGbGGbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwalwamhalvalvalvalvalwalvalvalwdbTaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacXudbUcZwcZucZucZudbVdardblcPkcYqcYscYrcYCcYvcYEcYDcMZdbrcVjcYFcSUcYGcYYcYQcZfcYZcSUcZlcVjcZEcWecPXcZMcQcdcqcZFdcqdctdcLcErdaMdaNcZccSddcvdaVcXTdcOcQecZedcScSndcTdbbdbbcQZcPxcBQcPdcTUcuccABcWqchfchfcNdcNecDncNfcNfcNgchfchfchfchfcOmcIqciYbQXcNhcKFciYcepcepcepcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRaaaaaaaaaaaaaabaabaaaaaabGHbGHbGHcaccuQdcJdcKbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcXucXucXudcUdcMdcMdcMdardcNcQjdcPcZGdcPcZLcVjcHhcZNcNkcZOcNjcNWcQVcQFcOaddbcNkcQGcQVcOdcZRcZQdaldaicOicQHdexdaudcqddmddsdavdaydawddtcSddaPdaVcXTcXUddxcYbdbIcQZcQZcQZcQZcQZcPxcBQdazcYlcuccTBdaBdaAdaEdaAdaFcsLcsLcsLcsLczfchfcPacPedaJcPfcGLbQXcFvcepcepaaaaaaddFaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaabaaabGHcJQbGGcaccuQddJddIbGGbZZaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddLcXucZucZucZudcMaabaabdarddGcQJdcPcZGdaKdarcRgcRwcRrcSvcVqcSNcSxcSUcUBcQbddScVjcVccSUcVpcVqcVqcSvcSvcVucVrdcqdaLdcqdtvdehdaQdaMdaRcZUdagdecdeidaYdejdekcXcdelcSndendemdemcQZcPxcBQdbddaUchfchfckKchfchfcsLdbecyJcyJcyJcsLdbkdbpdbndbwdbqcDocepcepcepcepaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaabaabbGHdbgbGGcaccuQcuQcuQbGGbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcXucZucZucZudcMaabaaadardescQJdcPcZGdtwdaraLzcQYcSUdeFcRbcRbcRfcSUcVwdeAdeBdeCcVycSUcRbcRbcRbdeFcSUcRhaLzdcqdbydcqdeOdeDdeHdeIdeJdeKdeQdeRcXbdeUcXUdeVcYbdbIcTodeXcRideYcQZcPxcBPcBPdbzdbCdbAdbDdeTchfcsLdbYdbEdcedcddchdcgchfciYciYdcicepcepaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabGHbGHbGHbGHbGHbGHcaccuQdfidfcbGGbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacXucXudcMdcUdfdaaaaaadardfecVzdcPcZGcVAdardclcRodfzdfkcRpcRqcRpdfocVBdfqdfrdfscQHdfocRpcRpcRpdftdfzcRsaMMdcqdcndeLdeGdeMdfydeQdfFdfGdfBdfIdfHdfKdfJdfNcZedcScSndfOdemdemcQZcPxcBPcsLcOjcNqdcpcrccsKchfdgmcTBcsLcYidfLcsLcYicBNchfcSgcacbGHaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabGHbGGbGGbGGcJQcuQdfUcuQdfPbGGbGGbGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfXdfYdfYdfZdfYdfYdgadardfVcQjdcPdcrcVCdardaGcSicSUcSUdfodfodfodfocVGcVScVNcSvcVTdfodfodfodfocSUcSUcSydajdcqddrdcqdgrdgsdfydggdghcSdcSddgtcXWdggcXUdgjcYbdbIcQZcQZcQZcQZcQZcPxcBPcTBcsLdcscPdcsLdgmchfchfdgnchfdgocpscJGcYichfchfcuQcacbGHaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaabGHbGHcuQdgAdgycJQcuQcacbGGbGGbGGdgBbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgDdgudgvdgwdgvdgxdgFdardgzcVWcMMdcPcVXdarcSUcSzcSUdgJafOdgEdfodfodfodfocSAdfodfodfodfodgEafOdgJcSUcSBcSUdcqddrdcqdgMdeHdgNdgPdgOdgRdgQdgPdgQdgPdgVdeQdgWdbIdmodmodmodmodmocPxdgSdgTdgTdgTdcwdgTdgTdgTdhkdgXdgYdgodgZchfdgochfdhacuQcacbGHbZZbZZbZZbGHbZZbZZbZZbZZbGHbZZbZZbZZbZZbGHbGHbGHbGHbGHbGHbGHbGHbGHbGHcMsbGHcJQcuQcTSbGGcQwcuQcaccuQcuQdbhcuQbGHaabdhcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabhnaaaalwaaacNFcpzcNMaaacNFcpzcNMaaacNFcpzcNMaaaaaacLicNAcNBcNCcLicNDcNNcLmcLmcLmcLmcLmcLmcLmcLmcLmcKJcKfcNGcKKcMycMCcJxcJxcJxcMEcJxcNGcNGcJxcJxcJxcJxcNwcNKcMGcHGcHDcKLcnAcHQcHQcKUdcjcNOcNPcNQdcjcKXcGKcJMcLJcLwcLKcGKcsKcsLcNYcsLcAIdfMdfMcLNcLOcLOcLOcLOcLOcLPcLOcLOcLOcLOcLWcLUcMicLXcMocMocMAcFpcFpcMFcMHcMHcLXcMFcMOcsLcsLcBGcBHciYbQXcBIcepcxNcxNcxNcxNcKpcEHcMPcNocNocMScMRcxNcKscKVcKTcBRaaaaaacLbcOvcOucMTcLecODcLbcOCbGGcacbGHaabaabaabaabaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaacNFcMBcNMaaacNFcMBcNMaaacNFcMBcNMaaaayicLicNBcNBcNBcLicLicOwcOxcLicLicOxcOxcLicLicOxcOxcIPcKfcNGcNHcJxcJxcNJcNZcNZcMxcJxcNGcOGcJxcJxcJxcJxcNGcMUcMGcHGcHDcOKcMVcOLcOYcMWdcjcNOcOZcONdcjcMXcGKcGKcGKcGKcMYcGKcZScOTcOUcOTcOWcOTcOTcOTcOTcOTcBKcBPcBPcBPcBPcBPcBPcBPcNbcnVcBQcsLcBOcBMcBTcsLcsLchfcBWcBVcBXchfcNncNicNqcNpcDgciYbQXcDhcepcKPcKQcKRcPmcLccNocTKcEHcEHcNscNrcNLcNIcPpcPtcBRaaaaaacLbcLbcPycPAcPzcLbcLbbGHbGGcNRcuQcuQcuQbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaayiaabcNFcMBcNMaaacNFcMBcNMaabcNFcMBcNMaaaaabcLicMrcPucNDcLiaaaaabaaaaaaaaaaaaaaaaabaaaaaacOxcIPcKbcOzcJxcJxcJxcOBcLfcLdcLfcLncLfcOEcOQcLDcPvcNGcNGcNKcPLcNScwLcNTcOccNUcOfcOecHTcNOcOhcONdcjcOlcZScPUcPUaPdcDjcDicQdcPZcQfcDkcQhcQgcDlcQicQocQmcQpcQpcQpcQpcQpcQpcNEcBPcNbcsLcDmchfchfcBQcBQchfcDnchfchfchfchfchfciYcDobQXcOmbQXciYcDpbQXcepcJKcKZcJKcQxcJrcEHcQzcOocOncOpcEHcEHcQtcEHcQBcBRaaaaabaabcLbcLbcQvcLbcLbaaabGHbGGcaccuQcQwcQCbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaacNFcMBcNMaabcNFcMBcNMaaacNFcMBcNMaabaaacLicLicOxcLicLiaaaaabaabaaaaabaaaaabaabaaaaaacQycOqcKbcLqcLvcLvcOrcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcKbcJZcOscJZcJZcJZcFacOycOtbHYcQNcQNcQNcyhcQNcZScQLcQMcSdcErcSdcQQcPZcOHcOAcQTcOIcOJcRacRdcRcaabcQZcQZcQZcQZcQZcPwcBPcOMcsLcMfcsLcyJcyJcsLcsLcsLchfcEpchfcsKcEqciYciYciYcOmbQXciYciYciYcepcJKcJKcJKcRDcLQcNocRHcOPcOOcORcEHcEHcOScEHcRxcBRaabaabaaaaaaaaacRyaaaaaaaaabGHbGGcaccuQbGGbGGbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvayiaaacNFcMBcNMaabcNFcMBcNMaaacNFcMBcNMaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcRzcRAcRAcRAcRAcQycRBcIPcRCcRKcREcREcOVcKbcPbcOXcOXcOXcOXcOXcPhcOXcOXcOXcPjcPjcOXcPlcRRcRRcRRcRRcPocPncTecSabHZcRXcRXcPqcZScPrcSbbjicErcSdcSecPZcPBcPscSmcPDcPEcSocSrcSqcQpcSncSucSscSwcQZcPwcBQcOMcsLchfcExchfcEycEAcEzcyJchfcECcEBcsLcsLciYcEDcgacOmbQXciYcEFcEEcepcxNcxNcxNcxNcLRcEHcQzcPJcPFcPKcSHcSHcSHcSHdnYdoacSKaabaaaaaaaaaaaaaaaaaaaaabGHbGGcNRbGGbGGcSLbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaabcPxaabaabaabcPxaabaaaaabcPxaabaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcSRcTacSTcRAcTbcTccKJcRCcRCcSScTdcKbcKbdsGcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcRRcRRcRRcRRcTfcTicTgcRXcPMcPOcPNcRXcRXcRXcPPcZScTlcThcPQcPScPRcPTcPZcPBcPscTncPVcPWcTpcTucTraabcTocTvcSwcTwcQZcPwcBQcOMcsLcsLcsLchfcsLcsLcsLcFqcMfcFscyJcFscsLciYbQXcgacOmcFvciYbQXcFvcepcKPcKQcKRcTJcLccNocTKcQlcPYcQscQrcQrcQucQDcQAcBRaabaabaabaaaaaaaaaaaaaaaaaabGHcTLcacbGHbGHbGHbGHbGHaabaabaabdoEdoEdoEdoEdoEdoEaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcPCcPGcPGcPHcyOcyOcyOcyOcyOcyOcyOcyOcyOcyOcyOcyOcPIcPGcPGcPGcPGcPGcQacTZcTYcUbcUacUecUdcUgcUfcNBcIPcUccRCcKbcKbcKbcUhdsGcSUcUkcUjdsIdsHdsKdsKdsLdsKdsKcFCcUucQEcQIcUwcUycFCcUtcQKcTecUvcRXcRXcQPcQOcZSdsNcSdcSdcQUcQScFGcFFcQXcQWcRkcRjcRlcUNcUScSqcUVcSncUWcSwcSwcQZcPwcBQcNbcsLctZcsLchfchfcMfchfchfchfcyJcyJcyJcsKchfchfchfcOmbQXcGLbQXbQXcepcJKcMgcJKcVecJrcEHcVfcRncRmcRtcUZcVgcxNcxNcxNcBRaaaaaaaabaabaaaaaaaaaaaaaaabGHcJQcacbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwaaaaabaaaaabaabcQqaabaaaaabcQqaabaaaaabcQqaabaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcVlcVdcVmcRAcVncNBcRFcRGcRGcRGcRGcRIcTcdsOcSUcVhcVicVjdsPcOgcOgcOgcOgcOgcRJcRMcRLdsTcGYcHbcHacUtcROcRQcRPcRTcRScRVcRUcZScLScOFcSdcVIcErcVJcVEcVLcVKcVOcVMcVQcVPcVQcVRaabcQZcQZcQZcQZcQZcPwcBPcRWctZctZcsLcKOcAucsLcyJcsLcMfcsLcHdchfchfchfcHechfcOmbQXciYbUxcHfcepcJKcJKcJKcWicRYcNocRZcSccRvcSfcSHcShcEHcWgcWrcWwaaaaaaaaaaabaabaaaaaaaaaaaabGHbGHcacbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwaabcNFcRecNMaaacNFcRecNMaaacNFcRecNMaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabcRzcRAcRAcRAcRAcWkcWlcWmcNBcWncNBcNBcSjdsUdsWcSUcWzcWycVjdsXcSlcVjcSpdsYdsYcHkcWDcStcSGaYtaZBcHkcWBcSJcWJcSOcWLcWKcSYcSPcTjcSZcTkcWTcWUcTqcWOcWVcWWcWRcWYcWXcXbcXacXdcXccQpcSncXecWZcWZcQZcPwcBPcNbcsLcsLcxlchfchfchfcyPcyPchfchfchfchfcHZcIacsLchfcOmcIccIbcIbcIbcIbcIbcIbcIbcIbcMjcXvcXtcXzcXAcNocXAcNocXAcNocXBcWwaaaaaaaaaaaaaabaabaaaaaaaaaaaabGHcacbGHaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNFcRecNMaabcNFcRecNMaaacNFcRecNMaaaaaaaaaaaaaabaaaaaaaaaaaaaabaabaabaaaaaaaabaabcXucXucXucXucXucXucXucTGcXucXucSUcXwcXDcVjdsXdbrcVjcTHdtadtbcRRcXGcTIcTMcIdcIecRRcXLcTNcPOcTOcTTcTPcUscUmcUxdtcdfFcXQcXVcUzcXRcXWcXYcXXcYacSdcXTcXUcYccYbaabcTocYfcIfcXZcQZcPwcBQcUCcUAcUAcUAcUGchfcIkcIjcImcIlcIocInchfcsLcAvcsLchfcOmcIqciYbQXcIrcIsciYcIucItcepcMIcMQcMJcNacMIcMQcUPcNccMIcMQcNlcBRaabaabaabaabaabaabaabaabaabaabbGHcacbGHbGHbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNFcRecNMaaacNFcRecNMaaacNFcRecNMaabaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaabaabaabcXucYtcYtcYucYAcYBcYBcUYcUXcUXcVbcVocVkcVxcVscVFcVDcTHdtkdtlcRRcYLcVUcWfcIwcIycYIcYJcWjcYRcYMcYMcYMcYXcYUcZScWpdtndtncVIcErcYTcZbcYVcYWcZccSdcXTcZdcZgcZecZhcSncZicWZcWZcQZcPwcBQcPdcExchfcyJcWqcyPcJscImcJucJtcJvcsLcJwcYjcAvcTQchfcOmcIqciYbQXcpEbQXciYcJzcIrcepcZqcZscZrcxNcZtcZycZvcxNcZzcZBcZAcBRaabaabaaaaaaaaaaaaaaaaaaaaaaaabGHcacbGGbGGbGHaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaabcNFcRecNMaaacNFcRecNMaabcNFcRecNMaabaabaabaabaaaaabaaaaaaaabaabaaaaaaaaaaabaaaaaacXucYtcYtcYucZucZucZucZCcZwcZxcSUcJBdtpdtqcJCcOgcWscWtcVjcVjcWCcWFcVjcWHcVjcSlcZPcWMcWIcZMcJIcNXcNVdacdabdcqdcqdcqdtncVIcErcZUdagcZWcZXcZYcSdcZZdahaOSaOldadcQZcQZcQZcQZcQZcPwcBQcPddaecsLcyJcWqchfcKvcKucKwcJtcKAcIjcKCcKBcKDcTQchfcOmcIqcGLbQXcKEcKFciYcKGbQXcepcMkcJKcJKcxNcMkcJKcJKcxNcMkcJKcJKcBRaaaaabaabaaaaaaaaaaaaaaacuQcuQbGHdfUcuQbGGbGHbGHbGHdoEdoEaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamhaabcNFcSkcNMaaacNFcSkcNMaaacNFcSkcNMaabalvaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaabcXudaodapcZucZucZudaxdardardardardardardarcKHcWPcWNcXicWScXycXxcXCcXxcXFcXEcXHcXxcXJcXIcXNcXMcNXcObdacdabddrddrdcqcXOcVIcErdaMdaNcZcdaOdaPdaVdaYdaWcOkcXcdbacSndbcdbbdbbcQZcPwcBPcPdchfcBNdaXcWqchfcKNcKMcJtcIjcJtcKScJtcJucJtcsLchfcOmcIqciYbQXciYciYciYbQXbQXcepdbfcKZcJKcxNdbfcKZcJKcxNdbfcKZcJKcBRaaaaaaaabaabaaaaaaaaaaaacuQdbgbGGcaccuQdbhcuQdbibGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalvaaaaabaaaaaaaaaaabaabaabaaaaaaaabaabaaaalvaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaabcXudbjcZucZucZucZucZudardbtdbldtsdttcXPdarcXScVjcWHcHhdbrcVjdbsdbBdbFdbFcYmdbGdbFcSUcSUcSUcYocNXcPgdacdbJdcqddrdcqdbKdbLcErdaMdaNdbNcSddaPdaVcXTcXUcPicYbdbIcTodbScLVdbWcQZcPwcBPcPdchfdbMdbMcWqchfcLYcsLcLZcIjcMccMbcMecMdcJGcJvcyPcOmcIqciYbQXbQXcMhciYbQXaqFcepdbRcJKcJKcxNdbRcJKcJKcxNdbRcJKcJKcBRaaaaaaaaaaabaabaaaaaaaaacuQbGGbGGcaccuQbGGbGGbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalwalwalvalwalwamhalvalvalvalvalwalvalvalwdbTaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacXudbUcZwcZucZucZudbVdardblcPkcYqcYscYrcYCcYvcYEcYDcMZdbrcVjcYFcSUcYGcYYcYQcZfcYZcSUcZlcVjcZEcWecPXcZMcQcdcqcZFdcqdctdcLcErdaMdaNcZccSddcvdaVcXTdcOcQecZedcScSndcTdbbdbbcQZcPwcBQcPdcTUcuccABcWqchfchfcNdcNecDncNfcNfcNgchfchfchfchfcOmcIqciYbQXcNhcKFciYcepcepcepcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRcBRaaaaaaaaaaaaaabaabaaaaaabGHbGHbGHcaccuQdcJdcKbGGbZZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcXucXucXudcUdcMdcMdcMdardcNcQjdcPcZGdcPcZLcVjcHhcZNcNkcZOcNjcNWcQVcQFcOaddbcNkcQGcQVcOdcZRcZQdaldaicOicQHdexdaudcqddmddsdavdaydawddtcSddaPdaVcXTcXUddxcYbdbIcQZcQZcQZcQZcQZcPwcBQdazcYlcuccTBdaBdaAdaEdaAdaFcsLcsLcsLcsLczfchfcPacPedaJcPfcGLbQXcFvcepcepaaaaaaddFaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaabaaabGHcJQbGGcaccuQddJddIbGGbZZaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddLcXucZucZucZudcMaabaabdarddGcQJdcPcZGdaKdarcRgcRwcRrcSvcVqcSNcSxcSUcUBcQbddScVjcVccSUcVpcVqcVqcSvcSvcVucVrdcqdaLdcqdtvdehdaQdaMdaRcZUdagdecdeidaYdejdekcXcdelcSndendemdemcQZcPwcBQdbddaUchfchfckKchfchfcsLdbecyJcyJcyJcsLdbkdbpdbndbwdbqcDocepcepcepcepaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaabaabbGHdbgbGGcaccuQcuQcuQbGGbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcXucZucZucZudcMaabaaadardescQJdcPcZGdtwdaraLzcQYcSUdeFcRbcRbcRfcSUcVwdeAdeBdeCcVycSUcRbcRbcRbdeFcSUcRhaLzdcqdbydcqdeOdeDdeHdeIdeJdeKdeQdeRcXbdeUcXUdeVcYbdbIcTodeXcRideYcQZcPwcBPcBPdbzdbCdbAdbDdeTchfcsLdbYdbEdcedcddchdcgchfciYciYdcicepcepaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabGHbGHbGHbGHbGHbGHcaccuQdfidfcbGGbGHaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacXucXudcMdcUdfdaaaaaadardfecVzdcPcZGcVAdardclcRodfzdfkcRpcRqcRpdfocVBdfqdfrdfscQHdfocRpcRpcRpdftdfzcRsaMMdcqdcndeLdeGdeMdfydeQdfFdfGdfBdfIdfHdfKdfJdfNcZedcScSndfOdemdemcQZcPwcBPcsLcOjcNqdcpcrccsKchfdgmcTBcsLcYidfLcsLcYicBNchfcSgcacbGHaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabGHbGGbGGbGGcJQcuQdfUcuQdfPbGGbGGbGHaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadfXdfYdfYdfZdfYdfYdgadardfVcQjdcPdcrcVCdardaGcSicSUcSUdfodfodfodfocVGcVScVNcSvcVTdfodfodfodfocSUcSUcSydajdcqddrdcqdgrdgsdfydggdghcSdcSddgtcXWdggcXUdgjcYbdbIcQZcQZcQZcQZcQZcPwcBPcTBcsLdcscPdcsLdgmchfchfdgnchfdgocpscJGcYichfchfcuQcacbGHaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaaaaaaaabGHbGHcuQdgAdgycJQcuQcacbGGbGGbGGdgBbGHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgDdgudgvdgwdgvdgxdgFdardgzcVWcMMdcPcVXdarcSUcSzcSUdgJafOdgEdfodfodfodfocSAdfodfodfodfodgEafOdgJcSUcSBcSUdcqddrdcqdgMdeHdgNdgPdgOdgRdgQdgPdgQdgPdgVdeQdgWdbIdmodmodmodmodmocPwdgSdgTdgTdgTdcwdgTdgTdgTdhkdgXdgYdgodgZchfdgochfdhacuQcacbGHbZZbZZbZZbGHbZZbZZbZZbZZbGHbZZbZZbZZbZZbGHbGHbGHbGHbGHbGHbGHbGHbGHbGHcMsbGHcJQcuQcTSbGGcQwcuQcaccuQcuQdbhcuQbGHaabdhcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgDdgudgvdgwdgwdhdbJMdardhfcVYdcPdcPcVZdarcSCcSDdhoafOcSEcSFcSFcSFcSFcSFcSIcSFcSFcSFcSFcSFcSMafOdhvcTscTmdcqdePdcqdcFdhBdhAdhCdhxdhEdhDdhFcSddhHdhGdhJdhIdbIdmoaaaaabaabaaadhMdhLcTVcTXdcHdcGcVHcWxdgTdhYcsLcsLdhPcpsdhQcYicTUcsLcEGdcIdiadiadiadiadiadiadiadiadiadiadiadiadiadiadiediadiadiadiaczLcuQbPAcAUbGGdiccMscuQcuQcuQdbhcuQcuQcaccuQdidbGGbGGbGHaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgDdgudgvdhWdgvdhXdifdardfVcQjdcPdcPcWadarcTtdibdibaaacTxafOafOafOafOafOafOafOafOafOafOafOcTxaaadibdibcTtdcqddrdcqdhIdikdijdipdioditdhIdipdhIcYbdhIcYbdhIdbIdmoaaaalwalwdiudhLcXmcYgcYydczdcQdcudcxdgTcsLcsLchfdgodiqchfcYicXrdfMdhRdcWdcWdcWdcWdcWdcWdcWddcdcXdcWdcWdcWdcWdcWdcWdhRddBcTScuQbGGdcIdiadiadiadiaddZddKdeadiadiadiadiadetcjYcuQdfcbGGdiHbGHaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadiSdfYdfYdfYdfYdfYdiTdardiKcWbdcPdcPcWcdarcTycTzdiPaabcTxafOdjqaaaaaaaaaaaadjqaaaaaadjqafOcTxaabdiRcTCcTAdcqddrdcqaabdiUaabdiVdiWdiXdiYdiZdiYdjadiYdjadjbdjcdmoaaaalwaabdjddgSdcydczdcAdevdeudewdcRdgTdjlcsLcsLcYidjmchfcYicYidjzbGHbGHbZZbZZbZZbZZbGHbZZbZZbZZbZZbGHbZZbZZbZZbZZbGHdjobGGcuQcTLbGGcuQcuQbZZbZZcxScuQdjAbGGdjAcuQdjCcacdjrbGHbGHbGHbGHbGHaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadardjscWbdcPdcPcWddarcTtdibdjvaaacTDcTEaaaaaaaaaaaaaaadjyaaaaaaaaacUlcTFaaadibdibcTtdcqddrdcqcQZdjBcTodjBcQZdjBcTodjBcQZdjScTodjUcQZaabdmoaaaalwaabdjEdgSdcVdczddadezdeydddddedjKdirdjYdjMcYicpscsLdjNdgochfcBPaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaabGHdjXcLhcuQdjPbGGcuQaaaaaaaaaaaacuQbGGbGGdbgdjQdjQdcmdeEdjQaaaaabaabaabaabdjTaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadardkccQjdcPdcPcWadarcUncTmdibaaacTxafOaaaaaaaabaabaabaabaabaaaaaaafOcTxaaadibcSCcUodcqdePdcqcQZdkidkhdkkcQZdkqdkpdkscQZdkwdkudkxcQZaabdmoaaaalwaaadjEdkjddfddgddhddiddjddkddldgTdkrdgochfdgodkGchfdktdgocBNcBPcBQcBQcBQdmoaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaabGHdkFcuQcuQcQCbGGcuQcuQbZZbZZcuQcuQbGGdkvcLhdjQdeSdeNdeZdjQaaaaaaaabaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafOdardardardardardardarcSUcTtdibaaacTxafOdjqaabaabdkzdkAdkBaabdkCaaaafOcTxaaadibcTtcSUdcqddrdcqcQZdkObbMdkOcQZdkTbbOdkTcQZdkVbdGdkVcQZaabdmoaaaalwaaadjddgSddnddoddpddqddvddyddzdgTdkPdkQdkZdkSdlacsLcYicYidnJdnOdnLcsLdlhdmoaaaaabaaabZZbZZbZZbGHbGHbGHbGHbGHbGHdlicJQcuQdljbGGbGGcuQbGGbGGbGGbGGcTSbGGdfPdjQdfbdfadfjdjQaabaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabafOaabafOafOaabaabaabalwalwcSUcSUcUpdibaaacTDcTEaaaaaaaabdledlfdlgaabaaaaaacUlcTFaaadibcUqcSUdcqddrdcqcQZdkOdlvdkOcQZdkTdlwdkTcQZdkVdlxdkVcQZaabdmoaaaalwaaadjddgSdgSdgSdlldlmdlndlydlndlmdkPdlpcsLdlAdlrdfMddHcYidnPcBPcBQcBQcBQddAaabaabaaabZZdlBdlCcuQbGGdlDdlJdbgcuQdlPbGGcuQdlzbGGbGGdlLbGGbGHbGHbGHbZZbZZbGHdjQdfndfldfpdjQaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabafOaabafOafOaabaabaabalwalwcSUcSUcUpdibaaacTDcTEaaaaaaaabdledlfdlgaabaaaaaacUlcTFaaadibcUqcSUdcqddrdcqcQZdkOdlvdkOcQZdkTdlwdkTcQZdkVdlxdkVcQZaabdmoaaaalwaaadjddgSdgSdgSdlldlmdlndlydlndlmdkPdlpcsLdlAdlrdfMddHcYidnPcBPcBQcBQcBQcTRaabaabaaabZZdlBdlCcuQbGGdlDdlJdbgcuQdlPbGGcuQdlzbGGbGGdlLbGGbGHbGHbGHbZZbZZbGHdjQdfndfldfpdjQaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaabaaaaaaaabaabalwcSUcSUcTtdibaaacTxafOaaadlEaabdlFdlGdlHaabaabdjqafOcTxaaadibcTtcSUdcqddrdcqcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZcQZaabdmoaaaayiaaadjdaaaaaaaaadlIdlmdlVdlXdlWdlmcsLdlMcsLcsLdlNdlOcXrdmcdlQcBPaaaaaaaaaaaaaaaaabaaabZZdlZdmbdlLbGGdgybGGbGGdlLdjobGGcuQcuQcuQcuQcuQbGGbGHaabaaaaaaaaaaabdlTdlTdfvdlTdlTaabaabdhcaabaabdjTaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabcSUcSCcUodibaaacTxafOaaaaaaaabaabaabaabaabaaaaaaafOcTxaaadibcUncTmdcqdeWdcqdcqdcqdcqddCdmodmodmodmodmodmodmodmodmodmodmoaabaabaabdjEaaaaaaaaadlYdlmdlndmhdlndlmdmadmidfMdfMdmldmrdmmcBPcBPcBPaaaaaaaaaaaaaaaaabaaabZZdlBdmncuQdbgbGGbGGdmpcuQdmqbGGbGGbGGbGGbGGbGGbGGbGHaabaaaaaaaaaaabaaadlTdfwdlTaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabcSUcSCcUodibaaacTxafOaaaaaaaabaabaabaabaabaaaaaaafOcTxaaadibcUncTmdcqdeWdcqdcqdcqdcqcYzdmodmodmodmodmodmodmodmodmodmodmoaabaabaabdjEaaaaaaaaadlYdlmdlndmhdlndlmdmadmidfMdfMdmldmrdmmcBPcBPcBPaaaaaaaaaaaaaaaaabaaabZZdlBdmncuQdbgbGGbGGdmpcuQdmqbGGbGGbGGbGGbGGbGGbGGbGHaabaaaaaaaaaaabaaadlTdfwdlTaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaabcSUcTtdibdmjaaacTDcTEaaaaaaaaaaabaaaaaaaaaaaaaaacUlcTFaaadibdibcTtdcqdgIdondokddrdfmdmoaabaabaabaabaabaabaabdmoaabaabaabaabaabaabdjEaabaabaabdlYdlmdmydmAdmzdmEaabdmacBPcBQdmtcBQcBPcBPaaaaabaaaaaaaaaaaaaaaaabaabbZZbZZbZZbGHbGHbGHbGGcuQbGHdmubGHbGHdbgbPAcLhbKlcMsbGHaabaaaaaaaaaaabaaadlTdfSdlTaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcSUcUDdbudiPaabcTxafOdjqaaaaaadjqaaaaaaaaaaaadjqafOcTxaaadiRdbQcUEdcqdoodcqdcqdcqdcqdcqdcqaaaaaaaabaaaaaaaaadmoaaaaaadmBdmBdmBdmBdmCaaaaaaaabdlYdmDdlmdmOdlmdlmaaaaabaaaaaadmFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaabGHdmbdmMbGHdmNaabbGHbGHbZZbZZcMsbGHaaaaabaaaaaaaaaaabaaaaaaddDaaaaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUcUFcUIcUHaaacTxafOafOdcfafOafOdcfafOafOdcfafOafOcTxaaacUJcUIcUKdcqdopdfxdfudfCdfAdfEdfDdmWdmWdmXdmWdmWdmWddEdmWdmWdmZdnadnbdnodmCaaaaaaaabdnddmodlmdnedlmddMaabaabaaaaaadngaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaabpaaaaaabGHdnQdnnbGHdnpaabaaaaabaaaaaaaabaaaaaaaabaaaaaaaaaaabaaaaaaddNaaaaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnscSUcSUcULaaacUMcSFcSFcUOcSFcSFcUOcSFcSFcUOcSFcSFcUQaaacULcSUcSUdcqdopdfRdfQdgbdfTdgddgcaaaaaaaabaaaaaaaaadmodmBdmBdmBbfmdhjdnvdmCaaaaaaaabaabdmodnxdnIdnxdmoaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaaaaaaaaabZZdnRbZZbZZaabdhcaaaaabaaaaaaaabaaaamWamWalwayiaabaabaabaabddNaabaabaabaabdhcamhamWamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcSUcYXcURcUHaabaabaabaabaaaaaaaaaaaaaaaaabaabaabaabcUJcUUcYXcSUdcqdordcqdcqdcqdcqdgcdcqaabaabaabaabaabaabddObfubjbbhybkJdhzdhZdmCaaaaaaaaaaabdmoaaaaaaaaadmoaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaabZZdnSbZZaaaaaaaaaaaaaabaaaaaaaabaaaamWaaaaaaaabaaaaabaaaaaaddPaaaaaaaabaaaaabaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaacSUcSUcURcVacVacVacVacVacVacVacVacVacVacVacVacVacUUcSUcSUcSUdgidosdcqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddQdnTdnWdnVdobdiidizdoeaaaaaaaaaaabdmodmodmodmodmoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaabZZdnXbZZaaaaaaaaaaaaaabaaaaaaaabaaaamWaaadohdohdohdohdohaabcTWaabdohdohdohdohdohaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUaaadcqdcqdgpdcqdcqdcqdcqaaaaaaaaaaaaaaaaaaaaaaaacPxdnZdnZdnZdnZdiBdocdocdoddolaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaabZZdombZZaaaaaaaaaaaaaaaaaaaaaaabaaaamWaabddRddTddTddTddTddUcTWddVddWddWddWddWddXaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcqddrddrddYdoudoudowaaaaaaaaaaaaaaaaaaaaaaaadjdaaadnZdnZdoydiCdiDdnZdnZdnZdnZdnZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdebdoEdoEaaaaaaaaaaaaaaaaaaaaaaabaaaamWaabdoGdoGdoGdoGdoGaaacTWaaadoGdoGdoGdoGdoGaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcSUcUDdbudiPaabcTxafOdjqaaaaaadjqaaaaaaaaaaaadjqafOcTxaaadiRdbQcUEdcqdoodcqdcqdcqdcqdcqdcqaaaaaaaabaaaaaaaaadmoaaaaaadmBdmBdmBdmBdmCaaaaaaaabdlYdmDdlmdmOdlmdlmaaaaabaaaaaadmFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaabGHdmbdmMbGHdmNaabbGHbGHbZZbZZcMsbGHaaaaabaaaaaaaaaaabaaaaaaddAaaaaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUcUFcUIcUHaaacTxafOafOdcfafOafOdcfafOafOdcfafOafOcTxaaacUJcUIcUKdcqdopdfxdfudfCdfAdfEdfDdmWdmWdmXdmWdmWdmWddCdmWdmWdmZdnadnbdnodmCaaaaaaaabdnddmodlmdnedlmddDaabaabaaaaaadngaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaabpaaaaaabGHdnQdnnbGHdnpaabaaaaabaaaaaaaabaaaaaaaabaaaaaaaaaaabaaaaaaddEaaaaaaaabaaaaabaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadnscSUcSUcULaaacUMcSFcSFcUOcSFcSFcUOcSFcSFcUOcSFcSFcUQaaacULcSUcSUdcqdopdfRdfQdgbdfTdgddgcaaaaaaaabaaaaaaaaadmodmBdmBdmBbfmdhjdnvdmCaaaaaaaabaabdmodnxdnIdnxdmoaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaaaaaaaaabZZdnRbZZbZZaabdhcaaaaabaaaaaaaabaaaamWamWalwayiaabaabaabaabddEaabaabaabaabdhcamhamWamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcSUcYXcURcUHaabaabaabaabaaaaaaaaaaaaaaaaabaabaabaabcUJcUUcYXcSUdcqdordcqdcqdcqdcqdgcdcqaabaabaabaabaabaabddMbfubjbbhybkJdhzdhZdmCaaaaaaaaaaabdmoaaaaaaaaadmoaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaabZZdnSbZZaaaaaaaaaaaaaabaaaaaaaabaaaamWaaaaaaaabaaaaabaaaaaaddNaaaaaaaabaaaaabaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaacSUcSUcURcVacVacVacVacVacVacVacVacVacVacVacVacVacUUcSUcSUcSUdgidosdcqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaddOdnTdnWdnVdobdiidizdoeaaaaaaaaaaabdmodmodmodmodmoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaabZZdnXbZZaaaaaaaaaaaaaabaaaaaaaabaaaamWaaadohdohdohdohdohaabcTWaabdohdohdohdohdohaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUcSUaaadcqdcqdgpdcqdcqdcqdcqaaaaaaaaaaaaaaaaaaaaaaaacPwdnZdnZdnZdnZdiBdocdocdoddolaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaabZZdombZZaaaaaaaaaaaaaaaaaaaaaaabaaaamWaabddPddQddQddQddQddRcTWddTddUddUddUddUddVaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcqddrddrddWdoudoudowaaaaaaaaaaaaaaaaaaaaaaaadjdaaadnZdnZdoydiCdiDdnZdnZdnZdnZdnZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabddXdoEdoEaaaaaaaaaaaaaaaaaaaaaaabaaaamWaabdoGdoGdoGdoGdoGaaacTWaaadoGdoGdoGdoGdoGaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcqdePddrdoLdoIdoMdozaaaaaaaaaaaaaaaaaaaaaaaadjdaaadnZdoNdiFdiEdiIdiGdiLdiJdoHdnZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaabaaaamWaaaaabaaaaabaabaabaaacTWaaaaabaaaaabaaaaabaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadoTaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcqdgqddrdeddoudoudoVaaaaaaaaaaaaaaaaaaaaaaaadjdaaadnZdoWdoYdiMdiOdiNdjpdiQdpgdnZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaamWaaadohdohdohdohdohaabcTWaabdohdohdohdohdohaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgGdcqdcqdcqdcqdcqdcqaaaaaaaaaaaaaaaaaaaabaabdjEaabdnZdphdiIdjDdjHdjGdnZdjIdpbdnZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabddRddTddTddTddTddUcTWddVddWddWddWddWdeeaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadcqdgqddrddYdoudoudoVaaaaaaaaaaaaaaaaaaaaaaaadjdaaadnZdoWdoYdiMdiOdiNdjpdiQdpgdnZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaamWaaadohdohdohdohdohaabcTWaabdohdohdohdohdohaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadgGdcqdcqdcqdcqdcqdcqaaaaaaaaaaaaaaaaaaaabaabdjEaabdnZdphdiIdjDdjHdjGdnZdjIdpbdnZaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabddPddQddQddQddQddRcTWddTddUddUddUddUdebaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdpddpedpddpfdpudpwdjJdjRdpxdpfdpfdpfdpfaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabdoGdoGdoGdoGdoGaaacTWaabdoGdoGdoGdoGdoGaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpddpldpmdpddpfdpfdkadpfdpfdppdpqdpqdppdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayiaaaaabaaaaabaaaaabaaadefaaaaabaaaaabaabaabaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpCdpEdpDdpFdpfdkbdjJdkddpfdpKdpAdpAdpLdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaaadohdohdohdohdohaabddNaabdohdohdohdohdohaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpMdpOdpNdkedpfdkgdkfdkHdpfdkJdkIdkKdpVdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabddRddTddTddTddTdegdeodegddWddWddWddWdeeaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaadpddpZdkUdkMdkXdkWdlbdkYdlbdlcdlkdlddlodqkdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabdoGdoGdoGdoGdoGaaaddNaaadoGdoGdoGdoGdoGaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpddqqdlqdlsdpfdqxdltdludpfdlRdlKdqEdppdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaaaaaaaabaabaabaaaaaaddNaabaaaaaaaabaabaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdqmdqpdlSdqpdqmdqmdlUdqmdqmdqpdmddqpdqmaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWamWamWamWamWaaaaaaaaaddNaaaaaaaaaamWamWamWayiamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqmdisdmedqpdqvdqwdmfdqwdqvdqpdmgdqAdqmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabdepaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpddpldpmdpddpfdpfdkadpfdpfdppdpqdpqdppdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaayiaaaaabaaaaabaaaaabaaadedaaaaabaaaaabaabaabaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpCdpEdpDdpFdpfdkbdjJdkddpfdpKdpAdpAdpLdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaaadohdohdohdohdohaabddEaabdohdohdohdohdohaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpMdpOdpNdkedpfdkgdkfdkHdpfdkJdkIdkKdpVdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabddPddQddQddQddQdeedefdeeddUddUddUddUdebaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaadpddpZdkUdkMdkXdkWdlbdkYdlbdlcdlkdlddlodqkdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabdoGdoGdoGdoGdoGaaaddEaaadoGdoGdoGdoGdoGaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadpddpddqqdlqdlsdpfdqxdltdludpfdlRdlKdqEdppdppaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaaaaaaaabaabaabaaaaaaddEaabaaaaaaaabaabaaaaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdqmdqpdlSdqpdqmdqmdlUdqmdqmdqpdmddqpdqmaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWamWamWamWamWaaaaaaaaaddEaaaaaaaaaamWamWamWayiamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqmdisdmedqpdqvdqwdmfdqwdqvdqpdmgdqAdqmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaabdegaabamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdqmdqndmedqpdqvdqwdmfdqwdqvdqpdmgdqDdqmaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWaaaaabaaaamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqmdqmdmedqpdqMdqwdmfdqwdqOdqpdmgdqmdqmdqQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamWamWamWamWamWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdqmdmkdqpdqTdqwdmsdmGdmwdqpdmHdqmaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9218,13 +9212,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdqmdqmdqXdqpdqvdqwdmfdqwdqvdqpdqXdqmdqmaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdqmdqXdqXdqpdqvdqwdmVdqwdqvdqpdqXdqXdqmaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqmdqXdrfdrfdrgdrfdmYdncdrgdrfdrfdqXdqmaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqmdqXdrfdrfdrodrqdnfdnidnhdrfdrfdqXdqmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqmdqXdrfdrfdrodrqdnfdnidnhdrfdrfdqXdqmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqmdqXdrfdrfdrtdnldnjdrEdrAdrfdrfdqXdqmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqmdrudrfdrfdrvdrvdnmdrvdrvdrfdrfdrudqmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqmdrudrfdrydrydrEdnqdrEdrydrydrfdrudqmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrfdrfdrfdrGdnrdnwdntdnidrKdrOdrfdrfdrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrfdrfdrfdrIdnydrQdrPdrRdrBdrMdrfdrfdrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdrfdrfdrfdrydnzdrNdrTdrNdnAdrydrfdrfdrfaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdrfdrfdrfdrydnzdrNdrTdrNdnAdrydrfdrfdrfaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrXdrfdrfdrSdrEdnBdrNdrNdrNdnFdrEdrVdrfdrfdsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdrfdrfdrfdrIdsbdsddscdrNdrEdrMdrfdrfdrfaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadrfdrfdrfdrGdrEdsgdsedrydrEdrOdrfdrfdrfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/cyberiad/z3.dmm b/_maps/map_files/cyberiad/z3.dmm index 9c101ea0e78..f98603a8be6 100644 --- a/_maps/map_files/cyberiad/z3.dmm +++ b/_maps/map_files/cyberiad/z3.dmm @@ -37,17 +37,17 @@ "aK" = (/turf/simulated/mineral/random/high_chance,/area/mine/dangerous/explored/golem) "aL" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/shuttle/freegolem) "aM" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/shuttle/freegolem) -"aN" = (/obj/structure/fans/tiny,/obj/machinery/door/airlock/shuttle{id_tag = "s_docking_airlock"; locked = 1},/turf/simulated/shuttle/plating,/area/shuttle/freegolem) +"aN" = (/obj/structure/fans/tiny,/obj/machinery/door/airlock/shuttle{id_tag = "s_docking_airlock"; locked = 1},/turf/simulated/floor/plating,/area/shuttle/freegolem) "aO" = (/turf/simulated/shuttle/wall{dir = 2; icon_state = "swall8"; tag = "icon-swall12"},/area/shuttle/freegolem) "aP" = (/turf/simulated/shuttle/wall{icon_state = "swall3"; dir = 2},/area/shuttle/freegolem) -"aQ" = (/obj/structure/closet/crate/golemgear,/turf/simulated/shuttle/plating,/area/shuttle/freegolem) -"aR" = (/obj/item/storage/toolbox/mechanical,/obj/item/reagent_containers/spray/cleaner,/turf/simulated/shuttle/plating,/area/shuttle/freegolem) -"aS" = (/turf/simulated/shuttle/plating,/area/shuttle/freegolem) +"aQ" = (/obj/structure/closet/crate/golemgear,/turf/simulated/floor/plating,/area/shuttle/freegolem) +"aR" = (/obj/item/storage/toolbox/mechanical,/obj/item/reagent_containers/spray/cleaner,/turf/simulated/floor/plating,/area/shuttle/freegolem) +"aS" = (/turf/simulated/floor/plating,/area/shuttle/freegolem) "aT" = (/obj/structure/lattice,/turf/space,/area/space) -"aU" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/shuttle/plating,/area/shuttle/freegolem) +"aU" = (/obj/structure/reagent_dispensers/watertank/high,/turf/simulated/floor/plating,/area/shuttle/freegolem) "aV" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/shuttle/freegolem) "aW" = (/obj/structure/shuttle/engine/propulsion{dir = 8; icon_state = "burst_l"},/turf/space,/area/shuttle/freegolem) -"aX" = (/obj/machinery/light/small,/turf/simulated/shuttle/plating,/area/shuttle/freegolem) +"aX" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/shuttle/freegolem) "aY" = (/turf/simulated/shuttle/wall{tag = "icon-swall13"; icon_state = "swall13"; dir = 2},/area/shuttle/freegolem) "aZ" = (/obj/machinery/door/airlock/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) "ba" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s6"; icon_state = "swall_s6"; dir = 2},/area/space) @@ -55,49 +55,49 @@ "bc" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/space) "bd" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area/space) "be" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"; dir = 2},/area/shuttle/freegolem) -"bf" = (/obj/machinery/computer/arcade/battle,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) -"bg" = (/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) -"bh" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"bf" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/shuttle/freegolem) +"bg" = (/obj/machinery/door/airlock/shuttle,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) +"bh" = (/turf/simulated/wall/mineral/titanium/interior,/area/shuttle/freegolem) "bi" = (/turf/simulated/shuttle/wall{tag = "icon-swall7"; icon_state = "swall7"; dir = 2},/area/space) "bj" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/space) "bk" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/space) "bl" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/space) "bm" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"; dir = 2},/area/space) -"bn" = (/obj/machinery/light{dir = 1; on = 1},/obj/effect/landmark/free_golem_spawn,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) -"bo" = (/obj/effect/landmark/free_golem_spawn,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"bn" = (/obj/machinery/vending/hydroseeds,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) +"bo" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) "bp" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/space) -"bq" = (/obj/machinery/mineral/equipment_vendor/golem,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"bq" = (/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) "br" = (/obj/structure/fans/tiny,/obj/machinery/door/airlock/shuttle{id_tag = "s_docking_airlock"; locked = 1},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) "bs" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/space) -"bt" = (/obj/item/resonator,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"bt" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) "bu" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/space) -"bv" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"; dir = 2},/area/shuttle/freegolem) -"bw" = (/obj/machinery/light{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"bv" = (/obj/machinery/light{dir = 1; on = 1},/obj/effect/landmark/free_golem_spawn,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) +"bw" = (/obj/effect/landmark/free_golem_spawn,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) "bx" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s5"; icon_state = "swall_s5"; dir = 2},/area/space) "by" = (/turf/simulated/shuttle/wall{tag = "icon-swall13"; icon_state = "swall13"; dir = 2},/area/space) "bz" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s9"; icon_state = "swall_s9"; dir = 2},/area/space) -"bA" = (/obj/machinery/mineral/ore_redemption/golem,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"bA" = (/obj/machinery/vending/coffee/free,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) "bB" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall4"; dir = 2},/area/shuttle/freegolem) "bC" = (/turf/simulated/shuttle/wall{dir = 2; icon_state = "swallc1"; tag = "icon-swall12"},/area/shuttle/freegolem) "bD" = (/obj/structure/window/full/shuttle{icon_state = "16"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/freegolem) "bE" = (/obj/structure/statue/gold/rd{name = "statue of the Liberator"},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) -"bF" = (/obj/machinery/computer/shuttle/golem_ship,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) -"bG" = (/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) -"bH" = (/obj/structure/extinguisher_cabinet{pixel_y = 30},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) -"bI" = (/obj/machinery/door/airlock/shuttle{id_tag = "s_docking_airlock"; locked = 1},/obj/structure/fans/tiny,/obj/docking_port/mobile{dir = 8; dwidth = 8; height = 20; id = "freegolem"; name = "Free Golem Ship"; roundstart_move = "freegolem_transit"; width = 16},/obj/docking_port/stationary{dir = 8; dwidth = 8; height = 20; id = "freegolem_z3"; name = "Small Asteroid"; width = 16},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"bF" = (/obj/machinery/mineral/equipment_vendor/golem,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) +"bG" = (/obj/item/resonator,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) +"bH" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) +"bI" = (/obj/item/gun/energy/kinetic_accelerator,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) "bJ" = (/obj/structure/window/full/shuttle{icon_state = "15"},/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/freegolem) "bK" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/table/wood,/obj/item/bedsheet/rd/royal_cape{layer = 3; pixel_x = 5; pixel_y = 9},/obj/item/book/manual/research_and_development{name = "Sacred Text of the Liberator"; pixel_x = -4; pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) -"bL" = (/obj/machinery/light,/obj/structure/chair/comfy/purp{icon_state = "comfychair"; dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) -"bM" = (/obj/structure/reagent_dispensers/watertank/high,/turf/simulated/shuttle/plating,/area/shuttle/freegolem) +"bL" = (/obj/machinery/mineral/ore_redemption/golem,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) +"bM" = (/obj/machinery/computer/shuttle/golem_ship,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) "bN" = (/turf/space,/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/shuttle/freegolem) -"bO" = (/obj/item/resonator/upgraded,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) -"bP" = (/obj/machinery/autolathe,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"bO" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) +"bP" = (/obj/structure/extinguisher_cabinet{pixel_y = 30},/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) "bQ" = (/turf/simulated/shuttle/wall{icon_state = "swallc4"},/area/shuttle/freegolem) -"bR" = (/obj/structure/table/wood,/obj/machinery/reagentgrinder,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) -"bS" = (/obj/machinery/computer/arcade/orion_trail,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) -"bT" = (/obj/machinery/light,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) -"bU" = (/obj/machinery/light,/obj/effect/landmark/free_golem_spawn,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) -"bV" = (/obj/machinery/vending/coffee/free,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"bR" = (/obj/machinery/door/airlock/shuttle{id_tag = "s_docking_airlock"; locked = 1},/obj/structure/fans/tiny,/obj/docking_port/mobile{dir = 8; dwidth = 8; height = 20; id = "freegolem"; name = "Free Golem Ship"; roundstart_move = "freegolem_transit"; width = 16},/obj/docking_port/stationary{dir = 8; dwidth = 8; height = 20; id = "freegolem_z3"; name = "Small Asteroid"; width = 16},/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) +"bS" = (/obj/machinery/light,/obj/structure/chair/comfy/purp{icon_state = "comfychair"; dir = 1},/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) +"bT" = (/obj/machinery/light/small,/obj/structure/extinguisher_cabinet{pixel_y = -30},/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) +"bU" = (/obj/structure/fans/tiny,/obj/machinery/door/airlock/shuttle{id_tag = "s_docking_airlock"; locked = 1},/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) +"bV" = (/obj/item/resonator/upgraded,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) "bW" = (/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space) "bX" = (/obj/machinery/power/solar,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/space) "bY" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/space) @@ -171,7 +171,7 @@ "do" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel,/area/tcommsat/computer) "dp" = (/obj/structure/chair/office/dark{dir = 4},/turf/simulated/floor/plasteel,/area/tcommsat/computer) "dq" = (/obj/machinery/computer/telecomms/server{network = list("tcommsat")},/turf/simulated/floor/plasteel,/area/tcommsat/computer) -"dr" = (/obj/structure/table/wood,/obj/item/storage/firstaid/brute,/obj/item/storage/firstaid/brute,/obj/item/storage/firstaid/brute,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"dr" = (/obj/machinery/autolathe,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) "ds" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel,/area/tcommsat/computer) "dt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plasteel,/area/tcommsat/computer) "du" = (/obj/structure/chair{dir = 4},/turf/simulated/floor/plasteel,/area/tcommsat/computer) @@ -215,24 +215,24 @@ "eg" = (/obj/machinery/telecomms/relay/preset/station,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "eh" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/tcommsat/chamber) "ei" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/tcommsat/chamber) -"ej" = (/obj/structure/table/wood,/obj/structure/table/wood,/obj/item/storage/firstaid/fire,/obj/item/storage/firstaid/fire,/obj/item/storage/firstaid/fire,/obj/machinery/light,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) -"ek" = (/obj/structure/table/wood,/obj/item/storage/firstaid/adv,/obj/item/storage/firstaid/adv,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"ej" = (/obj/structure/table/wood,/obj/machinery/reagentgrinder,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) +"ek" = (/obj/machinery/computer/arcade/battle,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) "el" = (/obj/machinery/door/window/brigdoor{dir = 1; name = "Telecomms Server Access"; req_access_txt = "61"},/obj/machinery/door/window/brigdoor{dir = 2; name = "Telecomms Server Access"; req_access_txt = "61"},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/tcommsat/chamber) "em" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/tcommsat/chamber) "en" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/lattice,/turf/space,/area/turret_protected/tcomsat) "eo" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) "ep" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/space,/area/turret_protected/tcomsat) -"eq" = (/obj/structure/table/wood,/obj/item/areaeditor/golem,/obj/item/disk/design_disk/golem_shell,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"eq" = (/obj/machinery/computer/arcade/orion_trail,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) "er" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5; level = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) "es" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/lattice,/turf/space,/area/turret_protected/tcomsat) "et" = (/obj/item/radio/intercom{pixel_y = 25},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "eu" = (/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "ev" = (/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "ew" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Telecoms Sat. Central Compartment APC"; pixel_x = -1; pixel_y = 26},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"ex" = (/obj/machinery/light/small{dir = 1},/turf/simulated/shuttle/plating,/area/shuttle/freegolem) +"ex" = (/obj/machinery/light,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) "ey" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "ez" = (/obj/machinery/camera{c_tag = "Telecomms Server Room North"; dir = 2; network = list("Telecomms")},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/light{dir = 1},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"eA" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/shuttle/plating,/area/shuttle/freegolem) +"eA" = (/obj/machinery/light,/obj/effect/landmark/free_golem_spawn,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) "eB" = (/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "eC" = (/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "eD" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/space) @@ -240,7 +240,7 @@ "eF" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/space) "eG" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) "eH" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4; initialize_directions = 11; level = 1},/obj/structure/lattice,/turf/space,/area/turret_protected/tcomsat) -"eI" = (/obj/structure/ore_box,/turf/simulated/shuttle/plating,/area/shuttle/freegolem) +"eI" = (/obj/machinery/vending/snack/free,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) "eJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "eK" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) "eL" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/turret_protected/tcomsat) @@ -248,7 +248,7 @@ "eN" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating/airless,/area/space) "eO" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating/airless,/area/space) "eP" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/space) -"eQ" = (/obj/item/gun/energy/kinetic_accelerator,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"eQ" = (/obj/structure/table/wood,/obj/item/storage/firstaid/brute,/obj/item/storage/firstaid/brute,/obj/item/storage/firstaid/brute,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) "eR" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) "eS" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; level = 1},/obj/structure/lattice,/turf/space,/area/turret_protected/tcomsat) "eT" = (/obj/machinery/telecomms/server/presets/supply,/turf/simulated/floor/plasteel{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; tag = "icon-vault (NORTH)"; temperature = 80},/area/tcommsat/chamber) @@ -273,7 +273,7 @@ "fm" = (/obj/structure/table,/obj/item/stock_parts/subspace/analyzer,/obj/item/stock_parts/subspace/analyzer,/obj/item/stock_parts/subspace/analyzer,/obj/machinery/status_display{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/plasteel,/area/turret_protected/tcomsat) "fn" = (/obj/machinery/camera{c_tag = "Telecomms East Solars"; dir = 4; network = list("Telecomms")},/turf/space,/area/space) "fo" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor/plating/airless,/area/space) -"fp" = (/obj/machinery/light/small,/obj/structure/extinguisher_cabinet{pixel_y = -30},/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"fp" = (/obj/structure/table/wood,/obj/item/storage/firstaid/adv,/obj/item/storage/firstaid/adv,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) "fq" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating/airless,/area/space) "fr" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) "fs" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/obj/machinery/light{dir = 4},/turf/space,/area/turret_protected/tcomsat) @@ -282,7 +282,7 @@ "fv" = (/obj/machinery/telecomms/bus/preset_two,/turf/simulated/floor/plasteel{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; tag = "icon-vault (NORTH)"; temperature = 80},/area/tcommsat/chamber) "fw" = (/obj/machinery/telecomms/relay/preset/telecomms,/turf/simulated/floor/bluegrid{icon_state = "dark"; name = "Mainframe Floor"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) "fx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/telecomms/hub/preset,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) -"fy" = (/obj/machinery/vending/snack/free,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"fy" = (/obj/structure/table/wood,/obj/structure/table/wood,/obj/item/storage/firstaid/fire,/obj/item/storage/firstaid/fire,/obj/item/storage/firstaid/fire,/obj/machinery/light,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) "fz" = (/obj/machinery/telecomms/processor/preset_four,/turf/simulated/floor/plasteel{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; tag = "icon-vault (EAST)"; temperature = 80},/area/tcommsat/chamber) "fA" = (/obj/machinery/telecomms/bus/preset_four,/turf/simulated/floor/plasteel{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; tag = "icon-vault (EAST)"; temperature = 80},/area/tcommsat/chamber) "fB" = (/obj/structure/sign/nosmoking_2{pixel_x = 32; pixel_y = 0},/obj/machinery/light{dir = 4},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) @@ -308,16 +308,19 @@ "fV" = (/obj/structure/table,/obj/item/stock_parts/subspace/crystal,/obj/item/stock_parts/subspace/crystal,/obj/item/stock_parts/subspace/crystal,/obj/machinery/light_switch{pixel_y = -28},/turf/simulated/floor/plasteel,/area/turret_protected/tcomsat) "fW" = (/obj/machinery/telecomms/server/presets/science,/turf/simulated/floor/plasteel{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; tag = "icon-vault (NORTH)"; temperature = 80},/area/tcommsat/chamber) "fX" = (/obj/machinery/telecomms/server/presets/medical,/turf/simulated/floor/plasteel{dir = 1; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; tag = "icon-vault (NORTH)"; temperature = 80},/area/tcommsat/chamber) -"fY" = (/obj/machinery/vending/hydronutrients,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) -"fZ" = (/obj/machinery/vending/hydroseeds,/turf/simulated/shuttle/floor{icon_state = "floor5"},/area/shuttle/freegolem) +"fY" = (/obj/structure/table/wood,/obj/item/areaeditor/golem,/obj/item/disk/design_disk/golem_shell,/turf/simulated/floor/mineral/titanium/purple,/area/shuttle/freegolem) +"fZ" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/shuttle/freegolem) "ga" = (/obj/machinery/telecomms/server/presets/command,/turf/simulated/floor/plasteel{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; tag = "icon-vault (EAST)"; temperature = 80},/area/tcommsat/chamber) "gb" = (/obj/machinery/telecomms/server/presets/security,/turf/simulated/floor/plasteel{dir = 4; icon_state = "vault"; name = "Mainframe floor"; nitrogen = 100; oxygen = 0; tag = "icon-vault (EAST)"; temperature = 80},/area/tcommsat/chamber) +"gc" = (/obj/machinery/chem_master,/turf/simulated/floor/plating,/area/shuttle/freegolem) "gd" = (/obj/machinery/camera{c_tag = "Telecomms Server Room South"; dir = 1; network = list("Telecomms")},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/light,/obj/machinery/hologram/holopad,/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber) +"ge" = (/obj/structure/ore_box,/turf/simulated/floor/plating,/area/shuttle/freegolem) "gf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/wall/r_wall,/area/tcommsat/chamber) "gg" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = "0"},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) "gh" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/space,/area/turret_protected/tcomsat) "gi" = (/obj/structure/window/reinforced,/obj/structure/lattice,/obj/machinery/light{dir = 1},/turf/space,/area/turret_protected/tcomsat) "gj" = (/turf/simulated/wall/r_wall,/area/turret_protected/tcomfoyer) +"gk" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/shuttle/freegolem) "gr" = (/obj/structure/window/reinforced,/obj/machinery/light{dir = 1},/turf/space,/area/turret_protected/tcomsat) "gs" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/space,/area/turret_protected/tcomsat) "gt" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/turret_protected/tcomsat) @@ -651,20 +654,20 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLaMaMaMaMaMaMaMaMaMaNaNaMaMaOaIaIaIaIaIaKaIaIaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPaQaQaQaQaQaQaQaQaRaSaSbMaVaWaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPaSaSaXaSaSaXaSaSaSaXaSaUaVaWaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLaMaMaYaZaZaMaMbeaMaZaZaMaMaMaMaMaOaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPfYfZbhbgbgbnboaPbVbgbgbgbhbgbqaVaWaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrbgbgbgbgbgbtbtaZbgbgbgbgbgbgbgaVaWaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLaMaYaZaZaMaMaMaMaMbvbwbgbgbgbgeQbAbBbCaJaJaIaIaIaIaIaIaIaIaIaIaKaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabDbEbFbgbgbgbgbGbgbgaZbgbgbgbgbgbgbgbHbIaJaJaIaIaIaIaIaIaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabJbKbLbgbgbgbgbgbgbgaZbgbgbgbgbgbgbgfpbraJaJaIaIaIaIaIaIaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNaMbeaZaZaMaMaMaMaMbvbwbgbgbgbgbObPbBbQaJaJaIaIaIaIaIaIaIaIaIaIaIaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrbgbgbgbgbgbtbtaZbgbgbgbgbgbgbRaVaWaIaIaIaIaIaIaIaIaIaIaIaIaIaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPbSbfbTbgbgbUboaPfybgbgdrejekeqaVaWaIaIaIaIaIaIaKaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNaMaMbeaZaZaMaMaYaMaZaZaMaMaMaMaMaOaIaIaIaIaIaIaIaIaIaIaKaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPaSaSexaSaSexaSaSaSexaSeAaVaWaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPeIeIeIeIeIeIeIeIaRaSaSeAaVaWaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPaQaQaQaQaQaQaQaQaRaSaSaUaVaWaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPaSaSaXaSaSaXaSaSaSaXaSbfaVaWaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLaMaMaYbgbgbhbhbhbhbgbgbhbhbhbhbBaOaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPbobnbtbqbqbvbwbhbAbqbqbqbtbqbFaVaWaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrbqbqbqbqbqbGbGbgbqbqbqbqbqbqbqaVaWaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaLaMaYaZaZbhbhbhbhbhbhbHbqbqbqbqbIbLbBbCaJaJaIaIaIaIaIaIaIaIaIaIaKaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabDbEbMbqbqbqbqbObqbqbgbqbqbqbqbqbqbqbPbRaJaJaIaIaIaIaIaIaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabJbKbSbqbqbqbqbqbqbqbgbqbqbqbqbqbqbqbTbUaJaJaIaIaIaIaIaIaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNaMbebgbgbhbhbhbhbhbhbHbqbqbqbqbVdrbBbQaJaJaIaIaIaIaIaIaIaIaIaIaIaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrbqbqbqbqbqbGbGbgbqbqbqbqbqbqejaVaWaIaIaIaIaIaIaIaIaIaIaIaIaIaJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPeqekexbqbqeAbwbheIbqbqeQfyfpfYaVaWaIaIaIaIaIaIaKaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNaMaMbebgbgbhbhbhbhbgbgbhbhbhbhbBaOaIaIaIaIaIaIaIaIaIaIaKaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPaSaSfZaSaSfZaSaSaSfZaSgcaVaWaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaPgegegegegegegegeaRaSaSgkaVaWaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabNaMaMaMaMaMaMaMaMaMaNaNaMaMaOaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaIaIaIaIaIaaaaaIaIaIaIaaaaaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaIaIaIaIaaaaaIaIaIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -695,3 +698,4 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} + diff --git a/code/__DEFINES/gamemode.dm b/code/__DEFINES/gamemode.dm index b1186ce1e0d..83e7be22e84 100644 --- a/code/__DEFINES/gamemode.dm +++ b/code/__DEFINES/gamemode.dm @@ -4,6 +4,8 @@ #define TARGET_INVALID_DEAD 3 #define TARGET_INVALID_NOCKEY 4 #define TARGET_INVALID_UNREACHABLE 5 +#define TARGET_INVALID_GOLEM 6 +#define TARGET_INVALID_EVENT 7 //gamemode istype helpers #define GAMEMODE_IS_BLOB (ticker && istype(ticker.mode, /datum/game_mode/blob)) diff --git a/code/__DEFINES/shuttle.dm b/code/__DEFINES/shuttle.dm new file mode 100644 index 00000000000..22af9a38670 --- /dev/null +++ b/code/__DEFINES/shuttle.dm @@ -0,0 +1,16 @@ +//Docking error flags +#define DOCKING_SUCCESS 0 +#define DOCKING_BLOCKED (1<<0) +#define DOCKING_IMMOBILIZED (1<<1) +#define DOCKING_AREA_EMPTY (1<<2) +#define DOCKING_NULL_DESTINATION (1<<3) +#define DOCKING_NULL_SOURCE (1<<4) + +//Rotation params +#define ROTATE_DIR 1 +#define ROTATE_SMOOTH 2 +#define ROTATE_OFFSET 4 + +#define SHUTTLE_DOCKER_LANDING_CLEAR 1 +#define SHUTTLE_DOCKER_BLOCKED_BY_HIDDEN_PORT 2 +#define SHUTTLE_DOCKER_BLOCKED 3 \ No newline at end of file diff --git a/code/__HELPERS/maths.dm b/code/__HELPERS/maths.dm index c0c22872a32..ec9fcb5fb31 100644 --- a/code/__HELPERS/maths.dm +++ b/code/__HELPERS/maths.dm @@ -120,4 +120,24 @@ var/gaussian_next /proc/round_down(num) if(round(num) != num) return round(num--) - else return num \ No newline at end of file + else return num + +// Returns a list where [1] is all x values and [2] is all y values that overlap between the given pair of rectangles +/proc/get_overlap(x1, y1, x2, y2, x3, y3, x4, y4) + var/list/region_x1 = list() + var/list/region_y1 = list() + var/list/region_x2 = list() + var/list/region_y2 = list() + + // These loops create loops filled with x/y values that the boundaries inhabit + // ex: list(5, 6, 7, 8, 9) + for(var/i in min(x1, x2) to max(x1, x2)) + region_x1["[i]"] = TRUE + for(var/i in min(y1, y2) to max(y1, y2)) + region_y1["[i]"] = TRUE + for(var/i in min(x3, x4) to max(x3, x4)) + region_x2["[i]"] = TRUE + for(var/i in min(y3, y4) to max(y3, y4)) + region_y2["[i]"] = TRUE + + return list(region_x1 & region_x2, region_y1 & region_y2) \ No newline at end of file diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index bae7002d711..78148aee00e 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -14,6 +14,7 @@ GLOBAL_LIST_INIT(janitorial_equipment, list()) //list of janitorial equipment GLOBAL_LIST_INIT(crafting_recipes, list()) //list of all crafting recipes GLOBAL_LIST_INIT(prisoncomputer_list, list()) GLOBAL_LIST_INIT(cell_logs, list()) +GLOBAL_LIST_INIT(navigation_computers, list()) GLOBAL_LIST_INIT(all_areas, list()) GLOBAL_LIST_INIT(machines, list()) diff --git a/code/_globalvars/lists/reagents.dm b/code/_globalvars/lists/reagents.dm index daa2d634b9f..c69f53f2246 100644 --- a/code/_globalvars/lists/reagents.dm +++ b/code/_globalvars/lists/reagents.dm @@ -15,7 +15,7 @@ GLOBAL_LIST_INIT(standard_chemicals, list("slimejelly","blood","water","lube","c "cryoxadone","spaceacillin","carpotoxin","lsd","fluorosurfactant", "fluorosurfactant","ethanol","ammonia","diethylamine","antihol","pancuronium", "lipolicide","condensedcapsaicin","frostoil","amanitin","psilocybin", - "enzyme","nothing","salglu_solution","antifreeze","neurotoxin")) + "enzyme","nothing","salglu_solution","antifreeze","neurotoxin", "jestosterone")) // Rare chemicals GLOBAL_LIST_INIT(rare_chemicals, list("minttoxin","syndicate_nanites", "xenomicrobes")) // Standard medicines diff --git a/code/controllers/subsystem/shuttles.dm b/code/controllers/subsystem/shuttles.dm index 64ae30f2952..30021df4fb1 100644 --- a/code/controllers/subsystem/shuttles.dm +++ b/code/controllers/subsystem/shuttles.dm @@ -39,6 +39,8 @@ SUBSYSTEM_DEF(shuttle) var/list/supply_packs = list() var/datum/round_event/shuttle_loan/shuttle_loan var/sold_atoms = "" + var/list/hidden_shuttle_turfs = list() //all turfs hidden from navigation computers associated with a list containing the image hiding them and the type of the turf they are pretending to be + var/list/hidden_shuttle_turf_images = list() //only the images from the above list /datum/controller/subsystem/shuttle/Initialize(start_timeofday) ordernum = rand(1,9000) @@ -49,7 +51,7 @@ SUBSYSTEM_DEF(shuttle) WARNING("No /obj/docking_port/mobile/emergency/backup placed on the map!") if(!supply) WARNING("No /obj/docking_port/mobile/supply placed on the map!") - + initial_load() for(var/typepath in subtypesof(/datum/supply_packs)) @@ -259,4 +261,54 @@ SUBSYSTEM_DEF(shuttle) return O +/datum/controller/subsystem/shuttle/proc/get_dock_overlap(x0, y0, x1, y1, z) + . = list() + var/list/stationary_cache = stationary + for(var/i in 1 to stationary_cache.len) + var/obj/docking_port/port = stationary_cache[i] + if(!port || port.z != z) + continue + var/list/bounds = port.return_coords() + var/list/overlap = get_overlap(x0, y0, x1, y1, bounds[1], bounds[2], bounds[3], bounds[4]) + var/list/xs = overlap[1] + var/list/ys = overlap[2] + if(xs.len && ys.len) + .[port] = overlap + +/datum/controller/subsystem/shuttle/proc/update_hidden_docking_ports(list/remove_turfs, list/add_turfs) + var/list/remove_images = list() + var/list/add_images = list() + + if(remove_turfs) + for(var/T in remove_turfs) + var/list/L = hidden_shuttle_turfs[T] + if(L) + remove_images += L[1] + hidden_shuttle_turfs -= remove_turfs + + if(add_turfs) + for(var/V in add_turfs) + var/turf/T = V + var/image/I + if(remove_images.len) + //we can just reuse any images we are about to delete instead of making new ones + I = remove_images[1] + remove_images.Cut(1, 2) + I.loc = T + else + I = image(loc = T) + add_images += I + I.appearance = T.appearance + I.override = TRUE + hidden_shuttle_turfs[T] = list(I, T.type) + + hidden_shuttle_turf_images -= remove_images + hidden_shuttle_turf_images += add_images + + for(var/V in GLOB.navigation_computers) + var/obj/machinery/computer/camera_advanced/shuttle_docker/C = V + C.update_hidden_docking_ports(remove_images, add_images) + + QDEL_LIST(remove_images) + #undef CALL_SHUTTLE_REASON_LENGTH \ No newline at end of file diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm index 160a2cce6b1..63fa3af0605 100644 --- a/code/datums/diseases/_MobProcs.dm +++ b/code/datums/diseases/_MobProcs.dm @@ -9,21 +9,21 @@ /mob/proc/CanContractDisease(datum/disease/D) if(stat == DEAD) - return 0 + return FALSE if(D.GetDiseaseID() in resistances) - return 0 + return FALSE if(HasDisease(D)) - return 0 + return FALSE - if(count_by_type(viruses, /datum/disease/advance) >= 3) - return 0 + if(istype(D, /datum/disease/advance) && count_by_type(viruses, /datum/disease/advance) > 0) + return FALSE if(!(type in D.viable_mobtypes)) return -1 //for stupid fucking monkies - return 1 + return TRUE /mob/proc/ContractDisease(datum/disease/D) diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index a218746ca07..e0711d88e5f 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -298,7 +298,7 @@ var/list/advance_cures = list( if(HasSymptom(S)) return - if(symptoms.len < 5 + rand(-1, 1)) + if(symptoms.len < (VIRUS_SYMPTOM_LIMIT - 1) + rand(-1, 1)) symptoms += S else RemoveSymptom(pick(symptoms)) @@ -364,7 +364,7 @@ var/list/advance_cures = list( if(!user) return - var/i = 5 + var/i = VIRUS_SYMPTOM_LIMIT var/datum/disease/advance/D = new(0, null) D.symptoms = list() diff --git a/code/datums/diseases/advance/presets.dm b/code/datums/diseases/advance/presets.dm index 15172016127..a641db2383f 100644 --- a/code/datums/diseases/advance/presets.dm +++ b/code/datums/diseases/advance/presets.dm @@ -48,12 +48,4 @@ if(!D) name = "Reality Enhancer" symptoms = list(new/datum/symptom/sensory_restoration) - ..(process, D, copy) - -// Sensory Destruction - -/datum/disease/advance/sensory_destruction/New(var/process = 1, var/datum/disease/advance/D, var/copy = 0) - if(!D) - name = "Reality Destruction" - symptoms = list(new/datum/symptom/sensory_destruction) ..(process, D, copy) \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/sensory.dm b/code/datums/diseases/advance/symptoms/sensory.dm index c3095a69e08..b1571aec62f 100644 --- a/code/datums/diseases/advance/symptoms/sensory.dm +++ b/code/datums/diseases/advance/symptoms/sensory.dm @@ -15,8 +15,8 @@ Bonus ////////////////////////////////////// */ -/datum/symptom/sensory_restoration - name = "Sensory Restoration" +/datum/symptom/mind_restoration + name = "Mind Restoration" stealth = -1 resistance = -4 stage_speed = -4 @@ -24,85 +24,42 @@ Bonus level = 5 severity = 0 -/datum/symptom/sensory_restoration/Activate(var/datum/disease/advance/A) +/datum/symptom/mind_restoration/Activate(datum/disease/advance/A) ..() if(prob(SYMPTOM_ACTIVATION_PROB * 3)) var/mob/living/M = A.affected_mob var/datum/reagents/RD = M.reagents - switch(A.stage) - if(2) - if(RD.check_and_add("oculine", 10, 10)) - to_chat(M, "Your hearing feels clearer and crisp.") - if(3) - if(RD.check_and_add("antihol", 10, 10)) - to_chat(M, "You feel sober.") - RD.check_and_add("oculine", 10, 10) - if(4) - if(RD.check_and_add("synaphydramine", 10, 5)) - to_chat(M, "You feel focused.") - RD.check_and_add("antihol", 10, 10) - RD.check_and_add("oculine", 10, 10) - if(5) - if(RD.check_and_add("mannitol", 10, 10)) - to_chat(M, "Your mind feels relaxed.") - RD.check_and_add("synaphydramine", 10, 5) - RD.check_and_add("antihol", 10, 10) - RD.check_and_add("oculine", 10, 10) + if(A.stage >= 3) + M.AdjustSlur(-2) + M.AdjustDrunk(-4) + M.reagents.remove_all_type(/datum/reagent/consumable/ethanol, 3, 0, 1) + if(A.stage >= 4) + M.AdjustDrowsy(-2) + if(RD.has_reagent("lsd")) + RD.remove_reagent("lsd", 5) + if(RD.has_reagent("histamine")) + RD.remove_reagent("histamine", 5) + M.AdjustHallucinate(-10) + if(A.stage >= 5) + RD.check_and_add("mannitol", 10, 10) - return - -/* -////////////////////////////////////// -Sensory-Destruction - noticable. - Lowers resistance - Decreases stage speed tremendously. - Decreases transmittablity tremendously. - the drugs hit them so hard they have to focus on not dying - -Bonus - The body generates Sensory destructive chemicals. - You cannot taste anything anymore. - ethanol for extremely drunk victim - lsd to break the mind - impedrezene to ruin the brain - -////////////////////////////////////// -*/ -/datum/symptom/sensory_destruction - name = "Sensory destruction" +/datum/symptom/sensory_restoration + name = "Sensory Restoration" stealth = -1 - resistance = -2 - stage_speed = -3 + resistance = -3 + stage_speed = -2 transmittable = -4 - level = 6 - severity = 5 + level = 4 -/datum/symptom/sensory_destruction/Activate(var/datum/disease/advance/A) +/datum/symptom/sensory_restoration/Activate(datum/disease/advance/A) ..() - if(prob(SYMPTOM_ACTIVATION_PROB)) + if(prob(SYMPTOM_ACTIVATION_PROB * 5)) var/mob/living/M = A.affected_mob switch(A.stage) - if(1) - to_chat(M, "You can't taste a thing.") - if(2) - to_chat(M, "You can't feel anything.") - if(prob(10)) - M.reagents.add_reagent("morphine",rand(5,7)) - if(3) - M.reagents.add_reagent("ethanol",rand(5,7)) - to_chat(M, "You feel absolutely hammered.") - if(prob(15)) - M.reagents.add_reagent("morphine",rand(5,7)) - if(4) - M.reagents.add_reagent_list(list("ethanol"=rand(7,15),"lsd"=rand(5,10))) - to_chat(M, "You try to focus on not dying.") - if(prob(20)) - M.reagents.add_reagent("morphine",rand(5,7)) - if(5) - M.reagents.add_reagent_list(list("haloperidol"=rand(5,15),"ethanol"=rand(7,20),"lsd"=rand(5,15))) - to_chat(M, "u can count 2 potato!") - if(prob(25)) - M.reagents.add_reagent("morphine",rand(5,7)) - return \ No newline at end of file + if(4, 5) + if(M.reagents.get_reagent_amount("oculine") < 20) + M.reagents.add_reagent("oculine", 20) + else + if(prob(SYMPTOM_ACTIVATION_PROB * 5)) + to_chat(M, "[pick("Your eyes feel great.","You feel like your eyes can focus more clearly.", "You don't feel the need to blink.","Your ears feel great.","Your healing feels more acute.")]") \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/stimulant.dm b/code/datums/diseases/advance/symptoms/stimulant.dm deleted file mode 100644 index 3cc4be975b4..00000000000 --- a/code/datums/diseases/advance/symptoms/stimulant.dm +++ /dev/null @@ -1,38 +0,0 @@ -/* -////////////////////////////////////// - -Stimulant //gotta go fast - - Noticable. - Lowers resistance significantly. - Decreases stage speed moderately.. - Decreases transmittablity tremendously. - Moderate Level. - -Bonus - The body generates Ephedrine. - -////////////////////////////////////// -*/ - -/datum/symptom/stimulant - - name = "Stimulant" - stealth = -1 - resistance = -3 - stage_speed = -2 - transmittable = -4 - level = 3 - -/datum/symptom/stimulant/Activate(datum/disease/advance/A) - ..() - if(prob(SYMPTOM_ACTIVATION_PROB * 10)) - var/mob/living/M = A.affected_mob - switch(A.stage) - if(5) - if(M.reagents.get_reagent_amount("ephedrine") < 10) - M.reagents.add_reagent("ephedrine", 10) - else - if(prob(SYMPTOM_ACTIVATION_PROB * 5)) - to_chat(M, "[pick("You feel restless.", "You feel like running laps around the station.")]") - return \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/vision.dm b/code/datums/diseases/advance/symptoms/vision.dm index ca25e720b18..aa47b1c7a2a 100644 --- a/code/datums/diseases/advance/symptoms/vision.dm +++ b/code/datums/diseases/advance/symptoms/vision.dm @@ -47,44 +47,4 @@ Bonus M.BecomeNearsighted() if(prob(eyes.damage - 10 + 1)) if(M.BecomeBlind()) - to_chat(M, "You go blind!") - - -/* -////////////////////////////////////// - -Ocular Restoration - - Noticable. - Lowers resistance significantly. - Decreases stage speed moderately.. - Decreases transmittablity tremendously. - High level. - -Bonus - Restores eyesight. - -////////////////////////////////////// -*/ - -/datum/symptom/visionaid - - name = "Ocular Restoration" - stealth = -1 - resistance = -3 - stage_speed = -2 - transmittable = -4 - level = 4 - -/datum/symptom/visionaid/Activate(datum/disease/advance/A) - ..() - if(prob(SYMPTOM_ACTIVATION_PROB * 5)) - var/mob/living/M = A.affected_mob - switch(A.stage) - if(4, 5) - if(M.reagents.get_reagent_amount("oculine") < 20) - M.reagents.add_reagent("oculine", 20) - else - if(prob(SYMPTOM_ACTIVATION_PROB * 5)) - to_chat(M, "[pick("Your eyes feel great.", "You are now blinking manually.", "You don't feel the need to blink.")]") - return + to_chat(M, "You go blind!") \ No newline at end of file diff --git a/code/datums/diseases/advance/symptoms/weight.dm b/code/datums/diseases/advance/symptoms/weight.dm index 399a67675eb..1378df4d05e 100644 --- a/code/datums/diseases/advance/symptoms/weight.dm +++ b/code/datums/diseases/advance/symptoms/weight.dm @@ -1,47 +1,6 @@ /* ////////////////////////////////////// -Weight Gain - - Very Very Noticable. - Decreases resistance. - Decreases stage speed. - Reduced transmittable. - Intense Level. - -Bonus - Increases the weight gain of the mob, - forcing it to eventually turn fat. -////////////////////////////////////// -*/ - -/datum/symptom/weight_gain - - name = "Weight Gain" - stealth = -3 - resistance = -3 - stage_speed = -2 - transmittable = -2 - level = 4 - severity = 1 - -/datum/symptom/weight_gain/Activate(datum/disease/advance/A) - ..() - if(prob(SYMPTOM_ACTIVATION_PROB)) - var/mob/living/M = A.affected_mob - switch(A.stage) - if(1, 2, 3, 4) - to_chat(M, "[pick("You feel blubbery.", "Your stomach hurts.")]") - else - M.overeatduration = min(M.overeatduration + 100, 600) - M.nutrition = min(M.nutrition + 100, NUTRITION_LEVEL_FULL) - - return - - -/* -////////////////////////////////////// - Weight Loss Very Very Noticable. @@ -77,45 +36,4 @@ Bonus else to_chat(M, "[pick("So hungry...", "You'd kill someone for a bite of food...", "Hunger cramps seize you...")]") M.overeatduration = max(M.overeatduration - 100, 0) - M.nutrition = max(M.nutrition - 100, 0) - - return - -/* -////////////////////////////////////// - -Weight Even - - Very Noticable. - Decreases resistance. - Decreases stage speed. - Reduced transmittable. - High level. - -Bonus - Causes the weight of the mob to - be even, meaning eating isn't - required anymore. - -////////////////////////////////////// -*/ - -/datum/symptom/weight_even - - name = "Weight Even" - stealth = -3 - resistance = -2 - stage_speed = -2 - transmittable = -2 - level = 4 - -/datum/symptom/weight_even/Activate(datum/disease/advance/A) - ..() - if(prob(SYMPTOM_ACTIVATION_PROB)) - var/mob/living/M = A.affected_mob - switch(A.stage) - if(4, 5) - M.overeatduration = 0 - M.nutrition = NUTRITION_LEVEL_WELL_FED + 50 - - return \ No newline at end of file + M.nutrition = max(M.nutrition - 100, 0) \ No newline at end of file diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 0e826d2da17..9774d56e23e 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -30,6 +30,7 @@ var/assigned_role //assigned role is what job you're assigned to when you join the station. var/special_role //special roles are typically reserved for antags or roles like ERT. If you want to avoid a character being automatically announced by the AI, on arrival (becuase they're an off station character or something); ensure that special_role and assigned_role are equal. + var/offstation_role = FALSE //set to true for ERT, deathsquad, abductors, etc, that can go from and to z2 at will and shouldn't be antag targets var/list/restricted_roles = list() var/list/spell_list = list() // Wizard mode & "Give Spell" badmin button. diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 11ce6c49e96..e04efee8328 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -825,7 +825,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine cost = 30 containertype = /obj/structure/closet/crate/secure containername = "IV drip crate" - access = access_cmo + access = access_medical /datum/supply_packs/medical/surgery name = "Surgery Crate" @@ -1036,6 +1036,15 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine containername = "party equipment" announce_beacons = list("Bar" = list("Bar")) +/datum/supply_packs/organic/bar + name = "Bar Starter Kit" + contains = list(/obj/item/storage/box/drinkingglasses, + /obj/item/circuitboard/soda, + /obj/item/circuitboard/beer) + cost = 20 + containername = "beer starter kit" + announce_beacons = list("Bar" = list("Bar")) + //////// livestock /datum/supply_packs/organic/cow name = "Cow Crate" diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index dc8eef959d1..4e49980af5b 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -482,6 +482,16 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) surplus = 25 gamemodes = list(/datum/game_mode/nuclear) +/datum/uplink_item/dangerous/sniper_compact //For when you really really hate that one guy. + name = "Compact Sniper Rifle" + desc = "A compact, unscoped version of the operative sniper rifle. Packs a powerful punch, but ammo is limited." + reference = "CSR" + item = /obj/item/gun/projectile/automatic/sniper_rifle/compact + cost = 16 + surplus = 0 + cant_discount = TRUE + excludefrom = list(/datum/game_mode/nuclear) + /datum/uplink_item/dangerous/crossbow name = "Energy Crossbow" desc = "A miniature energy crossbow that is small enough both to fit into a pocket and to slip into a backpack unnoticed by observers. Fires bolts tipped with toxin, a poisonous substance that is the product of a living organism. Stuns enemies for a short period of time. Recharges automatically." @@ -921,7 +931,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) reference = "PB" item = /obj/item/pizza_bomb cost = 5 - surplus = 8 + surplus = 80 /datum/uplink_item/explosives/grenadier name = "Grenadier's belt" @@ -1597,6 +1607,14 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/storage/box/syndicate excludefrom = list(/datum/game_mode/nuclear) cant_discount = TRUE // You fucking wish + var/crate_value = 50 + +/datum/uplink_item/badass/surplus_crate/super + name = "Syndicate Super Surplus Crate" + desc = "A crate containing 125 telecrystals worth of random syndicate leftovers." + reference = "SYSS" + cost = 40 + crate_value = 125 /datum/uplink_item/badass/surplus_crate/spawn_item(turf/loc, obj/item/uplink/U) var/obj/structure/closet/crate/C = new(loc) @@ -1604,16 +1622,16 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) var/list/buyable_items = list() for(var/category in temp_uplink_list) buyable_items += temp_uplink_list[category] + var/remaining_TC = crate_value var/list/bought_items = list() var/list/itemlog = list() U.uses -= cost - U.used_TC = 20 - var/remaining_TC = 50 + U.used_TC = cost var/datum/uplink_item/I while(remaining_TC) I = pick(buyable_items) - if(!I.surplus) + if(!I.surplus || prob(100 - I.surplus)) continue if(I.cost > remaining_TC) continue diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index ac2b07ad243..067223c0285 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -61,6 +61,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station var/outdoors = 0 //For space, the asteroid, lavaland, etc. Used with blueprints to determine if we are adding a new area (vs editing a station room) var/xenobiology_compatible = FALSE //Can the Xenobio management console transverse this area by default? + var/nad_allowed = FALSE //is the station NAD allowed on this area? /*Adding a wizard area teleport list because motherfucking lag -- Urist*/ /*I am far too lazy to make it a proper list of areas so I'll just make it run the usual telepot routine at the start of the game*/ @@ -168,31 +169,36 @@ var/list/ghostteleportlocs = list() name = "\improper Emergency Shuttle" music = "music/escape.ogg" icon_state = "shuttle2" + nad_allowed = TRUE /area/shuttle/pod_1 name = "\improper Escape Pod One" music = "music/escape.ogg" icon_state = "shuttle" + nad_allowed = TRUE /area/shuttle/pod_2 name = "\improper Escape Pod Two" music = "music/escape.ogg" icon_state = "shuttle" + nad_allowed = TRUE /area/shuttle/pod_3 name = "\improper Escape Pod Three" music = "music/escape.ogg" icon_state = "shuttle" + nad_allowed = TRUE /area/shuttle/pod_4 name = "\improper Escape Pod Four" music = "music/escape.ogg" icon_state = "shuttle" - + nad_allowed = TRUE /area/shuttle/escape_pod1 name = "\improper Escape Pod One" music = "music/escape.ogg" + nad_allowed = TRUE /area/shuttle/escape_pod1/station icon_state = "shuttle2" @@ -206,6 +212,7 @@ var/list/ghostteleportlocs = list() /area/shuttle/escape_pod2 name = "\improper Escape Pod Two" music = "music/escape.ogg" + nad_allowed = TRUE /area/shuttle/escape_pod2/station icon_state = "shuttle2" @@ -219,6 +226,7 @@ var/list/ghostteleportlocs = list() /area/shuttle/escape_pod3 name = "\improper Escape Pod Three" music = "music/escape.ogg" + nad_allowed = TRUE /area/shuttle/escape_pod3/station icon_state = "shuttle2" @@ -232,6 +240,7 @@ var/list/ghostteleportlocs = list() /area/shuttle/escape_pod5 //Pod 4 was lost to meteors name = "\improper Escape Pod Five" music = "music/escape.ogg" + nad_allowed = TRUE /area/shuttle/escape_pod5/station icon_state = "shuttle2" @@ -304,6 +313,7 @@ var/list/ghostteleportlocs = list() /area/shuttle/syndicate_elite name = "\improper Syndicate Elite Shuttle" icon_state = "shuttlered" + nad_allowed = TRUE /area/shuttle/syndicate_elite/mothership name = "\improper Syndicate Elite Shuttle" @@ -316,6 +326,7 @@ var/list/ghostteleportlocs = list() /area/shuttle/syndicate_sit name = "\improper Syndicate SIT Shuttle" icon_state = "shuttlered" + nad_allowed = TRUE /area/shuttle/assault_pod name = "Steel Rain" @@ -451,6 +462,7 @@ var/list/ghostteleportlocs = list() /area/shuttle/syndicate name = "Syndicate Nuclear Team Shuttle" icon_state = "shuttle" + nad_allowed = TRUE /area/shuttle/trade name = "Trade Shuttle" @@ -491,6 +503,7 @@ var/list/ghostteleportlocs = list() icon_state = "centcom" requires_power = 0 dynamic_lighting = 0 + nad_allowed = TRUE /area/centcom/control name = "\improper Centcom Control" @@ -537,6 +550,7 @@ var/list/ghostteleportlocs = list() name = "\improper Syndicate Forward Base" icon_state = "syndie-ship" requires_power = 0 + nad_allowed = TRUE /area/syndicate_mothership/control name = "\improper Syndicate Control Room" diff --git a/code/game/dna/genes/disabilities.dm b/code/game/dna/genes/disabilities.dm index 29f8bbf0215..ae3539a2867 100644 --- a/code/game/dna/genes/disabilities.dm +++ b/code/game/dna/genes/disabilities.dm @@ -105,15 +105,25 @@ /datum/dna/gene/disability/nervousness/New() block=NERVOUSBLOCK + /datum/dna/gene/disability/blindness name="Blindness" - activation_message="You can't seem to see anything." - deactivation_message ="You can see now, in case you didn't notice..." + activation_message = "You can't seem to see anything." + deactivation_message = "You can see now, in case you didn't notice..." instability = -GENE_INSTABILITY_MAJOR - disability=BLIND + disability = BLIND /datum/dna/gene/disability/blindness/New() - block=BLINDBLOCK + block = BLINDBLOCK + +/datum/dna/gene/disability/blindness/activate(mob/M, connected, flags) + ..() + M.update_blind_effects() + +/datum/dna/gene/disability/blindness/deactivate(mob/M, connected, flags) + ..() + M.update_blind_effects() + /datum/dna/gene/disability/colourblindness name = "Colourblindness" diff --git a/code/game/dna/genes/vg_powers.dm b/code/game/dna/genes/vg_powers.dm index 9173646ee28..9ab851e86bf 100644 --- a/code/game/dna/genes/vg_powers.dm +++ b/code/game/dna/genes/vg_powers.dm @@ -227,7 +227,7 @@ /obj/effect/proc_holder/spell/targeted/remotetalk/cast(list/targets, mob/user = usr) if(!ishuman(user)) return var/say = input("What do you wish to say") as text|null - if(!say) + if(!say || usr.stat) return say = strip_html(say) say = pencode_to_html(say, usr, format = 0, fields = 0) diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index a4c25350e5f..d0ac848d905 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -140,7 +140,8 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon" if(changeling.current.mind.assigned_role == "Clown") to_chat(changeling.current, "You have evolved beyond your clownish nature, allowing you to wield weapons without harming yourself.") changeling.current.mutations.Remove(CLUMSY) - + var/datum/action/innate/toggle_clumsy/A = new + A.Grant(changeling.current) var/obj_count = 1 for(var/datum/objective/objective in changeling.objectives) to_chat(changeling.current, "Objective #[obj_count]: [objective.explanation_text]") diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index 1423e9155b4..203607576b6 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -157,7 +157,8 @@ var/global/list/all_cults = list() if(mob.mind.assigned_role == "Clown") to_chat(mob, "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.") mob.mutations.Remove(CLUMSY) - + var/datum/action/innate/toggle_clumsy/A = new + A.Grant(mob) var/obj/item/paper/talisman/supply/T = new(mob) var/list/slots = list ( "backpack" = slot_in_backpack, diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 32d7919c97e..1ed5e812989 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -353,7 +353,7 @@ var/list/teleport_runes = list() var/turf/T = get_turf(src) for(var/mob/living/M in T.contents) - if(!iscultist(M) && !ismindshielded(M) && ishuman(M)) + if(!iscultist(M) && !ismindshielded(M) && !isgolem(M) && ishuman(M)) convertees.Add(M) if(!convertees.len) fail_invoke() diff --git a/code/game/gamemodes/devil/game_mode.dm b/code/game/gamemodes/devil/game_mode.dm index 7b0be8e6e0f..f8b980f2dfd 100644 --- a/code/game/gamemodes/devil/game_mode.dm +++ b/code/game/gamemodes/devil/game_mode.dm @@ -39,6 +39,8 @@ if(devil_mind.assigned_role == "Clown") to_chat(devil_mind.current, "Your infernal nature allows you to wield weapons without harming yourself.") devil_mind.current.mutations.Remove(CLUMSY) + var/datum/action/innate/toggle_clumsy/A = new + A.Grant(devil_mind.current) spawn(10) devil_mind.devilinfo.update_hud() if(issilicon(devil_mind.current)) diff --git a/code/game/gamemodes/heist/heist.dm b/code/game/gamemodes/heist/heist.dm index 4cbe909ef84..e8a3ff6c981 100644 --- a/code/game/gamemodes/heist/heist.dm +++ b/code/game/gamemodes/heist/heist.dm @@ -53,6 +53,7 @@ var/global/list/obj/cortical_stacks = list() //Stacks for 'leave nobody behind' for(var/datum/mind/raider in raiders) raider.assigned_role = SPECIAL_ROLE_RAIDER raider.special_role = SPECIAL_ROLE_RAIDER + raider.offstation_role = TRUE ..() return 1 diff --git a/code/game/gamemodes/miniantags/abduction/abduction.dm b/code/game/gamemodes/miniantags/abduction/abduction.dm index 38f01278fe9..587c2b3d476 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction.dm @@ -76,10 +76,12 @@ scientist.assigned_role = SPECIAL_ROLE_ABDUCTOR_SCIENTIST scientist.special_role = SPECIAL_ROLE_ABDUCTOR_SCIENTIST + scientist.offstation_role = TRUE log_game("[key_name(scientist)] has been selected as an abductor team [team_number] scientist.") agent.assigned_role = SPECIAL_ROLE_ABDUCTOR_AGENT agent.special_role = SPECIAL_ROLE_ABDUCTOR_AGENT + agent.offstation_role = TRUE log_game("[key_name(agent)] has been selected as an abductor team [team_number] agent.") abductors |= agent diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 195629197c5..95849d31f65 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -54,6 +54,7 @@ proc/issyndicate(mob/living/M as mob) for(var/datum/mind/synd_mind in syndicates) synd_mind.assigned_role = SPECIAL_ROLE_NUKEOPS //So they aren't chosen for other jobs. synd_mind.special_role = SPECIAL_ROLE_NUKEOPS + synd_mind.offstation_role = TRUE return 1 @@ -172,6 +173,7 @@ proc/issyndicate(mob/living/M as mob) M.dna.species.create_organs(M) M.cleanSE() //No fat/blind/colourblind/epileptic/whatever ops. M.overeatduration = 0 + M.flavor_text = null var/obj/item/organ/external/head/head_organ = M.get_organ("head") var/hair_c = pick("#8B4513","#000000","#FF4500","#FFD700") // Brown, black, red, blonde diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 776652a3d6b..94190149848 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -402,19 +402,34 @@ var/bomb_set icon_state = "nucleardisk" armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 30, bio = 0, rad = 0) +/obj/item/disk/nuclear/unrestricted + desc = "Seems to have been stripped of its safeties, you better not lose it." + /obj/item/disk/nuclear/New() ..() processing_objects.Add(src) GLOB.poi_list |= src /obj/item/disk/nuclear/process() - var/turf/disk_loc = get_turf(src) - if(!is_secure_level(disk_loc.z)) + if(!check_disk_loc()) var/holder = get(src, /mob) if(holder) to_chat(holder, "You can't help but feel that you just lost something back there...") qdel(src) + //station disk is allowed on z1, escape shuttle/pods, CC, and syndicate shuttles/base, reset otherwise +/obj/item/disk/nuclear/proc/check_disk_loc() + var/turf/T = get_turf(src) + var/area/A = get_area(src) + if(is_station_level(T.z)) + return TRUE + if(A.nad_allowed) + return TRUE + return FALSE + +/obj/item/disk/nuclear/unrestricted/check_disk_loc() + return TRUE + /obj/item/disk/nuclear/Destroy(force) var/turf/diskturf = get_turf(src) diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index aa19a52fa42..0f59f234d49 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -35,6 +35,11 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu var/turf/current_location = get_turf(possible_target.current) if(current_location && !is_level_reachable(current_location.z)) return TARGET_INVALID_UNREACHABLE + if(isgolem(possible_target.current)) + return TARGET_INVALID_GOLEM + if(possible_target.offstation_role) + return TARGET_INVALID_EVENT + /datum/objective/proc/find_target() var/list/possible_targets = list() diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index ccf70a72173..7cab3de5aa1 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -122,7 +122,8 @@ if(mob.mind.assigned_role == "Clown") to_chat(mob, "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.") mob.mutations.Remove(CLUMSY) - + var/datum/action/innate/toggle_clumsy/A = new + A.Grant(mob) var/obj/item/flash/T = new(mob) var/obj/item/toy/crayon/spraycan/R = new(mob) diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index 2c613e7cdb8..de7ce59eaa2 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -299,6 +299,9 @@ if(traitor_mob.mind.assigned_role == "Clown") to_chat(traitor_mob, "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.") traitor_mob.mutations.Remove(CLUMSY) + var/datum/action/innate/toggle_clumsy/A = new + A.Grant(traitor_mob) + // find a radio! toolbox(es), backpack, belt, headset var/obj/item/R = locate(/obj/item/pda) in traitor_mob.contents //Hide the uplink in a PDA if available, otherwise radio diff --git a/code/game/gamemodes/vampire/vampire.dm b/code/game/gamemodes/vampire/vampire.dm index c243b86ac70..18d36ad57f3 100644 --- a/code/game/gamemodes/vampire/vampire.dm +++ b/code/game/gamemodes/vampire/vampire.dm @@ -186,7 +186,8 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha if(vampire.current.mind.assigned_role == "Clown") to_chat(vampire.current, "Your lust for blood has allowed you to overcome your clumsy nature allowing you to wield weapons without harming yourself.") vampire.current.mutations.Remove(CLUMSY) - + var/datum/action/innate/toggle_clumsy/A = new + A.Grant(vampire.current) var/obj_count = 1 for(var/datum/objective/objective in vampire.objectives) to_chat(vampire.current, "Objective #[obj_count]: [objective.explanation_text]") diff --git a/code/game/jobs/job/central.dm b/code/game/jobs/job/central.dm index 6f6ea6ca67a..1d6ae0162a2 100644 --- a/code/game/jobs/job/central.dm +++ b/code/game/jobs/job/central.dm @@ -39,6 +39,12 @@ /obj/item/organ/internal/cyberimp/chest/nutriment/plus ) +/datum/outfit/job/ntnavyofficer/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + . = ..() + if(visualsOnly) + return + H.mind.offstation_role = TRUE + // CC Officials who lead ERTs, Death Squads, etc. /datum/job/ntspecops title = "Special Operations Officer" @@ -88,4 +94,10 @@ /obj/item/organ/internal/cyberimp/brain/anti_stun, /obj/item/organ/internal/cyberimp/chest/nutriment/plus, /obj/item/organ/internal/cyberimp/arm/combat/centcom - ) \ No newline at end of file + ) + +/datum/outfit/job/ntspecops/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + . = ..() + if(visualsOnly) + return + H.mind.offstation_role = TRUE \ No newline at end of file diff --git a/code/game/jobs/job/supervisor.dm b/code/game/jobs/job/supervisor.dm index 57369dd337c..3cdbb9b7247 100644 --- a/code/game/jobs/job/supervisor.dm +++ b/code/game/jobs/job/supervisor.dm @@ -125,7 +125,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0) access_all_personal_lockers, access_maint_tunnels, access_bar, access_janitor, access_construction, access_morgue, access_crematorium, access_kitchen, access_cargo, access_cargo_bot, access_mailsorting, access_qm, access_hydroponics, access_lawyer, access_theatre, access_chapel_office, access_library, access_research, access_mining, access_heads_vault, access_mining_station, - access_clown, access_mime, access_hop, access_RC_announce, access_keycard_auth, access_gateway, access_weapons, access_ntrep) + access_clown, access_mime, access_RC_announce, access_keycard_auth, access_gateway, access_weapons, access_ntrep) outfit = /datum/outfit/job/nanotrasenrep /datum/outfit/job/nanotrasenrep @@ -205,7 +205,7 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 0) access_all_personal_lockers, access_maint_tunnels, access_bar, access_janitor, access_construction, access_morgue, access_crematorium, access_kitchen, access_cargo, access_cargo_bot, access_mailsorting, access_qm, access_hydroponics, access_lawyer, access_theatre, access_chapel_office, access_library, access_research, access_mining, access_heads_vault, access_mining_station, - access_clown, access_mime, access_hop, access_RC_announce, access_keycard_auth, access_gateway, access_magistrate) + access_clown, access_mime, access_RC_announce, access_keycard_auth, access_gateway, access_magistrate) minimal_access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_lawyer, access_magistrate, access_heads) outfit = /datum/outfit/job/judge diff --git a/code/game/jobs/job/support.dm b/code/game/jobs/job/support.dm index 38ef1b7fe32..fe5d7799582 100644 --- a/code/game/jobs/job/support.dm +++ b/code/game/jobs/job/support.dm @@ -253,6 +253,27 @@ if(!ismachine(H)) H.mutations.Add(COMIC) +//action given to antag clowns +/datum/action/innate/toggle_clumsy + name = "Toggle Clown Clumsy" + button_icon_state = "clown" + +/datum/action/innate/toggle_clumsy/Activate() + var/mob/living/carbon/human/H = owner + H.mutations.Add(CLUMSY) + active = TRUE + background_icon_state = "bg_spell" + UpdateButtonIcon() + to_chat(H, "You start acting clumsy to throw suspicions off. Focus again before using weapons.") + +/datum/action/innate/toggle_clumsy/Deactivate() + var/mob/living/carbon/human/H = owner + H.mutations.Remove(CLUMSY) + active = FALSE + background_icon_state = "bg_default" + UpdateButtonIcon() + to_chat(H, "You focus and can now use weapons regularly.") + /datum/job/mime title = "Mime" flag = MIME diff --git a/code/game/jobs/job/support_chaplain.dm b/code/game/jobs/job/support_chaplain.dm index 7eb88a0f436..73ec2483af1 100644 --- a/code/game/jobs/job/support_chaplain.dm +++ b/code/game/jobs/job/support_chaplain.dm @@ -64,11 +64,6 @@ B.name = "Uplifting Primer" if("toolboxia") B.name = "Toolbox Manifesto Robusto" - if("homosexuality") - B.name = "Guys Gone Wild" - if("lol", "wtf", "gay", "penis", "ass", "poo", "badmin", "shitmin", "deadmin", "cock", "cocks") - B.name = pick("Woodys Got Wood: The Aftermath", "War of the Cocks", "Sweet Bro and Hella Jef: Expanded Edition") - H.setBrainLoss(99) // starts off retarded as fuck if("science") B.name = pick("Principle of Relativity", "Quantum Enigma: Physics Encounters Consciousness", "Programming the Universe", "Quantum Physics and Theology", "String Theory for Dummies", "How To: Build Your Own Warp Drive", "The Mysteries of Bluespace", "Playing God: Collector's Edition") else diff --git a/code/game/jobs/job/syndicate.dm b/code/game/jobs/job/syndicate.dm index 6ef2c013806..b5757ffe37c 100644 --- a/code/game/jobs/job/syndicate.dm +++ b/code/game/jobs/job/syndicate.dm @@ -53,5 +53,6 @@ H.faction += "syndicate" var/datum/atom_hud/antag/opshud = huds[ANTAG_HUD_OPS] opshud.join_hud(H.mind.current) + H.mind.offstation_role = TRUE set_antag_hud(H.mind.current, "hudoperative") H.regenerate_icons() \ No newline at end of file diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index 80e56f0ca82..67f1527b199 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -35,25 +35,24 @@ /obj/machinery/computer/ex_act(severity) - switch(severity) - if(1.0) - qdel(src) - return - if(2.0) - if(prob(25)) + if(!(resistance_flags & INDESTRUCTIBLE)) + switch(severity) + if(1.0) qdel(src) return - if(prob(50)) - for(var/x in verbs) - verbs -= x - set_broken() - if(3.0) - if(prob(25)) - for(var/x in verbs) - verbs -= x - set_broken() - else - return + if(2.0) + if(prob(25)) + qdel(src) + return + if(prob(50)) + for(var/x in verbs) + verbs -= x + set_broken() + if(3.0) + if(prob(25)) + for(var/x in verbs) + verbs -= x + set_broken() /obj/machinery/computer/bullet_act(var/obj/item/projectile/Proj) if(prob(Proj.damage)) @@ -97,8 +96,9 @@ set_light(light_range_on, light_power_on) /obj/machinery/computer/proc/set_broken() - stat |= BROKEN - update_icon() + if(!(resistance_flags & INDESTRUCTIBLE)) + stat |= BROKEN + update_icon() /obj/machinery/computer/proc/decode(text) // Adds line breaks @@ -114,7 +114,7 @@ return ..() /obj/machinery/computer/attackby(obj/I, mob/user, params) - if(istype(I, /obj/item/screwdriver) && circuit) + if(istype(I, /obj/item/screwdriver) && circuit && !(resistance_flags & INDESTRUCTIBLE)) var/obj/item/screwdriver/S = I playsound(src.loc, S.usesound, 50, 1) if(do_after(user, 20 * S.toolspeed, target = src)) diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 01a30cdbee7..ece6615b786 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -617,6 +617,30 @@ to destroy them and players will be able to make replacements. /obj/item/stock_parts/manipulator = 2, /obj/item/reagent_containers/glass/beaker = 2) +/obj/item/circuitboard/soda + name = "Circuit board (Soda Machine)" + build_path = /obj/machinery/chem_dispenser/soda + board_type = "machine" + frame_desc = "Requires 2 Matter Bins, 1 Manipulators, 1 Capacitor, 1 Console Screen, and 1 Power Cell." + req_components = list( + /obj/item/stock_parts/matter_bin = 2, + /obj/item/stock_parts/manipulator = 1, + /obj/item/stock_parts/capacitor = 1, + /obj/item/stock_parts/console_screen = 1, + /obj/item/stock_parts/cell = 1) + +/obj/item/circuitboard/beer + name = "Circuit board (Beer Machine)" + build_path = /obj/machinery/chem_dispenser/beer + board_type = "machine" + frame_desc = "Requires 2 Matter Bins, 1 Manipulators, 1 Capacitor, 1 Console Screen, and 1 Power Cell." + req_components = list( + /obj/item/stock_parts/matter_bin = 2, + /obj/item/stock_parts/manipulator = 1, + /obj/item/stock_parts/capacitor = 1, + /obj/item/stock_parts/console_screen = 1, + /obj/item/stock_parts/cell = 1) + /obj/item/circuitboard/circuit_imprinter name = "Circuit board (Circuit Imprinter)" diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index f2c0ab216f2..fb780e5d550 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -1232,7 +1232,8 @@ /obj/item/kitchen/mould/bear = 1, /obj/item/kitchen/mould/worm = 1, /obj/item/kitchen/mould/bean = 1, /obj/item/kitchen/mould/ball = 1, /obj/item/kitchen/mould/cane = 1, /obj/item/kitchen/mould/cash = 1, - /obj/item/kitchen/mould/coin = 1, /obj/item/kitchen/mould/loli = 1) + /obj/item/kitchen/mould/coin = 1, /obj/item/kitchen/mould/loli = 1, + /obj/item/kitchen/cutter = 2) contraband = list(/obj/item/kitchen/rollingpin = 2, /obj/item/kitchen/knife/butcher = 2) armor = list(melee = 100, bullet = 100, laser = 100, energy = 100, bomb = 0, bio = 0, rad = 0) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 981fcbd7678..e10ac54fda1 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -231,16 +231,10 @@ if(amount < used) return FALSE amount -= used - if(amount < 1) - if(isrobot(loc)) - var/mob/living/silicon/robot/R = loc - if(locate(src) in R.module.modules) - R.module.modules -= src - if(R) - R.unEquip(src, TRUE) - zero_amount() + if(check) + zero_amount() update_icon() - return 1 + return TRUE /obj/item/stack/proc/get_amount() return amount @@ -307,6 +301,12 @@ /obj/item/stack/proc/zero_amount() if(amount < 1) + if(isrobot(loc)) + var/mob/living/silicon/robot/R = loc + if(locate(src) in R.module.modules) + R.module.modules -= src + if(usr) + usr.unEquip(src, TRUE) qdel(src) return TRUE return FALSE diff --git a/code/game/objects/items/stacks/tiles/tile_mineral.dm b/code/game/objects/items/stacks/tiles/tile_mineral.dm index 86590026f53..019ca77b6ad 100644 --- a/code/game/objects/items/stacks/tiles/tile_mineral.dm +++ b/code/game/objects/items/stacks/tiles/tile_mineral.dm @@ -122,6 +122,10 @@ var/global/list/datum/stack_recipe/silverfancy_tile_recipes = list ( \ mineralType = "titanium" materials = list(MAT_TITANIUM=500) +/obj/item/stack/tile/mineral/titanium/purple + turf_type = /turf/simulated/floor/mineral/titanium/purple + icon_state = "tile_plasma" + /obj/item/stack/tile/mineral/plastitanium name = "plas-titanium tile" singular_name = "plas-titanium floor tile" diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index da077616f40..84a400887b0 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -338,6 +338,7 @@ H.emote("gasp") if(!H.undergoing_cardiac_arrest() && (prob(10) || defib.combat)) // Your heart explodes. H.set_heartattack(TRUE) + H.shock_internal_organs(100) add_attack_logs(user, M, "Stunned with [src]") defib.deductcharge(revivecost) cooldown = 1 @@ -388,6 +389,7 @@ update_icon() return H.set_heartattack(FALSE) + H.shock_internal_organs(100) user.visible_message("[defib] pings: Cardiac arrhythmia corrected.") M.visible_message("[M]'s body convulses a bit.") playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1) @@ -422,6 +424,7 @@ H.emote("gasp") if(tplus > tloss) H.setBrainLoss( max(0, min(99, ((tlimit - tplus) / tlimit * 100)))) + H.shock_internal_organs(100) H.med_hud_set_health() H.med_hud_set_status() defib.deductcharge(revivecost) @@ -484,6 +487,7 @@ H.Weaken(5) if(!H.undergoing_cardiac_arrest() && prob(10)) // Your heart explodes. H.set_heartattack(TRUE) + H.shock_internal_organs(100) playsound(get_turf(src), 'sound/machines/defib_zap.ogg', 50, 1, -1) H.emote("gasp") add_attack_logs(user, M, "Stunned with [src]") @@ -539,6 +543,7 @@ H.emote("gasp") if(tplus > tloss) H.setBrainLoss( max(0, min(99, ((tlimit - tplus) / tlimit * 100)))) + H.shock_internal_organs(100) if(isrobot(user)) var/mob/living/silicon/robot/R = user R.cell.use(revivecost) diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm index 1ccbb0d0008..a02b403cb5c 100644 --- a/code/game/objects/items/weapons/dna_injector.dm +++ b/code/game/objects/items/weapons/dna_injector.dm @@ -18,10 +18,11 @@ var/datatype = 0 var/value = 0 -/obj/item/dnainjector/New() +/obj/item/dnainjector/Initialize() + . = ..() if(datatype && block) - buf=new - buf.dna=new + buf = new + buf.dna = new buf.types = datatype buf.dna.ResetSE() SetValue(value) @@ -37,29 +38,29 @@ return selblock /obj/item/dnainjector/proc/GetState(var/selblock=0) - var/real_block=GetRealBlock(selblock) - if(buf.types&DNA2_BUF_SE) + var/real_block = GetRealBlock(selblock) + if(buf.types & DNA2_BUF_SE) return buf.dna.GetSEState(real_block) else return buf.dna.GetUIState(real_block) /obj/item/dnainjector/proc/SetState(var/on, var/selblock=0) - var/real_block=GetRealBlock(selblock) - if(buf.types&DNA2_BUF_SE) + var/real_block = GetRealBlock(selblock) + if(buf.types & DNA2_BUF_SE) return buf.dna.SetSEState(real_block,on) else return buf.dna.SetUIState(real_block,on) /obj/item/dnainjector/proc/GetValue(var/selblock=0) - var/real_block=GetRealBlock(selblock) - if(buf.types&DNA2_BUF_SE) + var/real_block = GetRealBlock(selblock) + if(buf.types & DNA2_BUF_SE) return buf.dna.GetSEValue(real_block) else return buf.dna.GetUIValue(real_block) /obj/item/dnainjector/proc/SetValue(var/val,var/selblock=0) - var/real_block=GetRealBlock(selblock) - if(buf.types&DNA2_BUF_SE) + var/real_block = GetRealBlock(selblock) + if(buf.types & DNA2_BUF_SE) return buf.dna.SetSEValue(real_block,val) else return buf.dna.SetUIValue(real_block,val) @@ -73,6 +74,10 @@ if(istype(M, /mob/living/carbon/human)) H = M + if(!buf) + log_runtime(EXCEPTION("[src] used by [user] on [M] failed to initialize properly."), src) + return + spawn(0) //Some mutations have sleeps in them, like monkey if(!(NOCLONE in M.mutations) && !(H && (NO_DNA in H.dna.species.species_traits))) // prevents drained people from having their DNA changed var/prev_ue = M.dna.unique_enzymes @@ -160,7 +165,7 @@ value = 0xFFF //block = 2 -/obj/item/dnainjector/hulkmut/New() +/obj/item/dnainjector/hulkmut/Initialize() block = HULKBLOCK ..() @@ -171,7 +176,7 @@ value = 0x001 //block = 2 -/obj/item/dnainjector/antihulk/New() +/obj/item/dnainjector/antihulk/Initialize() block = HULKBLOCK ..() @@ -182,7 +187,7 @@ value = 0xFFF //block = 8 -/obj/item/dnainjector/xraymut/New() +/obj/item/dnainjector/xraymut/Initialize() block = XRAYBLOCK ..() @@ -193,7 +198,7 @@ value = 0x001 //block = 8 -/obj/item/dnainjector/antixray/New() +/obj/item/dnainjector/antixray/Initialize() block = XRAYBLOCK ..() @@ -204,7 +209,7 @@ value = 0xFFF //block = 10 -/obj/item/dnainjector/firemut/New() +/obj/item/dnainjector/firemut/Initialize() block = FIREBLOCK ..() @@ -215,7 +220,7 @@ value = 0x001 //block = 10 -/obj/item/dnainjector/antifire/New() +/obj/item/dnainjector/antifire/Initialize() block = FIREBLOCK ..() @@ -226,7 +231,7 @@ value = 0xFFF //block = 12 -/obj/item/dnainjector/telemut/New() +/obj/item/dnainjector/telemut/Initialize() block = TELEBLOCK ..() @@ -242,7 +247,7 @@ value = 0x001 //block = 12 -/obj/item/dnainjector/antitele/New() +/obj/item/dnainjector/antitele/Initialize() block = TELEBLOCK ..() @@ -253,7 +258,7 @@ value = 0xFFF //block = 2 -/obj/item/dnainjector/nobreath/New() +/obj/item/dnainjector/nobreath/Initialize() block = BREATHLESSBLOCK ..() @@ -264,7 +269,7 @@ value = 0x001 //block = 2 -/obj/item/dnainjector/antinobreath/New() +/obj/item/dnainjector/antinobreath/Initialize() block = BREATHLESSBLOCK ..() @@ -275,7 +280,7 @@ value = 0xFFF //block = 2 -/obj/item/dnainjector/remoteview/New() +/obj/item/dnainjector/remoteview/Initialize() block = REMOTEVIEWBLOCK ..() @@ -286,7 +291,7 @@ value = 0x001 //block = 2 -/obj/item/dnainjector/antiremoteview/New() +/obj/item/dnainjector/antiremoteview/Initialize() block = REMOTEVIEWBLOCK ..() @@ -297,7 +302,7 @@ value = 0xFFF //block = 2 -/obj/item/dnainjector/regenerate/New() +/obj/item/dnainjector/regenerate/Initialize() block = REGENERATEBLOCK ..() @@ -308,7 +313,7 @@ value = 0x001 //block = 2 -/obj/item/dnainjector/antiregenerate/New() +/obj/item/dnainjector/antiregenerate/Initialize() block = REGENERATEBLOCK ..() @@ -319,7 +324,7 @@ value = 0xFFF //block = 2 -/obj/item/dnainjector/runfast/New() +/obj/item/dnainjector/runfast/Initialize() block = INCREASERUNBLOCK ..() @@ -330,7 +335,7 @@ value = 0x001 //block = 2 -/obj/item/dnainjector/antirunfast/New() +/obj/item/dnainjector/antirunfast/Initialize() block = INCREASERUNBLOCK ..() @@ -341,7 +346,7 @@ value = 0xFFF //block = 2 -/obj/item/dnainjector/morph/New() +/obj/item/dnainjector/morph/Initialize() block = MORPHBLOCK ..() @@ -352,7 +357,7 @@ value = 0x001 //block = 2 -/obj/item/dnainjector/antimorph/New() +/obj/item/dnainjector/antimorph/Initialize() block = MORPHBLOCK ..() @@ -363,7 +368,7 @@ value = 0xFFF //block = 2 -/obj/item/dnainjector/noprints/New() +/obj/item/dnainjector/noprints/Initialize() block = NOPRINTSBLOCK ..() @@ -374,7 +379,7 @@ value = 0x001 //block = 2 -/obj/item/dnainjector/antinoprints/New() +/obj/item/dnainjector/antinoprints/Initialize() block = NOPRINTSBLOCK ..() @@ -385,7 +390,7 @@ value = 0xFFF //block = 2 -/obj/item/dnainjector/insulation/New() +/obj/item/dnainjector/insulation/Initialize() block = SHOCKIMMUNITYBLOCK ..() @@ -396,7 +401,7 @@ value = 0x001 //block = 2 -/obj/item/dnainjector/antiinsulation/New() +/obj/item/dnainjector/antiinsulation/Initialize() block = SHOCKIMMUNITYBLOCK ..() @@ -407,7 +412,7 @@ value = 0xFFF //block = 2 -/obj/item/dnainjector/midgit/New() +/obj/item/dnainjector/midgit/Initialize() block = SMALLSIZEBLOCK ..() @@ -418,7 +423,7 @@ value = 0x001 //block = 2 -/obj/item/dnainjector/antimidgit/New() +/obj/item/dnainjector/antimidgit/Initialize() block = SMALLSIZEBLOCK ..() @@ -430,7 +435,7 @@ value = 0x001 //block = 1 -/obj/item/dnainjector/antiglasses/New() +/obj/item/dnainjector/antiglasses/Initialize() block = GLASSESBLOCK ..() @@ -441,7 +446,7 @@ value = 0xFFF //block = 1 -/obj/item/dnainjector/glassesmut/New() +/obj/item/dnainjector/glassesmut/Initialize() block = GLASSESBLOCK ..() @@ -452,7 +457,7 @@ value = 0xFFF //block = 3 -/obj/item/dnainjector/epimut/New() +/obj/item/dnainjector/epimut/Initialize() block = EPILEPSYBLOCK ..() @@ -463,7 +468,7 @@ value = 0x001 //block = 3 -/obj/item/dnainjector/antiepi/New() +/obj/item/dnainjector/antiepi/Initialize() block = EPILEPSYBLOCK ..() @@ -474,7 +479,7 @@ value = 0x001 //block = 5 -/obj/item/dnainjector/anticough/New() +/obj/item/dnainjector/anticough/Initialize() block = COUGHBLOCK ..() @@ -485,7 +490,7 @@ value = 0xFFF //block = 5 -/obj/item/dnainjector/coughmut/New() +/obj/item/dnainjector/coughmut/Initialize() block = COUGHBLOCK ..() @@ -496,7 +501,7 @@ value = 0xFFF //block = 6 -/obj/item/dnainjector/clumsymut/New() +/obj/item/dnainjector/clumsymut/Initialize() block = CLUMSYBLOCK ..() @@ -507,7 +512,7 @@ value = 0x001 //block = 6 -/obj/item/dnainjector/anticlumsy/New() +/obj/item/dnainjector/anticlumsy/Initialize() block = CLUMSYBLOCK ..() @@ -518,7 +523,7 @@ value = 0x001 //block = 7 -/obj/item/dnainjector/antitour/New() +/obj/item/dnainjector/antitour/Initialize() block = TWITCHBLOCK ..() @@ -529,7 +534,7 @@ value = 0xFFF //block = 7 -/obj/item/dnainjector/tourmut/New() +/obj/item/dnainjector/tourmut/Initialize() block = TWITCHBLOCK ..() @@ -540,7 +545,7 @@ value = 0xFFF //block = 9 -/obj/item/dnainjector/stuttmut/New() +/obj/item/dnainjector/stuttmut/Initialize() block = NERVOUSBLOCK ..() @@ -552,7 +557,7 @@ value = 0x001 //block = 9 -/obj/item/dnainjector/antistutt/New() +/obj/item/dnainjector/antistutt/Initialize() block = NERVOUSBLOCK ..() @@ -563,7 +568,7 @@ value = 0xFFF //block = 11 -/obj/item/dnainjector/blindmut/New() +/obj/item/dnainjector/blindmut/Initialize() block = BLINDBLOCK ..() @@ -574,7 +579,7 @@ value = 0x001 //block = 11 -/obj/item/dnainjector/antiblind/New() +/obj/item/dnainjector/antiblind/Initialize() block = BLINDBLOCK ..() @@ -585,7 +590,7 @@ value = 0xFFF //block = 12 -/obj/item/dnainjector/telemut/New() +/obj/item/dnainjector/telemut/Initialize() block = TELEBLOCK ..() @@ -596,7 +601,7 @@ value = 0x001 //block = 12 -/obj/item/dnainjector/antitele/New() +/obj/item/dnainjector/antitele/Initialize() block = TELEBLOCK ..() @@ -607,7 +612,7 @@ value = 0xFFF //block = 13 -/obj/item/dnainjector/deafmut/New() +/obj/item/dnainjector/deafmut/Initialize() block = DEAFBLOCK ..() @@ -618,7 +623,7 @@ value = 0x001 //block = 13 -/obj/item/dnainjector/antideaf/New() +/obj/item/dnainjector/antideaf/Initialize() block = DEAFBLOCK ..() @@ -629,7 +634,7 @@ value = 0xFFF //block = 2 -/obj/item/dnainjector/hallucination/New() +/obj/item/dnainjector/hallucination/Initialize() block = HALLUCINATIONBLOCK ..() @@ -640,7 +645,7 @@ value = 0x001 //block = 2 -/obj/item/dnainjector/antihallucination/New() +/obj/item/dnainjector/antihallucination/Initialize() block = HALLUCINATIONBLOCK ..() @@ -651,7 +656,7 @@ value = 0xFFF //block = 14 -/obj/item/dnainjector/h2m/New() +/obj/item/dnainjector/h2m/Initialize() block = MONKEYBLOCK ..() @@ -662,6 +667,6 @@ value = 0x001 //block = 14 -/obj/item/dnainjector/m2h/New() +/obj/item/dnainjector/m2h/Initialize() block = MONKEYBLOCK ..() diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index 98422d8c680..a0810a0b96c 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -9,12 +9,16 @@ * Rolling Pins * Candy Moulds * Sushi Mat + * Circular cutter */ /obj/item/kitchen icon = 'icons/obj/kitchen.dmi' origin_tech = "materials=1" + + + /* * Utensils */ @@ -179,6 +183,7 @@ origin_tech = "biotech=3;combat=2" attack_verb = list("shanked", "shivved") + /* * Rolling Pins */ @@ -251,7 +256,7 @@ desc = "It has the shape of a sucker imprinted into it." icon_state = "mould_loli" -/* +/* * Sushi Mat */ /obj/item/kitchen/sushimat @@ -263,4 +268,20 @@ throw_speed = 3 throw_range = 3 w_class = WEIGHT_CLASS_SMALL - attack_verb = list("rolled", "cracked", "battered", "thrashed") \ No newline at end of file + attack_verb = list("rolled", "cracked", "battered", "thrashed") + + + +/// circular cutter by Ume + +/obj/item/kitchen/cutter + name = "generic circular cutter" + desc = "A generic circular cutter for cookies and other things." + icon = 'icons/obj/kitchen.dmi' + icon_state = "circular_cutter" + force = 5 + throwforce = 5 + throw_speed = 3 + throw_range = 3 + w_class = WEIGHT_CLASS_SMALL + attack_verb = list("bashed", "slashed", "pricked", "thrashed") \ No newline at end of file diff --git a/code/game/objects/items/weapons/lighters.dm b/code/game/objects/items/weapons/lighters.dm index 127613991d8..0b348510b8e 100644 --- a/code/game/objects/items/weapons/lighters.dm +++ b/code/game/objects/items/weapons/lighters.dm @@ -9,7 +9,7 @@ item_state = "lighter-g" var/icon_on = "lighter-g-on" var/icon_off = "lighter-g" - w_class = WEIGHT_CLASS_SMALL + w_class = WEIGHT_CLASS_TINY throwforce = 4 flags = CONDUCT slot_flags = SLOT_BELT diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 4831d7f450d..2fd7d774113 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -460,6 +460,19 @@ return ..() +/obj/item/storage/bag/tray/cookies_tray + var/cookie = /obj/item/reagent_containers/food/snacks/cookie + +/obj/item/storage/bag/tray/cookies_tray/New() /// By Azule Utama, thank you a lot! + ..() + for(var/i in 1 to 6) + var/obj/item/C = new cookie(src) + handle_item_insertion(C) // Done this way so the tray actually has the cookies visible when spawned + rebuild_overlays() + +/obj/item/storage/bag/tray/cookies_tray/sugarcookie + cookie = /obj/item/reagent_containers/food/snacks/sugarcookie + /* * Chemistry bag */ diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 960374cb647..f33fc7240d2 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -172,6 +172,10 @@ playsound(L, 'sound/weapons/genhit.ogg', 50, 1) return + if(iscarbon(L)) + var/mob/living/carbon/C = L + C.shock_internal_organs(33) + L.Stun(stunforce) L.Weaken(stunforce) L.apply_effect(STUTTER, stunforce) diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index 8639dbe29f7..d8898a7d671 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -140,7 +140,7 @@ return var/mob/living/carbon/human/H = user - var/choice = input(user, "Something to change?", "Magical Grooming") as null|anything in list("Name", "Body") + var/choice = input(user, "Something to change?", "Magical Grooming") as null|anything in list("Name", "Body", "Voice") switch(choice) if("Name") @@ -172,6 +172,25 @@ AC.whitelist = race_list ui_users[user] = AC AC.ui_interact(user) + if("Voice") + var/voice_choice = input(user, "Perhaps...", "Voice effects") as null|anything in list("Comic Sans", "Wingdings", "Swedish", "Chav") + var/voice_mutation + switch(voice_choice) + if("Comic Sans") + voice_mutation = COMICBLOCK + if("Wingdings") + voice_mutation = WINGDINGSBLOCK + if("Swedish") + voice_mutation = SWEDEBLOCK + if("Chav") + voice_mutation = CHAVBLOCK + if(voice_mutation) + if(H.dna.GetSEState(voice_mutation)) + H.dna.SetSEState(voice_mutation, FALSE) + genemutcheck(H, voice_mutation, null, MUTCHK_FORCED) + else + H.dna.SetSEState(voice_mutation, TRUE) + genemutcheck(H, voice_mutation, null, MUTCHK_FORCED) /obj/structure/mirror/magic/attackby(obj/item/I, mob/living/user, params) return diff --git a/code/game/turfs/simulated/floor/mineral.dm b/code/game/turfs/simulated/floor/mineral.dm index f5a07bf9241..38f1bdc14a1 100644 --- a/code/game/turfs/simulated/floor/mineral.dm +++ b/code/game/turfs/simulated/floor/mineral.dm @@ -110,6 +110,7 @@ /turf/simulated/floor/mineral/titanium/purple icon_state = "shuttlefloor5" + floor_tile = /obj/item/stack/tile/mineral/titanium/purple icons = list("shuttlefloor5","shuttlefloor5_dam") /turf/simulated/floor/mineral/titanium/purple/airless diff --git a/code/modules/admin/verbs/gimmick_team.dm b/code/modules/admin/verbs/gimmick_team.dm index 9790a073401..081c820aaee 100644 --- a/code/modules/admin/verbs/gimmick_team.dm +++ b/code/modules/admin/verbs/gimmick_team.dm @@ -72,6 +72,7 @@ H.mind_initialize() H.mind.assigned_role = "Event Character" H.mind.special_role = "Event Character" + H.mind.offstation_role = TRUE H.key = thisplayer.key diff --git a/code/modules/admin/verbs/honksquad.dm b/code/modules/admin/verbs/honksquad.dm index 9636d311ddc..b4c0e6a05eb 100644 --- a/code/modules/admin/verbs/honksquad.dm +++ b/code/modules/admin/verbs/honksquad.dm @@ -93,6 +93,7 @@ var/global/sent_honksquad = 0 new_honksquad.mind_initialize() new_honksquad.mind.assigned_role = SPECIAL_ROLE_HONKSQUAD new_honksquad.mind.special_role = SPECIAL_ROLE_HONKSQUAD + new_honksquad.mind.offstation_role = TRUE new_honksquad.add_language("Clownish") ticker.mode.traitors |= new_honksquad.mind//Adds them to current traitor list. Which is really the extra antagonist list. new_honksquad.equip_honksquad(honk_leader_selected) diff --git a/code/modules/admin/verbs/infiltratorteam_syndicate.dm b/code/modules/admin/verbs/infiltratorteam_syndicate.dm index 346652c13cb..551076be62a 100644 --- a/code/modules/admin/verbs/infiltratorteam_syndicate.dm +++ b/code/modules/admin/verbs/infiltratorteam_syndicate.dm @@ -131,6 +131,7 @@ var/global/sent_syndicate_infiltration_team = 0 new_syndicate_infiltrator.mind_initialize() new_syndicate_infiltrator.mind.assigned_role = "Syndicate Infiltrator" new_syndicate_infiltrator.mind.special_role = "Syndicate Infiltrator" + new_syndicate_infiltrator.mind.offstation_role = TRUE //they can flee to z2 so make them inelligible as antag targets ticker.mode.traitors |= new_syndicate_infiltrator.mind //Adds them to extra antag list new_syndicate_infiltrator.equip_syndicate_infiltrator(syndicate_leader_selected, uplink_tc, is_mgmt) return new_syndicate_infiltrator diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 2133fbb26b2..4b3905f37e2 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -415,7 +415,7 @@ client/proc/one_click_antag() new_syndicate_commando.mind_initialize() new_syndicate_commando.mind.assigned_role = SPECIAL_ROLE_SYNDICATE_DEATHSQUAD new_syndicate_commando.mind.special_role = SPECIAL_ROLE_SYNDICATE_DEATHSQUAD - + new_syndicate_commando.mind.offstation_role = TRUE //Adds them to current traitor list. Which is really the extra antagonist list. ticker.mode.traitors += new_syndicate_commando.mind new_syndicate_commando.equip_syndicate_commando(syndicate_leader_selected) diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm index 0a481460344..a23e6eea69c 100644 --- a/code/modules/admin/verbs/striketeam.dm +++ b/code/modules/admin/verbs/striketeam.dm @@ -85,6 +85,7 @@ var/global/sent_strike_team = 0 R.mind.original = R R.mind.assigned_role = SPECIAL_ROLE_DEATHSQUAD R.mind.special_role = SPECIAL_ROLE_DEATHSQUAD + R.mind.offstation_role = TRUE if(!(R.mind in ticker.minds)) ticker.minds += R.mind ticker.mode.traitors += R.mind @@ -178,7 +179,7 @@ var/global/sent_strike_team = 0 equip_to_slot_or_del(new /obj/item/flashlight(src), slot_in_backpack) equip_to_slot_or_del(new /obj/item/pinpointer(src), slot_in_backpack) if(is_leader) - equip_to_slot_or_del(new /obj/item/disk/nuclear(src), slot_in_backpack) + equip_to_slot_or_del(new /obj/item/disk/nuclear/unrestricted(src), slot_in_backpack) else equip_to_slot_or_del(new /obj/item/grenade/plastic/x4(src), slot_in_backpack) diff --git a/code/modules/admin/verbs/striketeam_syndicate.dm b/code/modules/admin/verbs/striketeam_syndicate.dm index 735d42ad71a..bf20d2b5503 100644 --- a/code/modules/admin/verbs/striketeam_syndicate.dm +++ b/code/modules/admin/verbs/striketeam_syndicate.dm @@ -116,6 +116,7 @@ var/global/sent_syndicate_strike_team = 0 new_syndicate_commando.mind_initialize() new_syndicate_commando.mind.assigned_role = SPECIAL_ROLE_SYNDICATE_DEATHSQUAD new_syndicate_commando.mind.special_role = SPECIAL_ROLE_SYNDICATE_DEATHSQUAD + new_syndicate_commando.mind.offstation_role = TRUE ticker.mode.traitors |= new_syndicate_commando.mind //Adds them to current traitor list. Which is really the extra antagonist list. new_syndicate_commando.equip_syndicate_commando(is_leader) qdel(spawn_location) @@ -139,7 +140,7 @@ var/global/sent_syndicate_strike_team = 0 equip_to_slot_or_del(new /obj/item/grenade/plastic/x4(src), slot_in_backpack) if(is_leader) equip_to_slot_or_del(new /obj/item/pinpointer(src), slot_in_backpack) - equip_to_slot_or_del(new /obj/item/disk/nuclear(src), slot_in_backpack) + equip_to_slot_or_del(new /obj/item/disk/nuclear/unrestricted(src), slot_in_backpack) else equip_to_slot_or_del(new /obj/item/grenade/plastic/x4(src), slot_in_backpack) equip_to_slot_or_del(new /obj/item/card/emag(src), slot_r_store) diff --git a/code/modules/antagonists/_common/antag_spawner.dm b/code/modules/antagonists/_common/antag_spawner.dm index d8851cb0cb8..937c831dfbf 100644 --- a/code/modules/antagonists/_common/antag_spawner.dm +++ b/code/modules/antagonists/_common/antag_spawner.dm @@ -19,6 +19,7 @@ var/checking = FALSE var/TC_cost = 0 var/borg_to_spawn + var/upload_mind var/list/possible_types = list("Assault", "Medical", "Saboteur") /obj/item/antag_spawner/borg_tele/attack_self(mob/user) @@ -34,20 +35,42 @@ borg_to_spawn = input("What type of borg would you like to teleport?", "Cyborg Type", type) as null|anything in possible_types if(!borg_to_spawn || checking || used) return - checking = TRUE - to_chat(user, "The device is now checking for possible borgs.") - var/list/borg_candidates = pollCandidates("Do you want to play as a Syndicate [borg_to_spawn] borg?", ROLE_OPERATIVE, 1) - if(borg_candidates.len > 0 && !used) - checking = FALSE - used = TRUE - var/mob/M = pick(borg_candidates) - var/client/C = M.client - spawn_antag(C, get_turf(src.loc), "syndieborg") - qdel(src) - else - checking = FALSE - to_chat(user, "Unable to connect to Syndicate command. Please wait and try again later or refund your teleporter through your uplink.") + upload_mind = input("Would you like to continue playing as an operative or take over the cyborg? (Another player will control your old self)", "Play as") as null|anything in list("Nuclear Operative", "Syndicate Cyborg") + if(!upload_mind || checking || used) return + if(upload_mind == "Nuclear Operative") + checking = TRUE + to_chat(user, "The device is now checking for possible borgs.") + var/list/borg_candidates = pollCandidates("Do you want to play as a Syndicate [borg_to_spawn] borg?", ROLE_OPERATIVE, 1) + if(borg_candidates.len > 0 && !used) + checking = FALSE + used = TRUE + var/mob/M = pick(borg_candidates) + var/client/C = M.client + spawn_antag(C, get_turf(loc), "syndieborg") + qdel(src) + else + checking = FALSE + to_chat(user, "Unable to connect to Syndicate command. Please wait and try again later or refund your teleporter through your uplink.") + return + else if(upload_mind == "Syndicate Cyborg") + checking = TRUE + to_chat(user, "You attempt to upload your consciousness into a new syndicate cyborg.") + var/list/nuclear_candidates = pollCandidates("Do you want to play as the Syndicate Nuclear Operative [user.real_name]?", ROLE_OPERATIVE, 1) + if(nuclear_candidates.len > 0 && !used) + checking = FALSE + used = TRUE + var/mob/M = pick(nuclear_candidates) + var/client/nukeop_client = M.client + var/client/borg_client = user.client + spawn_antag(borg_client, get_turf(loc), "syndieborg") + user.key = nukeop_client.key + ticker.mode.greet_syndicate(user.mind) + qdel(src) + else + checking = FALSE + to_chat(user, "Unable to connect to Syndicate command. Please wait and try again later or refund your teleporter through your uplink.") + return /obj/item/antag_spawner/borg_tele/spawn_antag(client/C, turf/T, type = "") if(!borg_to_spawn) //If there's no type at all, let it still be used but don't do anything diff --git a/code/modules/awaymissions/mission_code/ghost_role_spawners/golems.dm b/code/modules/awaymissions/mission_code/ghost_role_spawners/golems.dm index 3fe97cded4e..60cedb281fa 100644 --- a/code/modules/awaymissions/mission_code/ghost_role_spawners/golems.dm +++ b/code/modules/awaymissions/mission_code/ghost_role_spawners/golems.dm @@ -85,6 +85,8 @@ var/datum/species/golem/X = mob_species to_chat(new_spawn, "[initial(X.info_text)]") if(!owner) + to_chat(new_spawn, "It is common in free golem societies to respect Adamantine golems as elders, however you do not have to obey them. \ + Adamantine golems are the only golems that can resonate to all golems.") to_chat(new_spawn, "Build golem shells in the autolathe, and feed refined mineral sheets to the shells to bring them to life! You are generally a peaceful group unless provoked.") to_chat(new_spawn, "You are not an antagonist, but you are not a crewmember either. \ You may interact or trade with crew you come across, aswell as defend yourself and your ship \ diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index d22b50c2168..5116abf32e6 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -81,6 +81,19 @@ time = 60 category = CAT_ROBOT +/datum/crafting_recipe/griefsky + name = "General Griefsky" + result = /mob/living/simple_animal/bot/secbot/griefsky + reqs = list(/obj/item/assembly/signaler = 1, + /obj/item/clothing/head/helmet = 1, + /obj/item/melee/energy/sword = 4, + /obj/item/assembly/prox_sensor = 1, + /obj/item/robot_parts/r_arm = 2, + /obj/item/robot_parts/l_arm = 2) + tools = list(/obj/item/weldingtool) + time = 120 + category = CAT_ROBOT + /datum/crafting_recipe/cleanbot name = "Cleanbot" result = /mob/living/simple_animal/bot/cleanbot diff --git a/code/modules/discord/accountlink.dm b/code/modules/discord/accountlink.dm index 255a6e2c457..8fe5d69271e 100644 --- a/code/modules/discord/accountlink.dm +++ b/code/modules/discord/accountlink.dm @@ -17,7 +17,7 @@ while(db_discord_id.NextRow()) stored_id = db_discord_id.item[1] if(!stored_id) // Not linked - var/know_how = alert("Do you know how to get a discord user ID?","Question","Yes","No") + var/know_how = alert("Do you know how to get a discord user ID? This ID is NOT your discord username and numbers!","Question","Yes","No") if(know_how == "No") // Opens discord support on how to collect IDs src << link("https://support.discordapp.com/hc/en-us/articles/206346498-Where-can-I-find-my-User-Server-Message-ID") var/entered_id = input("Please enter your Discord ID.", "Enter Discord ID", null, null) as text|null diff --git a/code/modules/events/aurora_caelus.dm b/code/modules/events/aurora_caelus.dm index dfdb503cc54..58302950b5e 100644 --- a/code/modules/events/aurora_caelus.dm +++ b/code/modules/events/aurora_caelus.dm @@ -40,7 +40,7 @@ We hope you enjoy the lights.", "Harmless ions approaching", new_sound = 'sound/ event_announcement.Announce("The Aurora Caelus event is now ending. Starlight conditions will slowly return to normal. \ When this has concluded, please return to your workplace and continue work as normal. \ Have a pleasant shift, [station_name()], and thank you for watching with us.", -"Harmless ions approaching", new_sound = 'sound/misc/notice2.ogg', from = "Nanotrasen Meteorology Division") +"Harmless ions dissipating", new_sound = 'sound/misc/notice2.ogg', from = "Nanotrasen Meteorology Division") /datum/event/aurora_caelus/proc/fade_to_black(turf/space/S) set waitfor = FALSE diff --git a/code/modules/events/sentience.dm b/code/modules/events/sentience.dm index 03f56ac701b..59fbbc01e55 100644 --- a/code/modules/events/sentience.dm +++ b/code/modules/events/sentience.dm @@ -33,7 +33,9 @@ SA.key = SG.key SA.universal_speak = 1 SA.sentience_act() - SA.maxHealth = max(SA.maxHealth, 200) + SA.maxHealth = max(SA.maxHealth + 200) + SA.melee_damage_lower = max(SA.melee_damage_lower + 15) + SA.melee_damage_upper = max(SA.melee_damage_upper + 15) SA.health = SA.maxHealth SA.del_on_death = FALSE greet_sentient(SA) diff --git a/code/modules/events/spider_terror.dm b/code/modules/events/spider_terror.dm index daceed1988e..1ecf5aa22ca 100644 --- a/code/modules/events/spider_terror.dm +++ b/code/modules/events/spider_terror.dm @@ -33,8 +33,8 @@ spider_type = /mob/living/simple_animal/hostile/poison/terror_spider/queen spawncount = 1 if(5) - spider_type = /mob/living/simple_animal/hostile/poison/terror_spider/mother - spawncount = 1 + spider_type = /mob/living/simple_animal/hostile/poison/terror_spider/princess + spawncount = 2 while(spawncount >= 1 && vents.len) var/obj/machinery/atmospherics/unary/vent_pump/vent = pick(vents) diff --git a/code/modules/events/traders.dm b/code/modules/events/traders.dm index 2b49bd51bfc..04663f93152 100644 --- a/code/modules/events/traders.dm +++ b/code/modules/events/traders.dm @@ -47,6 +47,7 @@ var/global/list/unused_trade_stations = list("sol") M.equipOutfit(/datum/outfit/admin/sol_trader) M.dna.species.after_equip_job(null, M) M.mind.objectives += trader_objectives + M.mind.offstation_role = TRUE greet_trader(M) success_spawn = 1 if(success_spawn) diff --git a/code/modules/food_and_drinks/food/foods/baked_goods.dm b/code/modules/food_and_drinks/food/foods/baked_goods.dm index 1115b42014e..0746f37d113 100644 --- a/code/modules/food_and_drinks/food/foods/baked_goods.dm +++ b/code/modules/food_and_drinks/food/foods/baked_goods.dm @@ -201,7 +201,7 @@ icon_state = "COOKIE!!!" bitesize = 1 filling_color = "#DBC94F" - list_reagents = list("nutriment" = 1) + list_reagents = list("nutriment" = 1, "sugar" = 3, "hot_coco" = 5 ) /obj/item/reagent_containers/food/snacks/fortunecookie name = "fortune cookie" @@ -215,7 +215,7 @@ name = "sugar cookie" desc = "Just like your little sister used to make." icon_state = "sugarcookie" - list_reagents = list("nutriment" = 3, "sugar" = 3) + list_reagents = list("nutriment" = 1, "sugar" = 3) ////////////////////// diff --git a/code/modules/food_and_drinks/food/foods/ingredients.dm b/code/modules/food_and_drinks/food/foods/ingredients.dm index 8fb9773a48e..7dda7c0a1c0 100644 --- a/code/modules/food_and_drinks/food/foods/ingredients.dm +++ b/code/modules/food_and_drinks/food/foods/ingredients.dm @@ -129,6 +129,71 @@ list_reagents = list("nutriment" = 1) +///cookies by Ume + +/obj/item/reagent_containers/food/snacks/cookiedough + var/flat = FALSE + name = "pastry dough" + icon = 'icons/obj/food/food_ingredients.dmi' + desc = "The base for tasty cookies." + icon_state = "cookiedough" + list_reagents = list("nutriment" = 5, "sugar" = 5) + +/obj/item/reagent_containers/food/snacks/cookiedough/update_icon() + if(flat) + icon_state = "cookiedough_flat" + name = "flat pastry dough" + else + icon_state = "cookiedough" + + + +// Dough + rolling pin = flat cookie dough // Flat dough + circular cutter = unbaked cookies +/obj/item/reagent_containers/food/snacks/cookiedough/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/kitchen/rollingpin) && !flat) + if(isturf(loc)) + to_chat(user, "You flatten [src].") + flat = TRUE + update_icon() + else + to_chat(user, "You need to put [src] on a surface to roll it out!") + else if(istype(I, /obj/item/kitchen/cutter) && flat) + if(isturf(loc)) + new /obj/item/reagent_containers/food/snacks/rawcookies(loc) + to_chat(user, "You cut [src] into cookies.") + qdel(src) + else + to_chat(user, "You need to put [src] on a surface to cut it out!") + else + return ..() + + +/obj/item/reagent_containers/food/snacks/rawcookies + name = "raw cookies" + desc = "Ready for oven!" + icon = 'icons/obj/food/food_ingredients.dmi' + icon_state = "unbaked_cookies" + list_reagents = list("nutriment" = 5, "sugar" = 5) + +/obj/item/reagent_containers/food/snacks/rawcookies/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/reagent_containers/food/snacks/choc_pile)) + if(isturf(loc)) + new /obj/item/reagent_containers/food/snacks/rawcookies/chocochips(loc) + to_chat(user, "You sprinkle [I] all over the cookies.") + qdel(src) + qdel(I) + else + to_chat(user, "You need to put [src] on a surface to add this") + else + return ..() + +/obj/item/reagent_containers/food/snacks/rawcookies/chocochips + name = "raw cookies" + desc = "Ready for oven! They have little pieces of chocolate all over them" + icon = 'icons/obj/food/food_ingredients.dmi' + icon_state = "unbaked_cookies_choco" + list_reagents = list("nutriment" = 5, "sugar" = 5, "chocolate" = 5) + ////////////////////// // Chocolate // ////////////////////// @@ -140,6 +205,19 @@ filling_color = "#7D5F46" list_reagents = list("nutriment" = 2, "sugar" = 2, "cocoa" = 2) +///Chocolate crumbles/pile +/obj/item/reagent_containers/food/snacks/chocolatebar/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/kitchen/knife)) + if(isturf(loc)) + new /obj/item/reagent_containers/food/snacks/choc_pile(loc) + to_chat(user, "You cut [src] into little crumbles.") + qdel(src) + else + to_chat(user, "You need to put [src] on a surface to cut it out!") + else + return ..() + + /obj/item/reagent_containers/food/snacks/choc_pile //for reagent chocolate being spilled on turfs name = "pile of chocolate" desc = "A pile of pure chocolate pieces." diff --git a/code/modules/food_and_drinks/recipes/recipes_oven.dm b/code/modules/food_and_drinks/recipes/recipes_oven.dm index a6e08ad8569..0a6072e51a9 100644 --- a/code/modules/food_and_drinks/recipes/recipes_oven.dm +++ b/code/modules/food_and_drinks/recipes/recipes_oven.dm @@ -163,13 +163,22 @@ ) result = /obj/item/reagent_containers/food/snacks/loadedbakedpotato -/datum/recipe/oven/cookie - reagents = list("milk" = 5, "sugar" = 5) +////cookies by Ume + +/datum/recipe/oven/cookies items = list( - /obj/item/reagent_containers/food/snacks/dough, - /obj/item/reagent_containers/food/snacks/chocolatebar, + /obj/item/reagent_containers/food/snacks/rawcookies/chocochips, ) - result = /obj/item/reagent_containers/food/snacks/cookie + result = /obj/item/storage/bag/tray/cookies_tray + +/datum/recipe/oven/sugarcookies + items = list( + /obj/item/reagent_containers/food/snacks/rawcookies, + ) + result = /obj/item/storage/bag/tray/cookies_tray/sugarcookie + + +//// /datum/recipe/oven/fortunecookie reagents = list("sugar" = 5) @@ -437,14 +446,6 @@ ) result = /obj/item/reagent_containers/food/snacks/cracker -/datum/recipe/oven/sugarcookie - reagents = list("sugar" = 5) - items = list( - /obj/item/reagent_containers/food/snacks/dough, - /obj/item/reagent_containers/food/snacks/egg, - ) - result = /obj/item/reagent_containers/food/snacks/sugarcookie - /datum/recipe/oven/sugarcookie/make_food(obj/container) var/obj/item/reagent_containers/food/snacks/sugarcookie/being_cooked = ..() being_cooked.reagents.del_reagent("egg") diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index 6813026be76..b0eafcbc8bb 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -460,12 +460,12 @@ prize_list += list( new /datum/data/mining_equipment("Extra Id", /obj/item/card/id/golem, 250), new /datum/data/mining_equipment("Science Backpack", /obj/item/storage/backpack/science, 250), - new /datum/data/mining_equipment("Toolbelt", /obj/item/storage/belt/utility/full/multitool, 250), + new /datum/data/mining_equipment("Full Toolbelt", /obj/item/storage/belt/utility/full/multitool, 250), new /datum/data/mining_equipment("Monkey Cube", /obj/item/reagent_containers/food/snacks/monkeycube, 250), new /datum/data/mining_equipment("Royal Cape of the Liberator", /obj/item/bedsheet/rd/royal_cape, 500), new /datum/data/mining_equipment("Grey Slime Extract", /obj/item/slime_extract/grey, 1000), new /datum/data/mining_equipment("KA Trigger Modification Kit", /obj/item/borg/upgrade/modkit/trigger_guard, 1000), - new /datum/data/mining_equipment("The Liberator's Legacy", /obj/item/storage/box/rndboards, 1500) + new /datum/data/mining_equipment("The Liberator's Legacy", /obj/item/storage/box/rndboards, 2000) ) /datum/data/mining_equipment/ diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm index 67d7ddc9f33..2e4d3e8efd6 100644 --- a/code/modules/mob/living/carbon/brain/MMI.dm +++ b/code/modules/mob/living/carbon/brain/MMI.dm @@ -19,10 +19,17 @@ var/obj/item/radio/radio = null // For use with the radio MMI upgrade var/datum/action/generic/configure_mmi_radio/radio_action = null + // Used for cases when mmi or one of it's children commits suicide. + // Needed to fix a rather insane bug when a posibrain/robotic brain commits suicide + var/dead_icon = "mmi_dead" + /obj/item/mmi/attackby(var/obj/item/O as obj, var/mob/user as mob, params) - if(istype(O, /obj/item/organ/internal/brain/crystal )) + if(istype(O, /obj/item/organ/internal/brain/crystal)) to_chat(user, " This brain is too malformed to be able to use with the [src].") return + if(istype(O, /obj/item/organ/internal/brain/golem)) + to_chat(user, "You can't find a way to plug [O] into [src].") + return if(istype(O,/obj/item/organ/internal/brain) && !brainmob) //Time to stick a brain in it --NEO var/obj/item/organ/internal/brain/B = O if(!B.brainmob) diff --git a/code/modules/mob/living/carbon/brain/death.dm b/code/modules/mob/living/carbon/brain/death.dm index 777fce50423..c36a553aff4 100644 --- a/code/modules/mob/living/carbon/brain/death.dm +++ b/code/modules/mob/living/carbon/brain/death.dm @@ -4,8 +4,9 @@ if(!.) return FALSE if(!gibbed && container && istype(container, /obj/item/mmi))//If not gibbed but in a container. + var/obj/item/mmi/mmi = container visible_message("[src]'s MMI flatlines!", "You hear something flatline.") - container.icon_state = "mmi_dead" + mmi.icon_state = mmi.dead_icon /mob/living/carbon/brain/gib() // can we muster a parent call here? diff --git a/code/modules/mob/living/carbon/brain/robotic_brain.dm b/code/modules/mob/living/carbon/brain/robotic_brain.dm index b766d419d09..c294a11c999 100644 --- a/code/modules/mob/living/carbon/brain/robotic_brain.dm +++ b/code/modules/mob/living/carbon/brain/robotic_brain.dm @@ -21,11 +21,16 @@ var/mob/living/carbon/human/imprinted_master = null var/ejected_flavor_text = "circuit" + dead_icon = "boris_blank" + /obj/item/mmi/robotic_brain/Destroy() imprinted_master = null return ..() /obj/item/mmi/robotic_brain/attack_self(mob/user) + if(isgolem(user)) + to_chat(user, "Your golem fingers are too large to press the switch on [src].") + return if(requires_master && !imprinted_master) to_chat(user, "You press your thumb on [src] and imprint your user information.") imprinted_master = user @@ -228,4 +233,5 @@ desc = "A cube of shining metal, four inches to a side and covered in shallow grooves." silenced = TRUE requires_master = FALSE - ejected_flavor_text = "metal cube" \ No newline at end of file + ejected_flavor_text = "metal cube" + dead_icon = "posibrain" diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index e5122c70604..0e921e7953e 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -147,6 +147,7 @@ if(reagents.has_reagent("teslium")) shock_damage *= 1.5 //If the mob has teslium in their body, shocks are 50% more damaging! take_overall_damage(0,shock_damage, TRUE, used_weapon = "Electrocution") + shock_internal_organs(shock_damage) visible_message( "[src] was shocked by \the [source]!", \ "You feel a powerful shock coursing through your body!", \ @@ -1116,3 +1117,7 @@ so that different stomachs can handle things in different ways VB*/ if(I.flags_inv & HIDEMASK || forced) update_inv_wear_mask() update_inv_head() + +/mob/living/carbon/proc/shock_internal_organs(intensity) + for(var/obj/item/organ/O in internal_organs) + O.shock_organ(intensity) \ No newline at end of file diff --git a/code/modules/mob/living/silicon/ai/latejoin.dm b/code/modules/mob/living/silicon/ai/latejoin.dm index 41e7d20fb1e..c364c8d21b9 100644 --- a/code/modules/mob/living/silicon/ai/latejoin.dm +++ b/code/modules/mob/living/silicon/ai/latejoin.dm @@ -37,6 +37,9 @@ var/global/list/empty_playable_ai_cores = list() var/datum/game_mode/traitor/autotraitor/current_mode = ticker.mode current_mode.possible_traitors.Remove(src) + // Ghost the current player and disallow them to return to the body + ghostize(FALSE) + // Delete the old AI shell qdel(src) // TODO: Move away from the insane name-based landmark system diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index dbec1d42bbe..a0b6652f883 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -63,6 +63,7 @@ var/new_destination // pending new destination (waiting for beacon response) var/destination // destination description tag var/next_destination // the next destination in the patrol route + var/robot_arm = /obj/item/robot_parts/r_arm var/blockcount = 0 //number of times retried a blocked path var/awaiting_beacon = 0 // count of pticks awaiting a beacon response @@ -1106,3 +1107,6 @@ Pass a positive integer as an argument to override a bot's default speed. if(I) I.icon = null path.Cut(1, 2) + +/mob/living/simple_animal/bot/proc/drop_part(obj/item/drop_item, dropzone) + new drop_item(dropzone) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index b6cca5940e3..0c52b1517f3 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -179,14 +179,10 @@ on = 0 visible_message("[src] blows apart!") var/turf/Tsec = get_turf(src) - new /obj/item/reagent_containers/glass/bucket(Tsec) - new /obj/item/assembly/prox_sensor(Tsec) - if(prob(50)) - new /obj/item/robot_parts/l_arm(Tsec) - + drop_part(robot_arm, Tsec) do_sparks(3, 1, src) ..() diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm index 9c11a3d872c..2737781bd08 100644 --- a/code/modules/mob/living/simple_animal/bot/construction.dm +++ b/code/modules/mob/living/simple_animal/bot/construction.dm @@ -1,4 +1,5 @@ //Bot Construction +var/robot_arm = /obj/item/robot_parts/l_arm //Cleanbot assembly /obj/item/bucket_sensor @@ -22,6 +23,7 @@ var/turf/T = get_turf(loc) var/mob/living/simple_animal/bot/cleanbot/A = new /mob/living/simple_animal/bot/cleanbot(T) A.name = created_name + A.robot_arm = W.type to_chat(user, "You add the robot arm to the bucket and sensor assembly. Beep boop!") user.unEquip(src, 1) qdel(src) @@ -268,6 +270,7 @@ var/turf/T = get_turf(user.loc) var/mob/living/simple_animal/bot/floorbot/A = new /mob/living/simple_animal/bot/floorbot(T) A.name = created_name + A.robot_arm = W.type to_chat(user, "You add the robot arm to the odd looking toolbox assembly. Boop beep!") user.unEquip(src, 1) qdel(src) @@ -284,7 +287,10 @@ //Medbot Assembly /obj/item/storage/firstaid/attackby(obj/item/I, mob/user, params) if(!istype(I, /obj/item/robot_parts/l_arm) && !istype(I, /obj/item/robot_parts/r_arm)) - return ..() + return ..() + else + robot_arm = I.type + //Making a medibot! if(contents.len) @@ -292,7 +298,7 @@ return var/obj/item/firstaid_arm_assembly/A = new /obj/item/firstaid_arm_assembly(loc, med_bot_skin) - + A.req_one_access = req_one_access A.syndicate_aligned = syndicate_aligned A.treatment_oxy = treatment_oxy @@ -377,6 +383,7 @@ S.treatment_fire = treatment_fire S.treatment_tox = treatment_tox S.treatment_virus = treatment_virus + S.robot_arm = robot_arm else new /mob/living/simple_animal/bot/medbot/syndicate(T) //Syndicate medibots are a special case that have so many unique vars on them, it's not worth passing them through construction phases user.unEquip(src, 1) @@ -389,8 +396,8 @@ icon = 'icons/obj/aibots.dmi' icon_state = "helmet_signaler" item_state = "helmet" - var/build_step = 0 var/created_name = "Securitron" //To preserve the name if it's a unique securitron I guess + var/build_step = 0 /obj/item/clothing/head/helmet/attackby(obj/item/assembly/signaler/S, mob/user, params) ..() @@ -440,6 +447,7 @@ to_chat(user, "You add the robot arm to [src]!") name = "helmet/signaler/prox sensor/robot arm assembly" overlays += "hs_arm" + robot_arm = I.type qdel(I) else if((istype(I, /obj/item/melee/baton)) && (build_step >= 3)) @@ -450,6 +458,7 @@ var/mob/living/simple_animal/bot/secbot/S = new /mob/living/simple_animal/bot/secbot S.forceMove(get_turf(src)) S.name = created_name + S.robot_arm = robot_arm qdel(I) qdel(src) @@ -481,10 +490,74 @@ to_chat(user, "You remove the robot arm from [src].") build_step-- +//General Griefsky + + else if((istype(I, /obj/item/wrench)) && (build_step == 3)) + var/obj/item/griefsky_assembly/A = new /obj/item/griefsky_assembly + user.put_in_hands(A) + to_chat(user, "You adjust the arm slots for extra weapons!.") + user.unEquip(src, 1) + qdel(src) + +/obj/item/griefsky_assembly + name = "\improper Griefsky assembly" + desc = "Some sort of bizarre assembly." + icon = 'icons/obj/aibots.dmi' + icon_state = "griefsky_assembly" + item_state = "griefsky_assembly" + var/build_step = 0 + var/toy_step = 0 + +/obj/item/griefsky_assembly/attackby(obj/item/I, mob/user, params) + ..() + if((istype(I, /obj/item/melee/energy/sword)) && (build_step < 3 )) + if(!user.unEquip(I)) + return + build_step++ + to_chat(user, "You add an energy sword to [src]!.") + qdel(I) + + else if((istype(I, /obj/item/melee/energy/sword)) && (build_step == 3)) + if(!user.unEquip(I)) + return + to_chat(user, "You complete General Griefsky!.") + var/mob/living/simple_animal/bot/secbot/griefsky/S = new /mob/living/simple_animal/bot/secbot/griefsky + S.forceMove(get_turf(src)) + qdel(I) + qdel(src) + + else if((istype(I, /obj/item/toy/sword)) && (toy_step < 3 )) + if(!user.unEquip(I)) + return + toy_step++ + to_chat(user, "You add a toy sword to [src]!.") + qdel(I) + + else if((istype(I, /obj/item/toy/sword)) && (toy_step == 3)) + if(!user.unEquip(I)) + return + to_chat(user, "You complete Genewul Giftskee!.") + var/mob/living/simple_animal/bot/secbot/griefsky/toy/S = new /mob/living/simple_animal/bot/secbot/griefsky/toy + S.forceMove(get_turf(src)) + qdel(I) + qdel(src) + + else if(istype(I, /obj/item/screwdriver)) + if((build_step == 1) || (build_step == 2) || (build_step == 3) || (build_step == 4)) + new /obj/item/melee/energy/sword(get_turf(src)) + to_chat(user, "You detach the energy sword from [src].") + build_step-- + else if((toy_step == 1) || (toy_step == 2) || (toy_step == 3) || (toy_step == 4)) + new /obj/item/toy/sword(get_turf(src)) + to_chat(user, "You detach the toy sword from [src].") + toy_step-- + //Honkbot Assembly /obj/item/storage/box/clown/attackby(obj/item/W, mob/user, params) if(!istype(W, /obj/item/robot_parts/l_arm) && !istype(W, /obj/item/robot_parts/r_arm)) return ..() + else + robot_arm = W.type if(contents.len) to_chat(user, "You need to empty [src] out first!") @@ -531,5 +604,6 @@ return to_chat(user, "You add the trombone to [src]! Heeeenk! ") qdel(W) - new /mob/living/simple_animal/bot/honkbot(get_turf(loc)) + var/mob/living/simple_animal/bot/honkbot/A = new /mob/living/simple_animal/bot/honkbot(T) + A.robot_arm = robot_arm qdel(src) \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index 68e64ee65ed..c22d37eed19 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -388,14 +388,11 @@ on = 0 visible_message("[src] blows apart!") var/turf/Tsec = get_turf(src) - var/obj/item/storage/toolbox/mechanical/N = new /obj/item/storage/toolbox/mechanical(Tsec) N.contents = list() - new /obj/item/assembly/prox_sensor(Tsec) - if(prob(50)) - new /obj/item/robot_parts/l_arm(Tsec) + drop_part(robot_arm, Tsec) while(amount)//Dumps the tiles into the appropriate sized stacks if(amount >= 16) diff --git a/code/modules/mob/living/simple_animal/bot/griefsky.dm b/code/modules/mob/living/simple_animal/bot/griefsky.dm new file mode 100644 index 00000000000..f959149f5db --- /dev/null +++ b/code/modules/mob/living/simple_animal/bot/griefsky.dm @@ -0,0 +1,231 @@ +/mob/living/simple_animal/bot/secbot/griefsky //This bot is powerful. If you managed to get 4 eswords somehow, you deserve this horror. Emag him for best results. + name = "\improper General Griefsky" + desc = "Is that a secbot with four eswords in its arms...?" + icon_state = "griefsky0" + health = 100 + maxHealth = 100 + base_icon = "griefsky" + window_name = "Automatic Security Unit v3.0" + + var/spin_icon = "griefsky-c" // griefsky and griefsky junior have dif icons + var/weapon = /obj/item/melee/energy/sword + var/block_chance = 50 //block attacks + var/reflect_chance = 80 // chance to reflect projectiles + var/dmg = 30 //esword dmg + var/block_chance_melee = 50 + var/block_chance_ranged = 90 + var/stun_chance = 50 + var/spam_flag = 0 + +/mob/living/simple_animal/bot/secbot/griefsky/toy //A toy version of general griefsky! + name = "Genewul Giftskee" + desc = "An adorable looking secbot with four toy swords taped to its arms" + spin_icon = "griefskyj-c" + health = 50 + maxHealth = 50 + radio_channel = "Service" //we dont report sec anymore! + dmg = 0 + block_chance_melee = 1 + block_chance_ranged = 1 + stun_chance = 0 + bot_core_type = /obj/machinery/bot_core/toy + weapon = /obj/item/toy/sword + +/obj/machinery/bot_core/toy + req_access = list(access_maint_tunnels, access_theatre, access_robotics) + +/mob/living/simple_animal/bot/secbot/griefsky/proc/spam_flag_false() //used for addtimer to not spam comms + spam_flag = 0 + +/mob/living/simple_animal/bot/secbot/griefsky/back_to_idle() + ..() + playsound(loc, 'sound/weapons/saberoff.ogg', 50, 1, -1) + +/mob/living/simple_animal/bot/secbot/griefsky/emag_act(mob/user) + ..() + light_color = LIGHT_COLOR_PURE_RED //if you see a red one. RUN!! + +/mob/living/simple_animal/bot/secbot/griefsky/Crossed(atom/movable/AM) + ..() + if(ismob(AM) && AM == target) + var/mob/living/carbon/C = AM + visible_message("[src] flails his swords and pushes [C] out of it's way!" ) + C.Weaken(2) + +/mob/living/simple_animal/bot/secbot/griefsky/New() + ..() + +/mob/living/simple_animal/bot/secbot/griefsky/Destroy() + QDEL_NULL(weapon) + return ..() + +/mob/living/simple_animal/bot/secbot/griefsky/UnarmedAttack(atom/A) //like secbots its only possible with admin intervention + if(!on) + return + if(iscarbon(A)) + var/mob/living/carbon/C = A + sword_attack(C) + +/mob/living/simple_animal/bot/secbot/griefsky/bullet_act(obj/item/projectile/P) //so uncivilized + retaliate(P.firer) + if((icon_state == spin_icon) && (prob(block_chance_ranged))) //only when the eswords are on + visible_message("[src] deflects [P] with its energy swords!") + playsound(loc, 'sound/weapons/blade1.ogg', 50, 1, 0) + else + ..() + +/mob/living/simple_animal/bot/secbot/griefsky/proc/sword_attack(mob/living/carbon/C) // esword attack + src.do_attack_animation(C) + playsound(loc, 'sound/weapons/blade1.ogg', 50, 1, -1) + spawn(2) + icon_state = spin_icon + var/threat = C.assess_threat(src) + if(ishuman(C)) + C.apply_damage(dmg, BRUTE) + if(prob(stun_chance)) + C.Weaken(5) + add_attack_logs(src, C, "sliced") + if(declare_arrests) + var/area/location = get_area(src) + if(!spam_flag) + speak("Back away! I will deal with this level [threat] swine [C] in [location] myself!.", radio_channel) + spam_flag = 1 + addtimer(CALLBACK(src, .proc/spam_flag_false), 100) //to avoid spamming comms of sec for each hit + visible_message("[src] flails his swords and cuts [C]!") + + +/mob/living/simple_animal/bot/secbot/griefsky/handle_automated_action() + if(!on) + return + + switch(mode) + if(BOT_IDLE) // idle + icon_state = "griefsky1" + walk_to(src,0) + look_for_perp() // see if any criminals are in range + if(!mode && auto_patrol) // still idle, and set to patrol + mode = BOT_START_PATROL // switch to patrol mode + if(BOT_HUNT) // hunting for perp + icon_state = spin_icon + playsound(loc,'sound/effects/spinsabre.ogg',100,1,-1) + if(frustration >= 15) // general beepsky doesn't give up so easily, jedi scum + walk_to(src,0) + back_to_idle() + return + if(target) // make sure target exists + if(target.stat == !DEAD) + if(Adjacent(target) && isturf(target.loc)) // if right next to perp + target_lastloc = target.loc + sword_attack(target) + anchored = TRUE + frustration++ + return + else // not next to perp + var/turf/olddist = get_dist(src, target) + walk_to(src, target,1,3) //he's a fast fucker + if((get_dist(src, target)) >= (olddist)) + frustration++ + else + frustration = 0 + else + back_to_idle() + speak("You fool") + else + back_to_idle() + + if(BOT_START_PATROL) + look_for_perp() + start_patrol() + + if(BOT_PATROL) + icon_state = "griefsky1" + look_for_perp() + bot_patrol() + return + +/mob/living/simple_animal/bot/secbot/griefsky/look_for_perp() + anchored = 0 + for (var/mob/living/carbon/C in view(7,src)) //Let's find us a criminal + if((C.stat) || (C.handcuffed)) + continue + + if((C.name == oldtarget_name) && (world.time < last_found + 100)) + continue + + threatlevel = C.assess_threat(src) + + if(!threatlevel) + continue + + else if(threatlevel >= 4) + target = C + oldtarget_name = C.name + speak("You are a bold one") + playsound(src,'sound/weapons/saberon.ogg',50,TRUE,-1) + visible_message("[src] ignites his energy swords!") + icon_state = "griefsky-c" + visible_message("[src] points at [C.name]!") + mode = BOT_HUNT + INVOKE_ASYNC(src, .proc/handle_automated_action) + break + else + continue + +/mob/living/simple_animal/bot/secbot/griefsky/explode() + walk_to(src,0) + visible_message("[src] lets out a huge cough as it blows apart!") + var/turf/Tsec = get_turf(src) + new /obj/item/assembly/prox_sensor(Tsec) + if(prob(50)) + new /obj/item/robot_parts/r_arm(Tsec) + if(prob(50)) //most of the time weapon will be destroyed + new weapon(Tsec) + if(prob(25)) + new weapon(Tsec) + if(prob(10)) + new weapon(Tsec) + if(prob(5)) + new weapon(Tsec) + do_sparks(3, 1, src) + new /obj/effect/decal/cleanable/blood/oil(loc) + ..() + +//this section is blocking attack + +/mob/living/simple_animal/bot/secbot/griefsky/bullet_act(obj/item/projectile/P) //so uncivilized + retaliate(P.firer) + if((icon_state == spin_icon) && (prob(block_chance_ranged))) //only when the eswords are on + visible_message("[src] deflects [P] with its energy swords!") + playsound(loc, 'sound/weapons/blade1.ogg', 50, 1, 0) + else + ..() + +/mob/living/simple_animal/bot/secbot/griefsky/proc/special_retaliate_after_attack(mob/user) //allows special actions to take place after being attacked. + return + +/mob/living/simple_animal/bot/secbot/griefsky/special_retaliate_after_attack(mob/user) + if(icon_state != spin_icon) + return + if(prob(block_chance_melee)) + visible_message("[src] deflects [user]'s attack with his energy swords!") + playsound(loc, 'sound/weapons/blade1.ogg', 50, TRUE, -1) + return TRUE + +/mob/living/simple_animal/bot/secbot/griefsky/attack_hand(mob/living/carbon/human/H) + if((H.a_intent == INTENT_HARM) || (H.a_intent == INTENT_DISARM)) + retaliate(H) + if(special_retaliate_after_attack(H)) + return + return ..() + +/mob/living/simple_animal/bot/secbot/griefsky/attackby(obj/item/W, mob/user, params) //cant touch or attack him while spinning + if(src.icon_state == spin_icon) + if(prob(block_chance_melee)) + user.changeNext_move(CLICK_CD_MELEE) + user.do_attack_animation(src) + visible_message("[src] deflects [user]'s move with his energy swords!") + playsound(loc, 'sound/weapons/blade1.ogg', 50, TRUE, -1) + else + return ..() + else + return ..() \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm index 1505e71e6db..958f493e309 100644 --- a/code/modules/mob/living/simple_animal/bot/honkbot.dm +++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm @@ -278,16 +278,15 @@ else continue -/mob/living/simple_animal/bot/honkbot/explode() +/mob/living/simple_animal/bot/honkbot/explode() //doesn't drop cardboard nor its assembly, since its a very frail material. walk_to(src, 0) visible_message("[src] blows apart!") var/turf/Tsec = get_turf(src) - //doesn't drop cardboard nor its assembly, since its a very frail material. + new /obj/item/bikehorn(Tsec) + new /obj/item/assembly/prox_sensor(Tsec) if(prob(50)) - new /obj/item/robot_parts/r_arm(Tsec) - new /obj/item/bikehorn(Tsec) - new /obj/item/assembly/prox_sensor(Tsec) - + drop_part(robot_arm, Tsec) + new /obj/effect/decal/cleanable/blood/oil(loc) var/datum/effect_system/spark_spread/s = new s.set_up(3, 1, src) s.start() diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index 1c7cb902be3..9507b91e4f0 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -591,7 +591,7 @@ new /obj/item/healthanalyzer(Tsec) if(prob(50)) - new /obj/item/robot_parts/l_arm(Tsec) + drop_part(robot_arm, Tsec) if(reagent_glass) reagent_glass.forceMove(Tsec) diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index 84ab158504d..14a72c43fac 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -121,7 +121,7 @@ dat += hack(user) dat += showpai(user) dat += text({" -Securitron v1.6 controls

+[window_name]

Status: []
Behaviour controls are [locked ? "locked" : "unlocked"]
Maintenance panel panel is [open ? "opened" : "closed"]"}, @@ -231,9 +231,10 @@ Auto Patrol: []"}, playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) C.visible_message("[src] is trying to put zipties on [C]!",\ "[src] is trying to put zipties on you!") - spawn(60) - if( !Adjacent(C) || !isturf(C.loc) ) //if he's in a closet or not adjacent, we cancel cuffing. - return + INVOKE_ASYNC(src, .proc/cuff_callback, C) + +/mob/living/simple_animal/bot/secbot/proc/cuff_callback(mob/living/carbon/C) + if(do_after(src, 60, target = C)) if(!C.handcuffed) C.handcuffed = new /obj/item/restraints/handcuffs/cable/zipties/used(C) C.update_handcuffed() @@ -417,23 +418,18 @@ Auto Patrol: []"}, return 0 /mob/living/simple_animal/bot/secbot/explode() - walk_to(src,0) visible_message("[src] blows apart!") var/turf/Tsec = get_turf(src) - var/obj/item/secbot_assembly/Sa = new /obj/item/secbot_assembly(Tsec) Sa.build_step = 1 Sa.overlays += "hs_hole" Sa.created_name = name new /obj/item/assembly/prox_sensor(Tsec) new /obj/item/melee/baton(Tsec) - if(prob(50)) - new /obj/item/robot_parts/l_arm(Tsec) - + drop_part(robot_arm, Tsec) do_sparks(3, 1, src) - new /obj/effect/decal/cleanable/blood/oil(loc) ..() diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index 269ba45e8d9..4d7ff459563 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -161,6 +161,7 @@ //The objects that corgis can wear on their backs. var/list/allowed_types = list( /obj/item/clothing/suit/armor/vest, + /obj/item/clothing/suit/armor/vest/blueshield, /obj/item/clothing/suit/space/deathsquad, /obj/item/clothing/suit/space/hardsuit/engineering, /obj/item/radio, @@ -365,6 +366,12 @@ name = "Definitely Not [real_name]" desc = "That's Definitely Not [real_name]" valid = 1 + + if(/obj/item/clothing/head/beret/centcom/officer, /obj/item/clothing/head/beret/centcom/officer/navy) + name = "Blueshield [real_name]" + desc = "Will stand by you until the bitter end." + emote_see = list("stands with pride.", "growls heroically.") + valid = 1 if(valid) if(user && !user.drop_item()) diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/chem.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/chem.dm index 337988346ce..60e11de670a 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/chem.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/chem.dm @@ -2,7 +2,7 @@ // Terror Spider, Black, Deadly Venom /datum/reagent/terror_black_toxin - name = "Black Widow venom" + name = "Black Terror venom" id = "terror_black_toxin" description = "An incredibly toxic venom injected by the Black Widow spider." color = "#CF3600" diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/princess.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/princess.dm index d53e5924bdd..419f2a617f6 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/princess.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/princess.dm @@ -38,7 +38,10 @@ evolvequeen_action.Grant(src) /mob/living/simple_animal/hostile/poison/terror_spider/princess/proc/evolve_to_queen() - change_mob_type(/mob/living/simple_animal/hostile/poison/terror_spider/queen, null, null, 1, 1) + var/mob/living/simple_animal/hostile/poison/terror_spider/queen/Q = new /mob/living/simple_animal/hostile/poison/terror_spider/queen(loc) + if(mind) + mind.transfer_to(Q) + qdel(src) /mob/living/simple_animal/hostile/poison/terror_spider/princess/DoWrap() . = ..() diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm index de8fc9beac6..30d74c07b7f 100644 --- a/code/modules/projectiles/ammunition/ammo_casings.dm +++ b/code/modules/projectiles/ammunition/ammo_casings.dm @@ -349,6 +349,7 @@ if(!user.unEquip(A)) return A.loc = FD + FD.log_override = FALSE FD.pen = A FD.damage = 5 FD.nodamage = 0 @@ -370,6 +371,32 @@ projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/riot icon_state = "foamdart_riot" +/obj/item/ammo_casing/caseless/foam_dart/sniper + name = "foam sniper dart" + desc = "For the big nerf! Ages 8 and up." + caliber = "foam_force_sniper" + projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/sniper + icon_state = "foamdartsniper" + +/obj/item/ammo_casing/caseless/foam_dart/sniper/update_icon() + ..() + if(modified) + icon_state = "foamdartsniper_empty" + desc = "Its nerf or nothing! ... Although, this one doesn't look too safe." + if(BB) + BB.icon_state = "foamdartsniper_empty" + else + icon_state = initial(icon_state) + if(BB) + BB.icon_state = initial(BB.icon_state) + +/obj/item/ammo_casing/caseless/foam_dart/sniper/riot + name = "riot foam sniper dart" + desc = "For the bigger brother of the crowd control toy. Ages 18 and up." + caliber = "foam_force_sniper" + projectile_type = /obj/item/projectile/bullet/reusable/foam_dart/sniper/riot + icon_state = "foamdartsniper_riot" + /obj/item/ammo_casing/shotgun/assassination name = "assassination shell" desc = "A specialist shrapnel shell that has been laced with a silencing toxin." diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/boxes.dm index 28dc2e41b14..ae88bc9db61 100644 --- a/code/modules/projectiles/ammunition/boxes.dm +++ b/code/modules/projectiles/ammunition/boxes.dm @@ -125,6 +125,21 @@ ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot materials = list(MAT_METAL = 50000) +/obj/item/ammo_box/foambox/sniper + name = "ammo box (Foam Sniper Darts)" + icon = 'icons/obj/guns/toy.dmi' + icon_state = "foambox_sniper" + ammo_type = /obj/item/ammo_casing/caseless/foam_dart/sniper + max_ammo = 40 + materials = list(MAT_METAL = 900) + +/obj/item/ammo_box/foambox/sniper/riot + icon_state = "foambox_sniper_riot" + ammo_type = /obj/item/ammo_casing/caseless/foam_dart/sniper/riot + materials = list(MAT_METAL = 90000) + + + /obj/item/ammo_box/caps name = "speed loader (caps)" icon_state = "357" diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index f4500c7ce6d..68c6264b0a3 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -490,3 +490,12 @@ /obj/item/ammo_box/magazine/laser/update_icon() ..() icon_state = "[initial(icon_state)]-[Ceiling(ammo_count(0)/20)*20]" + +/obj/item/ammo_box/magazine/toy/smgm45 + name = "donksoft SMG magazine" + ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot + max_ammo = 20 + +/obj/item/ammo_box/magazine/toy/smgm45/update_icon() + ..() + icon_state = "c20r45-[round(ammo_count(),2)]" diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm index 1683f109cfd..cbffd8ecf8a 100644 --- a/code/modules/projectiles/guns/projectile/sniper.dm +++ b/code/modules/projectiles/guns/projectile/sniper.dm @@ -39,6 +39,17 @@ can_unsuppress = 0 can_suppress = 0 +/obj/item/gun/projectile/automatic/sniper_rifle/compact //holds very little ammo, lacks zooming, and bullets are primarily damage dealers, but the gun lacks the downsides of the full size rifle + name = "compact sniper rifle" + desc = "a compact, unscoped version of the standard issue syndicate sniper rifle. Still capable of sending people crying." + recoil = 0 + weapon_weight = WEAPON_LIGHT + fire_delay = 0 + mag_type = /obj/item/ammo_box/magazine/sniper_rounds/compact + can_unsuppress = FALSE + can_suppress = FALSE + zoomable = FALSE + //Normal Boolets /obj/item/ammo_box/magazine/sniper_rounds name = "sniper rounds (.50)" @@ -159,3 +170,39 @@ dismemberment = 0 weaken = 0 breakthings = FALSE + +//compact ammo +/obj/item/ammo_box/magazine/sniper_rounds/compact + name = "sniper rounds (compact)" + desc = "An extremely powerful round capable of inflicting massive damage on a target." + ammo_type = /obj/item/ammo_casing/compact + max_ammo = 4 + +/obj/item/ammo_casing/compact + desc = "A .50 caliber compact round casing." + caliber = ".50" + projectile_type = /obj/item/projectile/bullet/sniper/compact + icon_state = ".50" + +/obj/item/projectile/bullet/sniper/compact //Can't dismember, and can't break things; just deals massive damage. + dismemberment = 0 + breakthings = FALSE + +//toy magazine +/obj/item/ammo_box/magazine/toy/sniper_rounds + name = "donksoft Sniper magazine" + icon_state = ".50mag" + ammo_type = /obj/item/ammo_casing/caseless/foam_dart/sniper/riot + max_ammo = 6 + caliber = "foam_force_sniper" + +/obj/item/ammo_box/magazine/toy/sniper_rounds/update_icon() + overlays.Cut() + + var/ammo = ammo_count() + if(ammo && istype(contents[contents.len], /obj/item/ammo_casing/caseless/foam_dart/sniper/riot)) + overlays += image('icons/obj/ammo.dmi', icon_state = ".50mag-r") + else if(ammo) + overlays += image('icons/obj/ammo.dmi', icon_state = ".50mag-f") + else + icon_state = "[initial(icon_state)]" \ No newline at end of file diff --git a/code/modules/projectiles/guns/projectile/toy.dm b/code/modules/projectiles/guns/projectile/toy.dm index 8937fad6047..74f77a3be88 100644 --- a/code/modules/projectiles/guns/projectile/toy.dm +++ b/code/modules/projectiles/guns/projectile/toy.dm @@ -116,3 +116,15 @@ item_state = "shotgun" mag_type = /obj/item/ammo_box/magazine/internal/shot/toy/tommygun w_class = WEIGHT_CLASS_SMALL + +/obj/item/gun/projectile/automatic/sniper_rifle/toy + name = "donksoft sniper rifle" + desc = "A recoil-operated, semi-automatic donksoft sniper rifle. Perfect to annoy/kill the neighbour’s cat! Ages 8 and up." + icon = 'icons/obj/guns/toy.dmi' + can_suppress = FALSE + needs_permit = FALSE + zoomable = FALSE + mag_type = /obj/item/ammo_box/magazine/toy/sniper_rounds + +/obj/item/gun/projectile/automatic/sniper_rifle/toy/process_chamber(eject_casing = 0, empty_chamber = 1) + ..() \ No newline at end of file diff --git a/code/modules/projectiles/projectile/reusable.dm b/code/modules/projectiles/projectile/reusable.dm index 06bc778f4f0..1c23605f2b3 100644 --- a/code/modules/projectiles/projectile/reusable.dm +++ b/code/modules/projectiles/projectile/reusable.dm @@ -64,3 +64,16 @@ ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot stamina = 25 log_override = FALSE + +/obj/item/projectile/bullet/reusable/foam_dart/sniper + name = "foam sniper dart" + icon_state = "foamdartsniper" + ammo_type = /obj/item/ammo_casing/caseless/foam_dart/sniper + range = 30 + +/obj/item/projectile/bullet/reusable/foam_dart/sniper/riot + name = "riot sniper foam dart" + icon_state = "foamdartsniper_riot" + ammo_type = /obj/item/ammo_casing/caseless/foam_dart/sniper/riot + stamina = 100 + log_override = FALSE \ No newline at end of file diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index c838c5469c7..e827d282e21 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -264,10 +264,76 @@ dispensable_reagents = list("water", "ice", "milk", "soymilk", "coffee", "tea", "hot_coco", "cola", "spacemountainwind", "dr_gibb", "space_up", "tonic", "sodawater", "lemon_lime", "grapejuice", "sugar", "orangejuice", "lemonjuice", "limejuice", "tomatojuice", "banana", "watermelonjuice", "carrotjuice", "potato", "berryjuice") + var/list/special_reagents2 = list(list(""), + list("bananahonk", "milkshake", "cafe_latte", "cafe_mocha"), + list("triple_citrus", "icecoffe","icetea")) hack_message = "You change the mode from 'McNano' to 'Pizza King'." unhack_message = "You change the mode from 'Pizza King' to 'McNano'." hacked_reagents = list("thirteenloko") +/obj/machinery/chem_dispenser/soda/New() + ..() + component_parts = list() + component_parts += new /obj/item/circuitboard/soda(null) + component_parts += new /obj/item/stock_parts/matter_bin(null) + component_parts += new /obj/item/stock_parts/matter_bin(null) + component_parts += new /obj/item/stock_parts/manipulator(null) + component_parts += new /obj/item/stock_parts/capacitor(null) + component_parts += new /obj/item/stock_parts/console_screen(null) + component_parts += new /obj/item/stock_parts/cell/super(null) + RefreshParts() + +/obj/machinery/chem_dispenser/soda/upgraded/New() + ..() + component_parts = list() + component_parts += new /obj/item/circuitboard/soda(null) + component_parts += new /obj/item/stock_parts/matter_bin/super(null) + component_parts += new /obj/item/stock_parts/matter_bin/super(null) + component_parts += new /obj/item/stock_parts/manipulator/pico(null) + component_parts += new /obj/item/stock_parts/capacitor/super(null) + component_parts += new /obj/item/stock_parts/console_screen(null) + component_parts += new /obj/item/stock_parts/cell/hyper(null) + RefreshParts() + +/obj/machinery/chem_dispenser/soda/RefreshParts() + for(var/obj/item/stock_parts/manipulator/M in component_parts) + for(var/i in 1 to M.rating) + dispensable_reagents = sortList(dispensable_reagents | special_reagents2[i]) + +/obj/machinery/chem_dispenser/soda/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/reagent_containers/glass)) + if(panel_open) + to_chat(user, "Close the maintenance panel first.") + return + return ..() + else + ..() + + if(default_deconstruction_screwdriver(user, "minidispenser-o", "minidispenser", I)) + return + + if(exchange_parts(user, I)) + return + + if(iswrench(I)) + playsound(src, I.usesound, 50, 1) + if(anchored) + anchored = FALSE + to_chat(user, "[src] can now be moved.") + else if(!anchored) + anchored = TRUE + to_chat(user, "[src] is now secured.") + + if(panel_open) + if(iscrowbar(I)) + if(beaker) + var/obj/item/reagent_containers/glass/B = beaker + B.forceMove(loc) + beaker = null + default_deconstruction_crowbar(I) + return TRUE + + /obj/machinery/chem_dispenser/beer icon_state = "booze_dispenser" name = "booze dispenser" @@ -276,10 +342,75 @@ max_energy = 100 desc = "A technological marvel, supposedly able to mix just the mixture you'd like to drink the moment you ask for one." dispensable_reagents = list("ice", "cream", "cider", "beer", "kahlua", "whiskey", "wine", "vodka", "gin", "rum", "tequila", "vermouth", "cognac", "ale", "mead", "synthanol") + var/list/special_reagents3 = list(list("iced_beer"), + list("irishcream", "manhattan",), + list("antihol", "synthignon", "bravebull")) hack_message = "You disable the 'nanotrasen-are-cheap-bastards' lock, enabling hidden and very expensive boozes." unhack_message = "You re-enable the 'nanotrasen-are-cheap-bastards' lock, disabling hidden and very expensive boozes." hacked_reagents = list("goldschlager", "patron", "absinthe", "ethanol", "nothing", "sake") +/obj/machinery/chem_dispenser/beer/New() + ..() + component_parts = list() + component_parts += new /obj/item/circuitboard/beer(null) + component_parts += new /obj/item/stock_parts/matter_bin(null) + component_parts += new /obj/item/stock_parts/matter_bin(null) + component_parts += new /obj/item/stock_parts/manipulator(null) + component_parts += new /obj/item/stock_parts/capacitor(null) + component_parts += new /obj/item/stock_parts/console_screen(null) + component_parts += new /obj/item/stock_parts/cell/super(null) + RefreshParts() + +/obj/machinery/chem_dispenser/beer/upgraded/New() + ..() + component_parts = list() + component_parts += new /obj/item/circuitboard/beer(null) + component_parts += new /obj/item/stock_parts/matter_bin/super(null) + component_parts += new /obj/item/stock_parts/matter_bin/super(null) + component_parts += new /obj/item/stock_parts/manipulator/pico(null) + component_parts += new /obj/item/stock_parts/capacitor/super(null) + component_parts += new /obj/item/stock_parts/console_screen(null) + component_parts += new /obj/item/stock_parts/cell/hyper(null) + RefreshParts() + +/obj/machinery/chem_dispenser/beer/RefreshParts() + for(var/obj/item/stock_parts/manipulator/M in component_parts) + for(var/i in 1 to M.rating) + dispensable_reagents = sortList(dispensable_reagents | special_reagents3[i]) + +/obj/machinery/chem_dispenser/beer/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/reagent_containers/glass)) + if(panel_open) + to_chat(user, "Close the maintenance panel first.") + return + return ..() + else + ..() + + if(default_deconstruction_screwdriver(user, "minidispenser-o", "minidispenser", I)) + return + + if(exchange_parts(user, I)) + return + + if(iswrench(I)) + playsound(src, I.usesound, 50, 1) + if(anchored) + anchored = FALSE + to_chat(user, "[src] can now be moved.") + else if(!anchored) + anchored = TRUE + to_chat(user, "[src] is now secured.") + + if(panel_open) + if(iscrowbar(I)) + if(beaker) + var/obj/item/reagent_containers/glass/B = beaker + B.forceMove(loc) + beaker = null + default_deconstruction_crowbar(I) + return TRUE + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/code/modules/reagents/chemistry/reagents/alcohol.dm b/code/modules/reagents/chemistry/reagents/alcohol.dm index 9d0cf7b14f4..88e2d685f57 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol.dm @@ -70,6 +70,7 @@ drink_icon = "whiskeyglass" drink_name = "Glass of whiskey" drink_desc = "The silky, smokey whiskey goodness inside the glass makes the drink look very classy." + taste_message = "whiskey" /datum/reagent/consumable/ethanol/specialwhiskey name = "Special Blend Whiskey" @@ -89,6 +90,7 @@ drink_icon = "ginvodkaglass" drink_name = "Glass of gin" drink_desc = "A crystal clear glass of Griffeater gin." + taste_message = "gin" /datum/reagent/consumable/ethanol/absinthe name = "Absinthe" @@ -124,6 +126,7 @@ drink_icon = "rumglass" drink_name = "Glass of Rum" drink_desc = "Now you want to Pray for a pirate suit, don't you?" + taste_message = "rum" /datum/reagent/consumable/ethanol/rum/overdose_process(mob/living/M, severity) var/update_flags = STATUS_UPDATE_NONE @@ -150,6 +153,7 @@ drink_icon = "ginvodkaglass" drink_name = "Glass of vodka" drink_desc = "The glass contain wodka. Xynta." + taste_message = "vodka" /datum/reagent/consumable/ethanol/sake name = "Sake" @@ -171,6 +175,7 @@ drink_icon = "tequilaglass" drink_name = "Glass of Tequila" drink_desc = "Now all that's missing is the weird colored shades!" + taste_message = "tequila" /datum/reagent/consumable/ethanol/vermouth name = "Vermouth" @@ -205,6 +210,7 @@ drink_icon = "cognacglass" drink_name = "Glass of cognac" drink_desc = "Damn, you feel like some kind of French aristocrat just by holding this." + taste_message = "cognac" /datum/reagent/consumable/ethanol/suicider //otherwise known as "I want to get so smashed my liver gives out and I die from alcohol poisoning". name = "Suicider" @@ -278,7 +284,7 @@ drink_icon = "atomicbombglass" drink_name = "Atomic Bomb" drink_desc = "Nanotrasen cannot take legal responsibility for your actions after imbibing." - taste_message = "fruity alcohol" + taste_message = "a long, fiery burn" /datum/reagent/consumable/ethanol/threemileisland name = "THree Mile Island Iced Tea" @@ -290,7 +296,7 @@ drink_icon = "threemileislandglass" drink_name = "Three Mile Island Ice Tea" drink_desc = "A glass of this is sure to prevent a meltdown." - taste_message = "fruity alcohol" + taste_message = "a creeping heat" /datum/reagent/consumable/ethanol/goldschlager name = "Goldschlager" @@ -302,6 +308,7 @@ drink_icon = "ginvodkaglass" drink_name = "Glass of goldschlager" drink_desc = "100 proof that teen girls will drink anything with gold in it." + taste_message = "a deep, spicy warmth" /datum/reagent/consumable/ethanol/patron name = "Patron" @@ -313,6 +320,7 @@ drink_icon = "patronglass" drink_name = "Glass of Patron" drink_desc = "Drinking patron in the bar, with all the subpar ladies." + taste_message = "a gift" /datum/reagent/consumable/ethanol/gintonic name = "Gin and Tonic" @@ -324,6 +332,7 @@ drink_icon = "gintonicglass" drink_name = "Gin and Tonic" drink_desc = "A mild but still great cocktail. Drink up, like a true Englishman." + taste_message = "bitter medicine" /datum/reagent/consumable/ethanol/cuba_libre name = "Cuba Libre" @@ -336,6 +345,7 @@ drink_name = "Cuba Libre" drink_desc = "A classic mix of rum and cola." taste_message = "fruity alcohol" + taste_message = "liberation" /datum/reagent/consumable/ethanol/whiskey_cola name = "Whiskey Cola" @@ -359,7 +369,7 @@ drink_icon = "martiniglass" drink_name = "Classic Martini" drink_desc = "Damn, the bartender even stirred it, not shook it." - taste_message = "martini" + taste_message = "class" /datum/reagent/consumable/ethanol/vodkamartini name = "Vodka Martini" @@ -371,6 +381,7 @@ drink_icon = "martiniglass" drink_name = "Vodka martini" drink_desc ="A bastardisation of the classic martini. Still great." + taste_message = "class and potatoes" /datum/reagent/consumable/ethanol/white_russian name = "White Russian" @@ -382,7 +393,7 @@ drink_icon = "whiterussianglass" drink_name = "White Russian" drink_desc = "A very nice looking drink. But that's just, like, your opinion, man." - taste_message = "creamy alcohol" + taste_message = "very creamy alcohol" /datum/reagent/consumable/ethanol/screwdrivercocktail name = "Screwdriver" @@ -394,7 +405,7 @@ drink_icon = "screwdriverglass" drink_name = "Screwdriver" drink_desc = "A simple, yet superb mixture of Vodka and orange juice. Just the thing for the tired engineer." - taste_message = "fruity alcohol" + taste_message = "a naughty secret" /datum/reagent/consumable/ethanol/booger name = "Booger" @@ -406,7 +417,7 @@ drink_icon = "booger" drink_name = "Booger" drink_desc = "Eww..." - taste_message = "sweet alcohol" + taste_message = "a fruity mess" /datum/reagent/consumable/ethanol/bloody_mary name = "Bloody Mary" @@ -560,7 +571,7 @@ drink_icon = "b52glass" drink_name = "B-52" drink_desc = "Kahlua, Irish Cream, and congac. You will get bombed." - taste_message = "creamy alcohol" + taste_message = "destruction" /datum/reagent/consumable/ethanol/irishcoffee name = "Irish Coffee" @@ -584,7 +595,7 @@ drink_icon = "margaritaglass" drink_name = "Margarita" drink_desc = "On the rocks with salt on the rim. Arriba~!" - taste_message = "fruity alcohol" + taste_message = "daisies" /datum/reagent/consumable/ethanol/black_russian name = "Black Russian" @@ -608,7 +619,7 @@ drink_icon = "manhattanglass" drink_name = "Manhattan" drink_desc = "The Detective's undercover drink of choice. He never could stomach gin..." - taste_message = "bitter alcohol" + taste_message = "a bustling city" /datum/reagent/consumable/ethanol/manhattan_proj name = "Manhattan Project" @@ -620,7 +631,7 @@ drink_icon = "proj_manhattanglass" drink_name = "Manhattan Project" drink_desc = "A scientist's drink of choice, for thinking how to blow up the station." - taste_message = "bitter alcohol" + taste_message = "the apocalypse" /datum/reagent/consumable/ethanol/whiskeysoda name = "Whiskey Soda" @@ -661,7 +672,7 @@ drink_icon = "b&p" drink_name = "Barefoot" drink_desc = "Barefoot and pregnant" - taste_message = "sweet alcohol" + taste_message = "pregnancy" /datum/reagent/consumable/ethanol/snowwhite name = "Snow White" @@ -673,7 +684,7 @@ drink_icon = "snowwhite" drink_name = "Snow White" drink_desc = "A cold refreshment." - taste_message = "refreshing alcohol" + taste_message = "a poisoned apple" /datum/reagent/consumable/ethanol/demonsblood name = "Demons Blood" @@ -699,7 +710,7 @@ drink_icon = "vodkatonicglass" drink_name = "Vodka and Tonic" drink_desc = "For when a gin and tonic isn't russian enough." - taste_message = "fizzy alcohol" + taste_message = "bitter medicine" /datum/reagent/consumable/ethanol/ginfizz name = "Gin Fizz" @@ -724,7 +735,7 @@ drink_icon = "bahama_mama" drink_name = "Bahama Mama" drink_desc = "Tropic cocktail" - taste_message = "fruity alcohol" + taste_message = "HONK" /datum/reagent/consumable/ethanol/singulo name = "Singulo" @@ -749,7 +760,7 @@ drink_icon = "sbitenglass" drink_name = "Sbiten" drink_desc = "A spicy mix of Vodka and Spice. Very hot." - taste_message = "spicy alcohol" + taste_message = "comforting warmth" /datum/reagent/consumable/ethanol/sbiten/on_mob_life(mob/living/M) if(M.bodytemperature < 360) @@ -766,7 +777,7 @@ drink_icon = "devilskiss" drink_name = "Devils Kiss" drink_desc = "Creepy time!" - taste_message = "blood" + taste_message = "naughtiness" /datum/reagent/consumable/ethanol/red_mead name = "Red Mead" @@ -791,7 +802,7 @@ drink_icon = "meadglass" drink_name = "Mead" drink_desc = "A Vikings Beverage, though a cheap one." - taste_message = "sweet alcohol" + taste_message = "honey" /datum/reagent/consumable/ethanol/iced_beer name = "Iced Beer" @@ -803,7 +814,7 @@ drink_icon = "iced_beerglass" drink_name = "Iced Beer" drink_desc = "A beer so frosty, the air around it freezes." - taste_message = "refreshing alcohol" + taste_message = "cold beer" /datum/reagent/consumable/ethanol/iced_beer/on_mob_life(mob/living/M) if(M.bodytemperature > 270) @@ -820,7 +831,7 @@ drink_icon = "grogglass" drink_name = "Grog" drink_desc = "A fine and cepa drink for Space." - taste_message = "rum" + taste_message = "strongly diluted rum" /datum/reagent/consumable/ethanol/aloe name = "Aloe" @@ -832,7 +843,7 @@ drink_icon = "aloe" drink_name = "Aloe" drink_desc = "Very, very, very good." - taste_message = "sweet alcohol" + taste_message = "healthy skin" /datum/reagent/consumable/ethanol/andalusia name = "Andalusia" @@ -856,7 +867,7 @@ drink_icon = "alliescocktail" drink_name = "Allies cocktail" drink_desc = "A drink made from your allies." - taste_message = "bitter alcohol" + taste_message = "victory" /datum/reagent/consumable/ethanol/acid_spit name = "Acid Spit" @@ -916,6 +927,7 @@ drink_icon = "hippiesdelightglass" drink_name = "Hippie's Delight" drink_desc = "A drink enjoyed by people during the 1960's." + taste_message = "colors" /datum/reagent/consumable/ethanol/hippies_delight/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -966,7 +978,7 @@ drink_icon = "irishcarbomb" drink_name = "Irish Car Bomb" drink_desc = "An irish car bomb." - taste_message = "creamy alcohol" + taste_message = "troubles" /datum/reagent/consumable/ethanol/syndicatebomb name = "Syndicate Bomb" @@ -990,7 +1002,7 @@ drink_icon = "erikasurprise" name = "Erika Surprise" drink_desc = "The surprise is, it's green!" - taste_message = "sweet alcohol" + taste_message = "disappointment" /datum/reagent/consumable/ethanol/driestmartini name = "Driest Martini" @@ -1003,7 +1015,7 @@ drink_icon = "driestmartiniglass" drink_name = "Driest Martini" drink_desc = "Only for the experienced. You think you see sand floating in the glass." - taste_message = "bitter alcohol" + taste_message = "dust and ashes" /datum/reagent/consumable/ethanol/driestmartini/on_mob_life(mob/living/M) if(current_cycle >= 55 && current_cycle < 115) @@ -1019,7 +1031,7 @@ drink_icon = "kahluaglass" drink_name = "Glass of RR coffee Liquor" drink_desc = "DAMN, THIS THING LOOKS ROBUST" - taste_message = "sweet alcohol" + taste_message = "coffee and alcohol" /datum/reagent/consumable/ethanol/kahlua/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -1158,7 +1170,7 @@ drink_icon = "synthanolglass" drink_name = "Glass of Synthanol" drink_desc = "The equivalent of alcohol for synthetic crewmembers. They'd find it awful if they had tastebuds too." - taste_message = "motor oil mixed with puke" + taste_message = "motor oil" /datum/reagent/consumable/ethanol/synthanol/on_mob_life(mob/living/M) if(!M.isSynthetic()) @@ -1184,6 +1196,7 @@ drink_icon = "robottearsglass" drink_name = "Glass of Robot Tears" drink_desc = "No robots were hurt in the making of this drink." + taste_message = "existential angst" /datum/reagent/consumable/ethanol/synthanol/trinary name = "Trinary" @@ -1195,6 +1208,7 @@ drink_icon = "trinaryglass" drink_name = "Glass of Trinary" drink_desc = "Colorful drink made for synthetic crewmembers. It doesn't seem like it would taste well." + taste_message = "modem static" /datum/reagent/consumable/ethanol/synthanol/servo name = "Servo" @@ -1206,6 +1220,7 @@ drink_icon = "servoglass" drink_name = "Glass of Servo" drink_desc = "Chocolate - based drink made for IPCs. Not sure if anyone's actually tried out the recipe." + taste_message = "motor oil and cocoa" /datum/reagent/consumable/ethanol/synthanol/uplink name = "Uplink" @@ -1217,6 +1232,7 @@ drink_icon = "uplinkglass" drink_name = "Glass of Uplink" drink_desc = "An exquisite mix of the finest liquoirs and synthanol. Meant only for synthetics." + taste_message = "a GUI in visual basic" /datum/reagent/consumable/ethanol/synthanol/synthnsoda name = "Synth 'n Soda" @@ -1228,6 +1244,7 @@ drink_icon = "synthnsodaglass" drink_name = "Glass of Synth 'n Soda" drink_desc = "Classic drink altered to fit the tastes of a robot. Bad idea to drink if you're made of carbon." + taste_message = "fizzy motor oil" /datum/reagent/consumable/ethanol/synthanol/synthignon name = "Synthignon" @@ -1239,6 +1256,7 @@ drink_icon = "synthignonglass" drink_name = "Glass of Synthignon" drink_desc = "Someone mixed good wine and robot booze. Romantic, but atrocious." + taste_message = "fancy motor oil" /datum/reagent/consumable/ethanol/fruit_wine name = "Fruit Wine" diff --git a/code/modules/reagents/chemistry/reagents/drink_base.dm b/code/modules/reagents/chemistry/reagents/drink_base.dm index 4f20e323049..236da829c73 100644 --- a/code/modules/reagents/chemistry/reagents/drink_base.dm +++ b/code/modules/reagents/chemistry/reagents/drink_base.dm @@ -4,6 +4,7 @@ description = "Uh, some kind of drink." reagent_state = LIQUID color = "#E78108" // rgb: 231, 129, 8 + taste_message = "something which should not exist" var/adj_dizzy = 0 var/adj_drowsy = 0 var/adj_sleepy = 0 diff --git a/code/modules/reagents/chemistry/reagents/drink_cold.dm b/code/modules/reagents/chemistry/reagents/drink_cold.dm index 35b67fa2a8b..8e902f014f3 100644 --- a/code/modules/reagents/chemistry/reagents/drink_cold.dm +++ b/code/modules/reagents/chemistry/reagents/drink_cold.dm @@ -14,6 +14,7 @@ drink_icon = "glass_clear" drink_name = "Glass of Tonic Water" drink_desc = "Quinine tastes funny, but at least it'll keep that Space Malaria away." + taste_message = "bitterness" /datum/reagent/consumable/drink/cold/sodawater name = "Soda Water" @@ -25,6 +26,7 @@ drink_icon = "glass_clear" drink_name = "Glass of Soda Water" drink_desc = "Soda water. Why not make a scotch and soda?" + taste_message = "fizz" /datum/reagent/consumable/drink/cold/ice name = "Ice" @@ -36,6 +38,7 @@ drink_icon = "iceglass" drink_name = "Glass of ice" drink_desc = "Generally, you're supposed to put something else in there too..." + taste_message = "cold" /datum/reagent/consumable/drink/cold/ice/on_mob_life(mob/living/M) M.bodytemperature = max(M.bodytemperature - 5 * TEMPERATURE_DAMAGE_COEFFICIENT, 0) @@ -62,7 +65,7 @@ drink_icon = "nuka_colaglass" drink_name = "Nuka Cola" drink_desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland" - taste_message = "cola" + taste_message = "radioactive cola" /datum/reagent/consumable/drink/cold/nuka_cola/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE diff --git a/code/modules/reagents/chemistry/reagents/drinks.dm b/code/modules/reagents/chemistry/reagents/drinks.dm index be5e71d53bd..52ae0f0c93b 100644 --- a/code/modules/reagents/chemistry/reagents/drinks.dm +++ b/code/modules/reagents/chemistry/reagents/drinks.dm @@ -308,7 +308,7 @@ drink_icon = "icedcoffeeglass" drink_name = "Iced Coffee" drink_desc = "A drink to perk you up and refresh you!" - taste_message = "coffee" + taste_message = "refreshingly cold coffee" /datum/reagent/consumable/drink/coffee/soy_latte name = "Soy Latte" @@ -320,6 +320,7 @@ drink_icon = "soy_latte" drink_name = "Soy Latte" drink_desc = "A nice and refrshing beverage while you are reading." + taste_message = "fake milky coffee" /datum/reagent/consumable/drink/coffee/soy_latte/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -338,6 +339,7 @@ drink_icon = "cafe_latte" drink_name = "Cafe Latte" drink_desc = "A nice, strong and refreshing beverage while you are reading." + taste_message = "milky coffee" /datum/reagent/consumable/drink/coffee/cafe_latte/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -353,6 +355,7 @@ color = "#673629" drink_name = "Cafe Mocha" drink_desc = "The perfect blend of coffe, milk, and chocolate." + taste_message = "chocolatey coffee" /datum/reagent/consumable/drink/tea name = "Tea" @@ -385,16 +388,17 @@ drink_icon = "icetea" drink_name = "Iced Tea" drink_desc = "No relation to a certain rap artist/ actor." + taste_message = "cold tea" /datum/reagent/consumable/drink/bananahonk - name = "Banana Mama" + name = "Banana Honk" id = "bananahonk" description = "A drink from Clown Heaven." color = "#664300" // rgb: 102, 67, 0 drink_icon = "bananahonkglass" drink_name = "Banana Honk" drink_desc = "A drink from Banana Heaven." - taste_message = "honks" + taste_message = "HONK" /datum/reagent/consumable/drink/bananahonk/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -462,7 +466,7 @@ drink_icon = "bluecherryshake" drink_name = "Blue Cherry Shake" drink_desc = "An exotic blue milkshake." - taste_message = "cherry milkshake" + taste_message = "blues" /datum/reagent/consumable/drink/pumpkin_latte name = "Pumpkin Latte" diff --git a/code/modules/reagents/chemistry/reagents/drugs.dm b/code/modules/reagents/chemistry/reagents/drugs.dm index 980c6d5bf9d..9d786dd0713 100644 --- a/code/modules/reagents/chemistry/reagents/drugs.dm +++ b/code/modules/reagents/chemistry/reagents/drugs.dm @@ -19,6 +19,7 @@ description = "A chemical element." reagent_state = SOLID color = "#808080" // rgb: 128, 128, 128 + taste_message = "metal" /datum/reagent/lithium/on_mob_life(mob/living/M) if(isturf(M.loc) && !istype(M.loc, /turf/space)) @@ -34,6 +35,7 @@ description = "A highly potent hallucinogenic substance. Far out, maaaan." reagent_state = LIQUID color = "#0000D8" + taste_message = "a magical journey" /datum/reagent/lsd/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -50,6 +52,7 @@ metabolization_rate = 0.2 addiction_chance = 65 heart_rate_decrease = 1 + taste_message = "a synthetic high" /datum/reagent/space_drugs/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -66,6 +69,7 @@ id = "psilocybin" description = "A strong psycotropic derived from certain species of mushroom." color = "#E700E7" // rgb: 231, 0, 231 + taste_message = "visions" /datum/reagent/psilocybin/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -101,6 +105,7 @@ overdose_threshold = 35 addiction_chance = 70 heart_rate_increase = 1 + taste_message = "calm" /datum/reagent/nicotine/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -237,6 +242,7 @@ color = "#0264B4" overdose_threshold = 20 addiction_chance = 50 + taste_message = "very poor life choices" /datum/reagent/krokodil/on_mob_life(mob/living/M) @@ -310,6 +316,7 @@ addiction_chance = 60 metabolization_rate = 0.6 heart_rate_increase = 1 + taste_message = "speed" /datum/reagent/methamphetamine/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -369,6 +376,7 @@ overdose_threshold = 20 addiction_chance = 80 metabolization_rate = 0.6 + taste_message = "WAAAAGH" /datum/reagent/bath_salts/on_mob_life(mob/living/M) var/check = rand(0,100) diff --git a/code/modules/reagents/chemistry/reagents/food.dm b/code/modules/reagents/chemistry/reagents/food.dm index d440b63774d..c4434a92c5e 100644 --- a/code/modules/reagents/chemistry/reagents/food.dm +++ b/code/modules/reagents/chemistry/reagents/food.dm @@ -23,6 +23,7 @@ reagent_state = SOLID nutriment_factor = 15 * REAGENTS_METABOLISM color = "#664330" // rgb: 102, 67, 48 + taste_message = null /datum/reagent/consumable/nutriment/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -57,7 +58,7 @@ description = "All the best vitamins, minerals, and carbohydrates the body needs in pure form." reagent_state = SOLID color = "#664330" // rgb: 102, 67, 48 - taste_message = null + taste_message = "nutrition" /datum/reagent/consumable/vitamin/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -272,6 +273,7 @@ reagent_state = SOLID color = "#B1B0B0" overdose_threshold = 100 + taste_strength = 2 taste_message = "salt" /datum/reagent/consumable/sodiumchloride/overdose_process(mob/living/M, severity) @@ -324,7 +326,7 @@ id = "sprinkles" description = "Multi-colored little bits of sugar, commonly found on donuts. Loved by cops." color = "#FF00FF" // rgb: 255, 0, 255 - taste_message = "sweetness" + taste_message = "crunchy sweetness" /datum/reagent/consumable/sprinkles/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -433,7 +435,7 @@ description = "Blue and tastier kind of cherry jelly." reagent_state = LIQUID color = "#00F0FF" - taste_message = "cherry jelly" + taste_message = "the blues" /datum/reagent/consumable/egg name = "Egg" @@ -462,7 +464,7 @@ description = "A sweet syrup derived from corn starch that has had its starches converted into maltose and other sugars." reagent_state = LIQUID color = "#C8A5DC" - taste_message = "sweetness" + taste_message = "cheap sugar substitute" /datum/reagent/consumable/corn_syrup/on_mob_life(mob/living/M) M.reagents.add_reagent("sugar", 1.2) @@ -502,7 +504,7 @@ id = "onionjuice" description = "A strong tasting substance that can induce partial blindness." color = "#c0c9a0" - taste_message = "bitterness" + taste_message = "pungency" /datum/reagent/consumable/onion/reaction_mob(mob/living/M, method = TOUCH, volume) if(method == TOUCH) @@ -708,7 +710,7 @@ description = "A paste comprised of highly-processed organic material. Uncomfortably similar to deviled ham spread." reagent_state = LIQUID color = "#EBD7D7" - taste_message = "meat" + taste_message = "meat?" /datum/reagent/consumable/meatslurry/on_mob_life(mob/living/M) if(prob(4)) @@ -810,6 +812,7 @@ color = "#F5F5F5" metabolization_rate = 0.2 taste_message = "excellent cuisine" + taste_strength = 4 /datum/reagent/msg/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE diff --git a/code/modules/reagents/chemistry/reagents/medicine.dm b/code/modules/reagents/chemistry/reagents/medicine.dm index c925b828d41..804904723ea 100644 --- a/code/modules/reagents/chemistry/reagents/medicine.dm +++ b/code/modules/reagents/chemistry/reagents/medicine.dm @@ -14,6 +14,7 @@ color = "#C805DC" metabolization_rate = 0.3 // Lasts 1.5 minutes for 15 units shock_reduction = 200 + taste_message = "numbness" /datum/reagent/medicine/hydrocodone/on_mob_life(mob/living/M) if(ishuman(M)) @@ -28,6 +29,7 @@ description = "Sterilizes wounds in preparation for surgery." reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 + taste_message = "antiseptic" //makes you squeaky clean /datum/reagent/medicine/sterilizine/reaction_mob(mob/living/M, method=TOUCH, volume) @@ -47,6 +49,7 @@ reagent_state = LIQUID color = "#FA46FA" overdose_threshold = 40 + taste_message = "stimulant" /datum/reagent/medicine/synaptizine/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -89,6 +92,7 @@ description = "A specialized drug that stimulates the mitochondria of cells to encourage healing of internal organs." reagent_state = LIQUID color = "#C8A5DC" // rgb: 200, 165, 220 + taste_message = "nurturing" /datum/reagent/medicine/mitocholide/on_mob_life(mob/living/M) if(ishuman(M)) @@ -112,6 +116,7 @@ reagent_state = LIQUID color = "#0000C8" // rgb: 200, 165, 220 heart_rate_decrease = 1 + taste_message = "a safe refuge" /datum/reagent/medicine/cryoxadone/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -135,6 +140,7 @@ reagent_state = SOLID color = "#669900" // rgb: 102, 153, 0 overdose_threshold = 30 + taste_message = "reformation" /datum/reagent/medicine/rezadone/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -163,6 +169,7 @@ reagent_state = LIQUID color = "#0AB478" metabolization_rate = 0.2 + taste_message = "antibiotics" /datum/reagent/medicine/silver_sulfadiazine name = "Silver Sulfadiazine" @@ -171,6 +178,7 @@ reagent_state = LIQUID color = "#F0C814" metabolization_rate = 3 + taste_message = "burn cream" /datum/reagent/medicine/silver_sulfadiazine/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -196,6 +204,7 @@ reagent_state = LIQUID color = "#C8A5DC" metabolization_rate = 3 + taste_message = "wound cream" /datum/reagent/medicine/styptic_powder/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -243,6 +252,7 @@ description = "A resorbable microfibrillar collagen and protein mixture that can rapidly heal injuries when applied topically." reagent_state = LIQUID color = "#FFEBEB" + taste_message = "blood" /datum/reagent/medicine/synthflesh/reaction_mob(mob/living/M, method=TOUCH, volume, show_message = 1) if(iscarbon(M)) @@ -264,6 +274,7 @@ description = "Activated charcoal helps to absorb toxins." reagent_state = LIQUID color = "#000000" + taste_message = "dust" /datum/reagent/medicine/charcoal/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -283,6 +294,7 @@ metabolization_rate = 0.2 overdose_threshold = 30 addiction_chance = 5 + taste_message = "health" /datum/reagent/medicine/omnizine/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -338,6 +350,7 @@ reagent_state = LIQUID color = "#22AB35" metabolization_rate = 0.8 + taste_message = "a painful cleansing" /datum/reagent/medicine/calomel/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -356,6 +369,7 @@ description = "Potassium Iodide is a medicinal drug used to counter the effects of radiation poisoning." reagent_state = LIQUID color = "#B4DCBE" + taste_message = "cleansing" /datum/reagent/medicine/potass_iodide/on_mob_life(mob/living/M) if(prob(80)) @@ -368,6 +382,7 @@ description = "Pentetic Acid is an aggressive chelation agent. May cause tissue damage. Use with caution." reagent_state = LIQUID color = "#C8A5DC" + taste_message = "a purge" /datum/reagent/medicine/pen_acid/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -391,6 +406,7 @@ metabolization_rate = 0.1 shock_reduction = 25 overdose_threshold = 25 + taste_message = "relief" /datum/reagent/medicine/sal_acid/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -409,6 +425,7 @@ reagent_state = LIQUID color = "#00FFFF" metabolization_rate = 0.2 + taste_message = "safety" /datum/reagent/medicine/salbutamol/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -424,6 +441,7 @@ color = "#C8A5DC" metabolization_rate = 0.2 addiction_chance = 20 + taste_message = "oxygenation" /datum/reagent/medicine/perfluorodecalin/on_mob_life(mob/living/carbon/human/M) var/update_flags = STATUS_UPDATE_NONE @@ -444,6 +462,7 @@ metabolization_rate = 0.3 overdose_threshold = 35 addiction_chance = 25 + taste_message = "stimulation" /datum/reagent/medicine/ephedrine/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -492,6 +511,7 @@ reagent_state = LIQUID color = "#5BCBE1" addiction_chance = 10 + taste_message = "antihistamine" /datum/reagent/medicine/diphenhydramine/on_mob_life(mob/living/M) M.AdjustJitter(-20) @@ -514,6 +534,7 @@ overdose_threshold = 20 addiction_chance = 50 shock_reduction = 50 + taste_message = "a delightful numbing" /datum/reagent/medicine/morphine/on_mob_life(mob/living/M) M.AdjustJitter(-25) @@ -538,6 +559,7 @@ description = "Oculine is a saline eye medication with mydriatic and antibiotic effects." reagent_state = LIQUID color = "#C8A5DC" + taste_message = "clarity" /datum/reagent/medicine/oculine/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -569,6 +591,7 @@ color = "#000000" metabolization_rate = 0.2 overdose_threshold = 25 + taste_message = "a moment of respite" /datum/reagent/medicine/atropine/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -596,6 +619,7 @@ color = "#96B1AE" metabolization_rate = 0.2 overdose_threshold = 20 + taste_message = "borrowed time" /datum/reagent/medicine/epinephrine/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -651,6 +675,7 @@ reagent_state = LIQUID color = "#A0E85E" metabolization_rate = 0.2 + taste_message = "life" /datum/reagent/medicine/strange_reagent/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -716,6 +741,7 @@ id = "mannitol" description = "Mannitol is a sugar alcohol that can help alleviate cranial swelling." color = "#D1D1F1" + taste_message = "neurogenisis" /datum/reagent/medicine/mannitol/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -727,6 +753,7 @@ id = "mutadone" description = "Mutadone is an experimental bromide that can cure genetic abnomalities." color = "#5096C8" + taste_message = "cleanliness" /datum/reagent/medicine/mutadone/on_mob_life(mob/living/carbon/human/M) if(M.mind && M.mind.assigned_role == "Cluwne") // HUNKE @@ -755,6 +782,7 @@ id = "antihol" description = "A medicine which quickly eliminates alcohol in the body." color = "#009CA8" + taste_message = "sobriety" /datum/reagent/medicine/antihol/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -841,6 +869,7 @@ description = "A hormone generated by the pancreas responsible for metabolizing carbohydrates and fat in the bloodstream." reagent_state = LIQUID color = "#C8A5DC" + taste_message = "tiredness" /datum/reagent/medicine/insulin/on_mob_life(mob/living/M) M.reagents.remove_reagent("sugar", 5) @@ -853,6 +882,7 @@ color = "#D782E6" addiction_chance = 20 overdose_threshold = 50 + taste_message = "warmth and stability" /datum/reagent/medicine/teporone/on_mob_life(mob/living/M) if(M.bodytemperature > 310) @@ -867,6 +897,7 @@ description = "Haloperidol is a powerful antipsychotic and sedative. Will help control psychiatric problems, but may cause brain damage." reagent_state = LIQUID color = "#FFDCFF" + taste_message = "stability" /datum/reagent/medicine/haloperidol/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -898,6 +929,7 @@ reagent_state = LIQUID color = "#96DEDE" metabolization_rate = 0.1 + taste_message = "sleepiness" /datum/reagent/medicine/ether/on_mob_life(mob/living/M) M.AdjustJitter(-25) @@ -919,6 +951,7 @@ reagent_state = SOLID color = "#555555" can_synth = FALSE + taste_message = "bodily perfection" /datum/reagent/medicine/syndicate_nanites/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -938,6 +971,7 @@ color = "#DCDCDC" overdose_threshold = 30 metabolization_rate = 0.1 + taste_message = "faint hope" /datum/reagent/medicine/omnizine_diluted/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -955,26 +989,6 @@ update_flags |= M.adjustFireLoss(1.5*REAGENTS_EFFECT_MULTIPLIER, FALSE) return list(0, update_flags) -//virus-specific symptom reagents - -/datum/reagent/medicine/synaphydramine - name = "Diphen-Synaptizine" - id = "synaphydramine" - description = "Reduces drowsiness and hallucinations while also purging histamine from the body." - color = "#EC536D" // rgb: 236, 83, 109 - -/datum/reagent/medicine/synaphydramine/on_mob_life(mob/living/M) - var/update_flags = STATUS_UPDATE_NONE - M.AdjustDrowsy(-5) - if(holder.has_reagent("lsd")) - holder.remove_reagent("lsd", 5) - if(holder.has_reagent("histamine")) - holder.remove_reagent("histamine", 5) - M.AdjustHallucinate(-10) - if(prob(30)) - update_flags |= M.adjustToxLoss(1, FALSE) - return ..() | update_flags - ////////////////////////////// // Synth-Meds // ////////////////////////////// @@ -987,6 +1001,7 @@ reagent_state = LIQUID color = "#CC7A00" process_flags = SYNTHETIC + taste_message = "overclocking" /datum/reagent/medicine/degreaser/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -1017,6 +1032,7 @@ reagent_state = LIQUID color = "#D7B395" process_flags = SYNTHETIC + taste_message = "heavy metals" /datum/reagent/medicine/liquid_solder/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -1033,6 +1049,7 @@ reagent_state = LIQUID color = "#C8A5DC" overdose_threshold = 30 + taste_message = "knitting wounds" /datum/reagent/medicine/bicaridine/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -1051,6 +1068,7 @@ reagent_state = LIQUID color = "#C8A5DC" overdose_threshold = 30 + taste_message = "soothed burns" /datum/reagent/medicine/kelotane/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -1069,6 +1087,7 @@ description = "Ichor from an extremely powerful plant. Great for restoring wounds, but it's a little heavy on the brain." color = "#FFAF00" overdose_threshold = 25 + taste_message = "a gift from nature" /datum/reagent/medicine/earthsblood/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -1094,6 +1113,7 @@ id = "corazone" description = "A medication used to treat pain, fever, and inflammation, along with heart attacks." color = "#F5F5F5" + taste_message = "a brief respite" // This reagent's effects are handled in heart attack handling code @@ -1104,6 +1124,7 @@ color = "#9b3401" metabolization_rate = 0.5 can_synth = FALSE + taste_message = "wholeness" /datum/reagent/medicine/nanocalcium/on_mob_life(mob/living/carbon/human/M) var/update_flags = STATUS_UPDATE_NONE diff --git a/code/modules/reagents/chemistry/reagents/misc.dm b/code/modules/reagents/chemistry/reagents/misc.dm index 031732b65cc..7e015a006e8 100644 --- a/code/modules/reagents/chemistry/reagents/misc.dm +++ b/code/modules/reagents/chemistry/reagents/misc.dm @@ -128,7 +128,7 @@ description = "A silvery white and ductile member of the boron group of chemical elements." reagent_state = SOLID color = "#A8A8A8" // rgb: 168, 168, 168 - taste_message = null + taste_message = "metal" /datum/reagent/silicon @@ -176,7 +176,7 @@ description = "A perfluoronated sulfonic acid that forms a foam when mixed with water." reagent_state = LIQUID color = "#9E6B38" // rgb: 158, 107, 56 - taste_message = null + taste_message = "extreme discomfort" // metal foaming agent // this is lithium hydride. Add other recipies (e.g. LiH + H2O -> LiOH + H2) eventually @@ -215,7 +215,7 @@ description = "A purple gaseous element." reagent_state = GAS color = "#493062" - taste_message = null + taste_message = "chemtrail resistance" /datum/reagent/carpet name = "Carpet" @@ -261,7 +261,7 @@ description = "Pure 100% nail polish remover, also works as an industrial solvent." reagent_state = LIQUID color = "#474747" - taste_message = null + taste_message = "nail polish remover" /datum/reagent/acetone/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -274,7 +274,7 @@ description = "Volatile." reagent_state = LIQUID color = "#60A584" // rgb: 96, 165, 132 - taste_message = null + taste_message = "one third of an explosion" /datum/reagent/colorful_reagent name = "Colorful Reagent" @@ -534,7 +534,7 @@ description = "Finely ground Coffee beans, used to make coffee." reagent_state = SOLID color = "#5B2E0D" // rgb: 91, 46, 13 - taste_message = "bitterness" + taste_message = "waste" /datum/reagent/toxin/teapowder name = "Ground Tea Leaves" @@ -542,7 +542,7 @@ description = "Finely shredded Tea leaves, used for making tea." reagent_state = SOLID color = "#7F8400" // rgb: 127, 132, 0" - taste_message = "bitterness" + taste_message = "the future" //////////////////////////////////Hydroponics stuff/////////////////////////////// @@ -566,6 +566,7 @@ description = "Cheap and extremely common type of plant nutriment." color = "#376400" // RBG: 50, 100, 0 tox_prob = 10 + taste_message = "obscurity and toil" /datum/reagent/plantnutriment/left4zednutriment name = "Left 4 Zed" @@ -573,6 +574,7 @@ description = "Unstable nutriment that makes plants mutate more often than usual." color = "#1A1E4D" // RBG: 26, 30, 77 tox_prob = 25 + taste_message = "evolution" /datum/reagent/plantnutriment/robustharvestnutriment name = "Robust Harvest" @@ -580,6 +582,7 @@ description = "Very potent nutriment that prevents plants from mutating." color = "#9D9D00" // RBG: 157, 157, 0 tox_prob = 15 + taste_message = "bountifulness" ///Alchemical Reagents diff --git a/code/modules/reagents/chemistry/reagents/toxins.dm b/code/modules/reagents/chemistry/reagents/toxins.dm index d4de3d368a2..510f3ca1368 100644 --- a/code/modules/reagents/chemistry/reagents/toxins.dm +++ b/code/modules/reagents/chemistry/reagents/toxins.dm @@ -176,6 +176,39 @@ return ..() +/datum/reagent/stable_mutagen + name = "Stable mutagen" + id = "stable_mutagen" + description = "Just the regular, boring sort of mutagenic compound. Works in a completely predictable manner." + reagent_state = LIQUID + color = "#7DFF00" + +/datum/reagent/stable_mutagen/on_mob_life(mob/living/M) + if(!ishuman(M) || !M.dna) + return + M.apply_effect(2*REAGENTS_EFFECT_MULTIPLIER, IRRADIATE, negate_armor = 1) + if(current_cycle == 10 && islist(data)) + if(istype(data["dna"], /datum/dna)) + var/mob/living/carbon/human/H = M + var/datum/dna/D = data["dna"] + if(!D.species.is_small) + H.set_species(D.species.type, retain_damage = TRUE) + H.dna = D.Clone() + H.real_name = D.real_name + domutcheck(H, null, MUTCHK_FORCED) + H.dna.UpdateSE() + H.dna.UpdateUI() + H.sync_organ_dna(TRUE) + H.UpdateAppearance() + + return ..() + +/datum/reagent/stable_mutagen/on_tick() + var/datum/reagent/blood/B = locate() in holder.reagent_list + if(B && islist(B.data) && !data) + data = B.data.Copy() + ..() + /datum/reagent/uranium name ="Uranium" id = "uranium" @@ -1037,7 +1070,7 @@ /datum/reagent/capulettium name = "Capulettium" id = "capulettium" - description = "A rare drug that causes the user to fall unconscious and appear dead as long as it's in the body." + description = "A rare drug that causes the user to appear dead for some time." reagent_state = LIQUID color = "#60A584" heart_rate_stop = 1 @@ -1046,10 +1079,18 @@ /datum/reagent/capulettium/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE switch(current_cycle) - if(1 to 10) + if(1 to 5) update_flags |= M.AdjustEyeBlurry(10, FALSE) + if(6 to 10) + M.Drowsy(10) if(11) fakedeath(M) + if(61 to 69) + update_flags |= M.AdjustEyeBlurry(10, FALSE) + if(70 to INFINITY) + update_flags |= M.AdjustEyeBlurry(10, FALSE) + if(M.status_flags & FAKEDEATH) + fakerevive(M) return ..() | update_flags /datum/reagent/capulettium/on_mob_delete(mob/living/M) diff --git a/code/modules/reagents/chemistry/reagents/water.dm b/code/modules/reagents/chemistry/reagents/water.dm index 68090b34624..6d8ea272cfe 100644 --- a/code/modules/reagents/chemistry/reagents/water.dm +++ b/code/modules/reagents/chemistry/reagents/water.dm @@ -116,7 +116,7 @@ description = "Lubricant is a substance introduced between two moving surfaces to reduce the friction and wear between them. giggity." reagent_state = LIQUID color = "#1BB1AB" - taste_message = "oil" + taste_message = "cherry" /datum/reagent/lube/reaction_turf(turf/simulated/T, volume) if(volume >= 1 && istype(T)) @@ -194,7 +194,7 @@ /datum/reagent/blood - data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"blood_colour"="#A10808","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null) + data = list("donor"=null,"viruses"=null,"blood_DNA"=null,"blood_type"=null,"blood_colour"="#A10808","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null, "dna" = null) name = "Blood" id = "blood" reagent_state = LIQUID @@ -285,6 +285,7 @@ name = "Vaccine" id = "vaccine" color = "#C81040" // rgb: 200, 16, 64 + taste_message = "antibodies" /datum/reagent/vaccine/reaction_mob(mob/living/M, method=TOUCH, volume) if(islist(data) && (method == INGEST)) @@ -440,7 +441,7 @@ description = "Something that shouldn't exist on this plane of existance." process_flags = ORGANIC | SYNTHETIC //ethereal means everything processes it. metabolization_rate = 1 - taste_message = null + taste_message = "sulfur" /datum/reagent/fuel/unholywater/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -507,6 +508,7 @@ description = "Can be used to dry things." reagent_state = LIQUID color = "#A70FFF" + taste_message = "dry mouth" /datum/reagent/drying_agent/reaction_turf(turf/simulated/T, volume) if(istype(T) && T.wet) diff --git a/code/modules/reagents/chemistry/recipes/food.dm b/code/modules/reagents/chemistry/recipes/food.dm index cbea3014773..ec732bba858 100644 --- a/code/modules/reagents/chemistry/recipes/food.dm +++ b/code/modules/reagents/chemistry/recipes/food.dm @@ -99,9 +99,25 @@ /datum/chemical_reaction/dough/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) + for(var/i in 1 to created_volume) new /obj/item/reagent_containers/food/snacks/dough(location) +///Cookies by Ume + +/datum/chemical_reaction/cookiedough + name = "Dough" + id = "dough" + result = null + required_reagents = list("milk" = 10, "flour" = 10, "sugar" = 5) + result_amount = 1 + mix_message = "The ingredients form a dough. It smells sweet and yummy." + +/datum/chemical_reaction/cookiedough/on_reaction(datum/reagents/holder, created_volume) + var/location = get_turf(holder.my_atom) + for(var/i in 1 to created_volume) + new /obj/item/reagent_containers/food/snacks/cookiedough(location) + + /datum/chemical_reaction/corn_syrup name = "corn_syrup" id = "corn_syrup" diff --git a/code/modules/reagents/chemistry/recipes/toxins.dm b/code/modules/reagents/chemistry/recipes/toxins.dm index 0697ccd50d4..1531c80542a 100644 --- a/code/modules/reagents/chemistry/recipes/toxins.dm +++ b/code/modules/reagents/chemistry/recipes/toxins.dm @@ -154,6 +154,19 @@ result_amount = 3 mix_message = "The substance turns neon green and bubbles unnervingly." +/datum/chemical_reaction/stable_mustagen + name = "Stable mutagen" + id = "stable_mutagen" + result = "stable_mutagen" + required_reagents = list("mutagen" = 1, "lithium" = 1, "acetone" = 1, "bromine" = 1) + result_amount = 3 + mix_message = "The substance turns a drab green and begins to bubble." + +/datum/chemical_reaction/stable_mustagen/stable_mustagen2 + id = "stable_mutagen2" + required_reagents = list("mutadone" = 3, "lithium" = 1) + result_amount = 4 + /datum/chemical_reaction/heparin name = "Heparin" id = "Heparin" diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 6e1fbb8a842..5d3a3536d62 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -312,22 +312,11 @@ GLOBAL_LIST_INIT(conveyor_switches, list()) to_chat(user,"You detach the conveyor switch.") qdel(src) else if(ismultitool(I)) - update_multitool_menu(user) + one_way = !one_way + to_chat(user, "[src] will now go [one_way ? "forwards only" : "both forwards and backwards"].") else return ..() -/obj/machinery/conveyor_switch/multitool_topic(var/mob/user,var/list/href_list,var/obj/O) - ..() - if("toggle_logic" in href_list) - one_way = !one_way - update_multitool_menu(user) - -/obj/machinery/conveyor_switch/multitool_menu(var/mob/user, var/obj/item/multitool/P) - return {" - "} - /obj/machinery/conveyor_switch/power_change() ..() update_icon() diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index ca606720c7b..069efe5807c 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -623,6 +623,14 @@ build_path = /obj/item/ammo_box/foambox category = list("initial", "Miscellaneous") +/datum/design/foam_dart_sniper + name = "Box of Sniper Foam Darts" + id = "foam_dart_sniper" + build_type = AUTOLATHE + materials = list(MAT_METAL = 900) + build_path = /obj/item/ammo_box/foambox/sniper + category = list("initial", "Miscellaneous") + //hacked autolathe recipes /datum/design/flamethrower name = "Flamethrower" @@ -728,6 +736,14 @@ build_path = /obj/item/ammo_casing/caseless/foam_dart/riot category = list("hacked", "Security") +/datum/design/riot_dart_sniper + name = "Foam riot sniper dart" + id = "riot_dart_sniper" + build_type = AUTOLATHE + materials = list(MAT_METAL = 1800) //Discount for making individually - no box = less metal! + build_path = /obj/item/ammo_casing/caseless/foam_dart/sniper/riot + category = list("hacked", "Security") + /datum/design/riot_darts name = "Foam riot dart box" id = "riot_darts" @@ -736,6 +752,14 @@ build_path = /obj/item/ammo_box/foambox/riot category = list("hacked", "Security") +/datum/design/riot_darts_sniper + name = "Foam riot sniper dart box" + id = "riot_darts_sniper" + build_type = AUTOLATHE + materials = list(MAT_METAL = 90000) //Comes with 40 darts + build_path = /obj/item/ammo_box/foambox/sniper/riot + category = list("hacked", "Security") + /datum/design/a357 name = "Ammo Box (.357)" id = "a357" diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index dbe1fb1e2fe..d5434765e30 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -531,6 +531,16 @@ build_path = /obj/item/organ/internal/heart/cybernetic category = list("Medical") +/datum/design/cybernetic_heart_u + name = "Upgraded Cybernetic Heart" + desc = "An upgraded cybernetic heart." + id = "cybernetic_heart_u" + req_tech = list("biotech" = 5, "materials" = 5, "engineering" = 5) + build_type = PROTOLATHE | MECHFAB + materials = list(MAT_METAL = 500, MAT_GLASS = 500, MAT_SILVER = 500) + build_path = /obj/item/organ/internal/heart/cybernetic/upgraded + category = list("Medical") + /datum/design/cybernetic_lungs name = "Cybernetic Lungs" desc = "A pair of cybernetic lungs." diff --git a/code/modules/shuttle/ert.dm b/code/modules/shuttle/ert.dm new file mode 100644 index 00000000000..cbd007b32f9 --- /dev/null +++ b/code/modules/shuttle/ert.dm @@ -0,0 +1,21 @@ +/obj/machinery/computer/shuttle/ert + name = "specops shuttle console" + req_access = list(access_cent_general) + shuttleId = "specops" + possible_destinations = "specops_home;specops_away;specops_custom" + resistance_flags = INDESTRUCTIBLE + +/obj/machinery/computer/camera_advanced/shuttle_docker/ert + name = "specops navigation computer" + desc = "Used to designate a precise transit location for the specops shuttle." + icon_screen = "navigation" + icon_keyboard = "med_key" + shuttleId = "specops" + shuttlePortId = "specops_custom" + view_range = 13 + x_offset = 0 + y_offset = 0 + resistance_flags = INDESTRUCTIBLE + access_tcomms = FALSE + access_construction = FALSE + access_mining = FALSE \ No newline at end of file diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/navigation_computer.dm new file mode 100644 index 00000000000..feff384ed87 --- /dev/null +++ b/code/modules/shuttle/navigation_computer.dm @@ -0,0 +1,355 @@ +/obj/machinery/computer/camera_advanced/shuttle_docker + name = "navigation computer" + desc = "Used to designate a precise transit location for a spacecraft." + icon_screen = "navigation" + icon_keyboard = "med_key" + jump_action = null + var/datum/action/innate/shuttledocker_rotate/rotate_action = new + var/datum/action/innate/shuttledocker_place/place_action = new + var/shuttleId = "" + var/shuttlePortId = "" + var/shuttlePortName = "custom location" + var/list/jumpto_ports = list() //list of ports to jump to + var/access_station = TRUE //can we park near X? + var/access_tcomms = TRUE + var/access_construction = TRUE + var/access_mining = TRUE + var/access_derelict = FALSE + var/obj/docking_port/stationary/my_port //the custom docking port placed by this console + var/obj/docking_port/mobile/shuttle_port //the mobile docking port of the connected shuttle + var/view_range = 7 + var/x_offset = 0 + var/y_offset = 0 + var/space_turfs_only = TRUE + var/see_hidden = FALSE + var/designate_time = 0 + var/turf/designating_target_loc + +/obj/machinery/computer/camera_advanced/shuttle_docker/Initialize() + . = ..() + GLOB.navigation_computers += src + if(access_station) + jumpto_ports += list("nav_z1" = 1) + if(access_tcomms) + jumpto_ports += list("nav_z3" = 1) + if(access_construction) + jumpto_ports += list("nav_z4" = 1) + if(access_mining) + jumpto_ports += list("nav_z5" = 1) + if(access_derelict) + jumpto_ports += list("nav_z6" = 1) + +/obj/machinery/computer/camera_advanced/shuttle_docker/Destroy() + . = ..() + GLOB.navigation_computers -= src + +/obj/machinery/computer/camera_advanced/shuttle_docker/attack_hand(mob/user) + if(!shuttle_port && !SSshuttle.getShuttle(shuttleId)) + to_chat(user,"Warning: Shuttle connection severed!") + return + return ..() + +/obj/machinery/computer/camera_advanced/shuttle_docker/GrantActions(mob/living/user) + if(jumpto_ports.len) + jump_action = new /datum/action/innate/camera_jump/shuttle_docker + ..() + /* //technically working but some icons are buggy as shit and either don't rotate or rotate wrong : + //namely shuttle walls, shuttle windows, shuttle engines and buckled mobs + if(rotate_action) + rotate_action.target = user + rotate_action.Grant(user) + actions += rotate_action + */ + if(place_action) + place_action.target = user + place_action.Grant(user) + actions += place_action + +/obj/machinery/computer/camera_advanced/shuttle_docker/CreateEye() + shuttle_port = SSshuttle.getShuttle(shuttleId) + if(QDELETED(shuttle_port)) + shuttle_port = null + return + + eyeobj = new /mob/camera/aiEye/remote/shuttle_docker(null, src) + var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj + the_eye.setDir(shuttle_port.dir) + var/turf/origin = locate(shuttle_port.x + x_offset, shuttle_port.y + y_offset, shuttle_port.z) + for(var/V in shuttle_port.shuttle_areas) + var/area/A = V + for(var/turf/T in A) + if(T.z != origin.z) + continue + var/image/I = image('icons/effects/alphacolors.dmi', origin, "red") + var/x_off = T.x - origin.x + var/y_off = T.y - origin.y + I.loc = locate(origin.x + x_off, origin.y + y_off, origin.z) //we have to set this after creating the image because it might be null, and images created in nullspace are immutable. + I.layer = ABOVE_NORMAL_TURF_LAYER + I.plane = 0 + I.mouse_opacity = MOUSE_OPACITY_TRANSPARENT + the_eye.placement_images[I] = list(x_off, y_off) + +/obj/machinery/computer/camera_advanced/shuttle_docker/give_eye_control(mob/user) + ..() + if(!QDELETED(user) && user.client) + var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj + var/list/to_add = list() + to_add += the_eye.placement_images + to_add += the_eye.placed_images + if(!see_hidden) + to_add += SSshuttle.hidden_shuttle_turf_images + + user.client.images += to_add + user.client.SetView(view_range) + +/obj/machinery/computer/camera_advanced/shuttle_docker/remove_eye_control(mob/living/user) + ..() + if(!QDELETED(user) && user.client) + var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj + var/list/to_remove = list() + to_remove += the_eye.placement_images + to_remove += the_eye.placed_images + if(!see_hidden) + to_remove += SSshuttle.hidden_shuttle_turf_images + + user.client.images -= to_remove + user.client.SetView(7) + +/obj/machinery/computer/camera_advanced/shuttle_docker/proc/placeLandingSpot() + if(designating_target_loc || !current_user) + return + + var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj + var/landing_clear = checkLandingSpot() + if(designate_time && (landing_clear != SHUTTLE_DOCKER_BLOCKED)) + to_chat(current_user, "Targeting transit location, please wait [DisplayTimeText(designate_time)]...") + designating_target_loc = the_eye.loc + var/wait_completed = do_after(current_user, designate_time, FALSE, designating_target_loc, TRUE, CALLBACK(src, /obj/machinery/computer/camera_advanced/shuttle_docker/proc/canDesignateTarget)) + designating_target_loc = null + if(!current_user) + return + if(!wait_completed) + to_chat(current_user, "Operation aborted.") + return + landing_clear = checkLandingSpot() + + if(landing_clear != SHUTTLE_DOCKER_LANDING_CLEAR) + switch(landing_clear) + if(SHUTTLE_DOCKER_BLOCKED) + to_chat(current_user, "Invalid transit location") + if(SHUTTLE_DOCKER_BLOCKED_BY_HIDDEN_PORT) + to_chat(current_user, "Unknown object detected in landing zone. Please designate another location.") + return + + if(!my_port) + my_port = new() + my_port.name = shuttlePortName + my_port.id = shuttlePortId + my_port.height = shuttle_port.height + my_port.width = shuttle_port.width + my_port.dheight = shuttle_port.dheight + my_port.dwidth = shuttle_port.dwidth + my_port.hidden = shuttle_port.hidden + my_port.register() + my_port.setDir(the_eye.dir) + my_port.forceMove(locate(eyeobj.x - x_offset, eyeobj.y - y_offset, eyeobj.z)) + if(current_user.client) + current_user.client.images -= the_eye.placed_images + + QDEL_LIST(the_eye.placed_images) + + for(var/V in the_eye.placement_images) + var/image/I = V + var/image/newI = image('icons/effects/alphacolors.dmi', the_eye.loc, "blue") + newI.loc = I.loc //It is highly unlikely that any landing spot including a null tile will get this far, but better safe than sorry. + newI.layer = ABOVE_OPEN_TURF_LAYER + newI.plane = 0 + newI.mouse_opacity = 0 + the_eye.placed_images += newI + + if(current_user.client) + current_user.client.images += the_eye.placed_images + to_chat(current_user, "Transit location designated") + return + +/obj/machinery/computer/camera_advanced/shuttle_docker/proc/canDesignateTarget() + if(!designating_target_loc || !current_user || (eyeobj.loc != designating_target_loc) || (stat & (NOPOWER|BROKEN)) ) + return FALSE + return TRUE + +/obj/machinery/computer/camera_advanced/shuttle_docker/proc/rotateLandingSpot() + var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj + var/list/image_cache = the_eye.placement_images + the_eye.setDir(turn(the_eye.dir, -90)) + for(var/i in 1 to image_cache.len) + var/image/pic = image_cache[i] + var/list/coords = image_cache[pic] + var/Tmp = coords[1] + coords[1] = coords[2] + coords[2] = -Tmp + pic.loc = locate(the_eye.x + coords[1], the_eye.y + coords[2], the_eye.z) + var/Tmp = x_offset + x_offset = y_offset + y_offset = -Tmp + checkLandingSpot() + +/obj/machinery/computer/camera_advanced/shuttle_docker/proc/checkLandingSpot() + var/mob/camera/aiEye/remote/shuttle_docker/the_eye = eyeobj + var/turf/eyeturf = get_turf(the_eye) + if(!eyeturf) + return SHUTTLE_DOCKER_BLOCKED + + . = SHUTTLE_DOCKER_LANDING_CLEAR + var/list/bounds = shuttle_port.return_coords(the_eye.x - x_offset, the_eye.y - y_offset, the_eye.dir) + var/list/overlappers = SSshuttle.get_dock_overlap(bounds[1], bounds[2], bounds[3], bounds[4], the_eye.z) + var/list/image_cache = the_eye.placement_images + for(var/i in 1 to image_cache.len) + var/image/I = image_cache[i] + var/list/coords = image_cache[I] + var/turf/T = locate(eyeturf.x + coords[1], eyeturf.y + coords[2], eyeturf.z) + I.loc = T + switch(checkLandingTurf(T, overlappers)) + if(SHUTTLE_DOCKER_LANDING_CLEAR) + I.icon_state = "green" + if(SHUTTLE_DOCKER_BLOCKED_BY_HIDDEN_PORT) + I.icon_state = "green" + if(. == SHUTTLE_DOCKER_LANDING_CLEAR) + . = SHUTTLE_DOCKER_BLOCKED_BY_HIDDEN_PORT + else + I.icon_state = "red" + . = SHUTTLE_DOCKER_BLOCKED + +/obj/machinery/computer/camera_advanced/shuttle_docker/proc/checkLandingTurf(turf/T, list/overlappers) + // Too close to the map edge is never allowed + if(!T || T.x <= 10 || T.y <= 10 || T.x >= world.maxx - 10 || T.y >= world.maxy - 10) + return SHUTTLE_DOCKER_BLOCKED + // If it's one of our shuttle areas assume it's ok to be there + if(shuttle_port.shuttle_areas[T.loc]) + return SHUTTLE_DOCKER_LANDING_CLEAR + . = SHUTTLE_DOCKER_LANDING_CLEAR + // See if the turf is hidden from us + var/list/hidden_turf_info + if(!see_hidden) + hidden_turf_info = SSshuttle.hidden_shuttle_turfs[T] + if(hidden_turf_info) + . = SHUTTLE_DOCKER_BLOCKED_BY_HIDDEN_PORT + + if(space_turfs_only) + var/turf_type = hidden_turf_info ? hidden_turf_info[2] : T.type + if(!ispath(turf_type, /turf/space)) + return SHUTTLE_DOCKER_BLOCKED + + if(istype(T.loc.type, /area/syndicate_depot)) + return SHUTTLE_DOCKER_BLOCKED + + // Checking for overlapping dock boundaries + for(var/i in 1 to overlappers.len) + var/obj/docking_port/port = overlappers[i] + if(port == my_port || locate(port) in jumpto_ports) + continue + var/port_hidden = !see_hidden && port.hidden + var/list/overlap = overlappers[port] + var/list/xs = overlap[1] + var/list/ys = overlap[2] + if(xs["[T.x]"] && ys["[T.y]"]) + if(port_hidden) + . = SHUTTLE_DOCKER_BLOCKED_BY_HIDDEN_PORT + else + return SHUTTLE_DOCKER_BLOCKED + +/obj/machinery/computer/camera_advanced/shuttle_docker/proc/update_hidden_docking_ports(list/remove_images, list/add_images) + if(!see_hidden && current_user && current_user.client) + current_user.client.images -= remove_images + current_user.client.images += add_images + +/obj/machinery/computer/camera_advanced/shuttle_docker/proc/connect_to_shuttle(obj/docking_port/mobile/port, obj/docking_port/stationary/dock, idnum, override=FALSE) + if(port && (shuttleId == initial(shuttleId) || override)) + shuttleId = port.id + shuttlePortId = "[port.id]_custom" + if(dock) + jumpto_ports[dock.id] = TRUE + +/mob/camera/aiEye/remote/shuttle_docker + visible_icon = FALSE + use_static = FALSE + simulated = FALSE + var/list/placement_images = list() + var/list/placed_images = list() + +/mob/camera/aiEye/remote/shuttle_docker/Initialize(mapload, obj/machinery/computer/camera_advanced/origin) + src.origin = origin + return ..() + +/mob/camera/aiEye/remote/shuttle_docker/setLoc(T) + if(istype(get_turf(T), /turf/space) || istype(get_area(T), /area/space) || istype(get_area(T), /area/shuttle)) + ..() + var/obj/machinery/computer/camera_advanced/shuttle_docker/console = origin + console.checkLandingSpot() + return + else + return + +/mob/camera/aiEye/remote/shuttle_docker/update_remote_sight(mob/living/user) + user.sight = SEE_TURFS + return TRUE + +/datum/action/innate/shuttledocker_rotate + name = "Rotate" + icon_icon = 'icons/mob/actions/actions_mecha.dmi' + button_icon_state = "mech_cycle_equip_off" + +/datum/action/innate/shuttledocker_rotate/Activate() + if(QDELETED(target) || !isliving(target)) + return + var/mob/living/C = target + var/mob/camera/aiEye/remote/remote_eye = C.remote_control + var/obj/machinery/computer/camera_advanced/shuttle_docker/origin = remote_eye.origin + origin.rotateLandingSpot() + +/datum/action/innate/shuttledocker_place + name = "Place" + icon_icon = 'icons/mob/actions/actions_mecha.dmi' + button_icon_state = "mech_zoom_off" + +/datum/action/innate/shuttledocker_place/Activate() + if(QDELETED(target) || !isliving(target)) + return + var/mob/living/C = target + var/mob/camera/aiEye/remote/remote_eye = C.remote_control + var/obj/machinery/computer/camera_advanced/shuttle_docker/origin = remote_eye.origin + origin.placeLandingSpot(target) + +/datum/action/innate/camera_jump/shuttle_docker + name = "Jump to Location" + button_icon_state = "camera_jump" + +/datum/action/innate/camera_jump/shuttle_docker/Activate() + if(QDELETED(target) || !isliving(target)) + return + var/mob/living/C = target + var/mob/camera/aiEye/remote/remote_eye = C.remote_control + var/obj/machinery/computer/camera_advanced/shuttle_docker/console = remote_eye.origin + + playsound(console, 'sound/machines/terminal_prompt_deny.ogg', 25, 0) + + var/list/L = list() + for(var/V in SSshuttle.stationary) + if(!V) + continue + var/obj/docking_port/stationary/S = V + if(console.jumpto_ports[S.id]) + L[S.name] = S + + playsound(console, 'sound/machines/terminal_prompt.ogg', 25, 0) + var/selected = input("Choose location to jump to", "Locations", null) as null|anything in L + if(QDELETED(src) || QDELETED(target) || !isliving(target)) + return + playsound(src, "terminal_type", 25, 0) + if(selected) + var/turf/T = get_turf(L[selected]) + if(T) + playsound(console, 'sound/machines/terminal_prompt_confirm.ogg', 25, 0) + remote_eye.setLoc(T) + to_chat(target, "Jumped to [selected]") + else + playsound(console, 'sound/machines/terminal_prompt_deny.ogg', 25, 0) \ No newline at end of file diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index 4a587ac1253..44edebdca50 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -57,19 +57,4 @@ /obj/machinery/door/airlock/postDock(obj/docking_port/stationary/S1) . = ..() if(!S1.lock_shuttle_doors && id_tag == "s_docking_airlock") - INVOKE_ASYNC(src, .proc/unlock) - -// Shuttle Rotation // -/atom/proc/shuttleRotate(rotation) - //rotate our direction - dir = angle2dir(rotation+dir2angle(dir)) - - //rotate the pixel offsets too. - if(pixel_x || pixel_y) - if(rotation < 0) - rotation += 360 - for(var/turntimes=rotation/90;turntimes>0;turntimes--) - var/oldPX = pixel_x - var/oldPY = pixel_y - pixel_x = oldPY - pixel_y = (oldPX*(-1)) + INVOKE_ASYNC(src, .proc/unlock) \ No newline at end of file diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index b764bf45b02..dfa54f086d1 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -24,6 +24,7 @@ var/timid = FALSE var/list/ripples = list() + var/hidden = FALSE //are we invisible to shuttle navigation computers? //these objects are indestructable /obj/docking_port/Destroy(force) @@ -76,6 +77,12 @@ _y + (-dwidth+width-1)*sin + (-dheight+height-1)*cos ) +//returns turfs within our projected rectangle in no particular order +/obj/docking_port/proc/return_turfs() + var/list/L = return_coords() + var/turf/T0 = locate(L[1], L[2], z) + var/turf/T1 = locate(L[3], L[4], z) + return block(T0, T1) //returns turfs within our projected rectangle in a specific order. //this ensures that turfs are copied over in the same order, regardless of any rotation @@ -200,6 +207,7 @@ icon_state = "pinonclose" var/area/shuttle/areaInstance + var/list/shuttle_areas var/timer //used as a timer (if you want time left to complete move, use timeLeft proc) var/mode = SHUTTLE_IDLE //current shuttle mode (see global defines) @@ -227,12 +235,16 @@ highlight("#0f0") #endif - - - /obj/docking_port/mobile/Initialize() if(!timid) register() + shuttle_areas = list() + var/list/all_turfs = return_ordered_turfs(x, y, z, dir) + for(var/i in 1 to all_turfs.len) + var/turf/curT = all_turfs[i] + var/area/cur_area = curT.loc + if(istype(cur_area, areaInstance)) + shuttle_areas[cur_area] = TRUE ..() /obj/docking_port/mobile/register() @@ -255,6 +267,7 @@ areaInstance = null destination = null previous = null + shuttle_areas = null return ..() //this is a hook for custom behaviour. Maybe at some point we could add checks to see if engines are intact @@ -819,13 +832,6 @@ spawn(600) //One minute cooldown cooldown = 0 -/obj/machinery/computer/shuttle/ert - name = "specops shuttle console" - //circuit = /obj/item/circuitboard/ert - req_access = list(access_cent_general) - shuttleId = "specops" - possible_destinations = "specops_home;specops_away" - /obj/machinery/computer/shuttle/white_ship name = "White Ship Console" desc = "Used to control the White Ship." @@ -839,6 +845,7 @@ circuit = /obj/item/circuitboard/golem_ship shuttleId = "freegolem" possible_destinations = "freegolem_z3;freegolem_z5;freegolem_z1;freegolem_z6" + resistance_flags = INDESTRUCTIBLE /obj/machinery/computer/shuttle/golem_ship/attack_hand(mob/user) if(!isgolem(user)) @@ -846,12 +853,6 @@ return ..() -/obj/machinery/computer/shuttle/vox - name = "skipjack control console" - req_access = list(access_vox) - shuttleId = "skipjack" - possible_destinations = "skipjack_away;skipjack_ne;skipjack_nw;skipjack_se;skipjack_sw;skipjack_z5" - /obj/machinery/computer/shuttle/engineering name = "Engineering Shuttle Console" desc = "Used to call and send the engineering shuttle." @@ -869,28 +870,11 @@ desc = "Used to call and send the administration shuttle." shuttleId = "admin" possible_destinations = "admin_home;admin_away" - -/obj/machinery/computer/shuttle/sst - name = "Syndicate Strike Time Shuttle Console" - desc = "Used to call and send the SST shuttle." - icon_keyboard = "syndie_key" - icon_screen = "syndishuttle" - req_access = list(access_syndicate) - shuttleId = "sst" - possible_destinations = "sst_home;sst_away" - -/obj/machinery/computer/shuttle/sit - name = "Syndicate Infiltration Team Shuttle Console" - desc = "Used to call and send the SIT shuttle." - icon_keyboard = "syndie_key" - icon_screen = "syndishuttle" - req_access = list(access_syndicate) - shuttleId = "sit" - possible_destinations = "sit_arrivals;sit_engshuttle;sit_away" - + resistance_flags = INDESTRUCTIBLE /obj/machinery/computer/shuttle/trade name = "Freighter Console" + resistance_flags = INDESTRUCTIBLE /obj/machinery/computer/shuttle/trade/sol req_access = list(access_trade_sol) diff --git a/code/modules/shuttle/shuttle_rotate.dm b/code/modules/shuttle/shuttle_rotate.dm new file mode 100644 index 00000000000..bea581d4174 --- /dev/null +++ b/code/modules/shuttle/shuttle_rotate.dm @@ -0,0 +1,91 @@ +/* +All shuttleRotate procs go here +If ever any of these procs are useful for non-shuttles, rename it to proc/rotate and move it to be a generic atom proc +*/ + +/************************************Base proc************************************/ + +/atom/proc/shuttleRotate(rotation, params=ROTATE_DIR|ROTATE_SMOOTH|ROTATE_OFFSET) + if(params & ROTATE_DIR) + //rotate our direction + setDir(angle2dir(rotation+dir2angle(dir))) + + //resmooth if need be. + if(smooth && (params & ROTATE_SMOOTH)) + queue_smooth(src) + + //rotate the pixel offsets too. + if((pixel_x || pixel_y) && (params & ROTATE_OFFSET)) + if(rotation < 0) + rotation += 360 + for(var/turntimes=rotation/90;turntimes>0;turntimes--) + var/oldPX = pixel_x + var/oldPY = pixel_y + pixel_x = oldPY + pixel_y = (oldPX*(-1)) + +/************************************Turf rotate procs************************************/ + +/************************************Mob rotate procs************************************/ + +//override to avoid rotating pixel_xy on mobs +/mob/shuttleRotate(rotation, params) + params = NONE + . = ..() + if(!buckled) + setDir(angle2dir(rotation+dir2angle(dir))) + +/mob/dead/observer/shuttleRotate(rotation, params) + . = ..() + update_icons() + +/************************************Structure rotate procs************************************/ + +/obj/structure/cable/shuttleRotate(rotation, params) + params &= ~ROTATE_DIR + . = ..() + if(d1) + d1 = angle2dir(rotation+dir2angle(d1)) + if(d2) + d2 = angle2dir(rotation+dir2angle(d2)) + + //d1 should be less than d2 for cable icons to work + if(d1 > d2) + var/temp = d1 + d1 = d2 + d2 = temp + update_icon() + +//Fixes dpdir on shuttle rotation +/obj/structure/disposalpipe/shuttleRotate(rotation, params) + . = ..() + var/new_dpdir = 0 + for(var/D in list(NORTH, SOUTH, EAST, WEST)) + if(dpdir & D) + new_dpdir = new_dpdir | angle2dir(rotation+dir2angle(D)) + dpdir = new_dpdir + +/obj/structure/alien/weeds/shuttleRotate(rotation, params) + params &= ~ROTATE_OFFSET + return ..() + +//prevents shuttles attempting to rotate this since it messes up sprites +/obj/structure/table/shuttleRotate(rotation, params) + params = NONE + return ..() + +/obj/structure/table_frame/shuttleRotate(rotation, params) + params = NONE + return ..() + +/************************************Machine rotate procs************************************/ + +//prevents shuttles attempting to rotate this since it messes up sprites +/obj/machinery/gateway/shuttleRotate(rotation, params) + params = NONE + return ..() + +//prevents shuttles attempting to rotate this since it messes up sprites +/obj/machinery/gravity_generator/shuttleRotate(rotation, params) + params = NONE + return ..() \ No newline at end of file diff --git a/code/modules/shuttle/syndicate.dm b/code/modules/shuttle/syndicate.dm index 14fde8c1be0..0a40901059f 100644 --- a/code/modules/shuttle/syndicate.dm +++ b/code/modules/shuttle/syndicate.dm @@ -7,7 +7,8 @@ req_access = list(access_syndicate) circuit = /obj/item/circuitboard/shuttle/syndicate shuttleId = "syndicate" - possible_destinations = "syndicate_away;syndicate_z5;syndicate_z3;syndicate_ne;syndicate_nw;syndicate_n;syndicate_se;syndicate_sw;syndicate_s" + possible_destinations = "syndicate_away;syndicate_z5;syndicate_z3;syndicate_ne;syndicate_nw;syndicate_n;syndicate_se;syndicate_sw;syndicate_s;syndicate_custom" + resistance_flags = INDESTRUCTIBLE var/challenge = FALSE var/moved = FALSE @@ -40,4 +41,55 @@ return 0 ..() -#undef SYNDICATE_CHALLENGE_TIMER +/obj/machinery/computer/shuttle/sst + name = "Syndicate Strike Time Shuttle Console" + desc = "Used to call and send the SST shuttle." + icon_keyboard = "syndie_key" + icon_screen = "syndishuttle" + req_access = list(access_syndicate) + shuttleId = "sst" + possible_destinations = "sst_home;sst_away;sst_custom" + resistance_flags = INDESTRUCTIBLE + +/obj/machinery/computer/shuttle/sit + name = "Syndicate Infiltration Team Shuttle Console" + desc = "Used to call and send the SIT shuttle." + icon_keyboard = "syndie_key" + icon_screen = "syndishuttle" + req_access = list(access_syndicate) + shuttleId = "sit" + possible_destinations = "sit_arrivals;sit_engshuttle;sit_away;sit_custom" + resistance_flags = INDESTRUCTIBLE + +/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate + name = "syndicate shuttle navigation computer" + desc = "Used to designate a precise transit location for the syndicate shuttle." + icon_screen = "syndinavigation" + icon_keyboard = "syndie_key" + shuttleId = "syndicate" + shuttlePortId = "syndicate_custom" + view_range = 13 + x_offset = -5 + y_offset = -1 + see_hidden = TRUE + resistance_flags = INDESTRUCTIBLE + +/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/sst + name = "SST shuttle navigation computer" + desc = "Used to designate a precise transit location for the SST shuttle." + shuttleId = "sst" + shuttlePortId = "sst_custom" + view_range = 13 + x_offset = 0 + y_offset = 0 + +/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/sit + name = "SIT shuttle navigation computer" + desc = "Used to designate a precise transit location for the SIT shuttle." + shuttleId = "sit" + shuttlePortId = "sit_custom" + view_range = 13 + x_offset = 0 + y_offset = 0 + +#undef SYNDICATE_CHALLENGE_TIMER \ No newline at end of file diff --git a/code/modules/shuttle/vox.dm b/code/modules/shuttle/vox.dm new file mode 100644 index 00000000000..3899a23dee1 --- /dev/null +++ b/code/modules/shuttle/vox.dm @@ -0,0 +1,19 @@ +/obj/machinery/computer/shuttle/vox + name = "skipjack control console" + req_access = list(access_vox) + shuttleId = "skipjack" + possible_destinations = "skipjack_away;skipjack_ne;skipjack_nw;skipjack_se;skipjack_sw;skipjack_z5;skipjack_custom" + resistance_flags = INDESTRUCTIBLE + +/obj/machinery/computer/camera_advanced/shuttle_docker/vox + name = "skipjack navigation computer" + desc = "Used to designate a precise transit location for the skipjack." + icon_screen = "navigation" + icon_keyboard = "med_key" + shuttleId = "skipjack" + shuttlePortId = "skipjack_custom" + view_range = 13 + x_offset = -10 + y_offset = -10 + resistance_flags = INDESTRUCTIBLE + access_derelict = TRUE diff --git a/code/modules/space_management/space_level.dm b/code/modules/space_management/space_level.dm index e53264e5d57..8443951d1d3 100644 --- a/code/modules/space_management/space_level.dm +++ b/code/modules/space_management/space_level.dm @@ -27,6 +27,7 @@ flags = traits build_space_destination_arrays() set_linkage(transition_type) + set_navbeacon() /datum/space_level/Destroy() if(linkage == CROSSLINKED) @@ -134,6 +135,14 @@ if(SELFLOOPING) link_to_self() // `link_to_self` is defined in space_transitions.dm +//create docking ports for navigation consoles to jump to +/datum/space_level/proc/set_navbeacon() + var/obj/docking_port/stationary/D = new /obj/docking_port/stationary(src) + D.name = name + D.id = "nav_z[zpos]" + D.register() + D.forceMove(locate(200, 200, zpos)) + var/list/atmos_machine_typecache = typecacheof(/obj/machinery/atmospherics) var/list/cable_typecache = typecacheof(/obj/structure/cable) var/list/maploader_typecache = typecacheof(/obj/effect/landmark/map_loader) diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index a536e4397a1..9342b3afd29 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -33,9 +33,8 @@ ..() to_chat(user, "[src] is assembled in the [parent_organ == "r_arm" ? "right" : "left"] arm configuration. You can use a screwdriver to reassemble it.") -/obj/item/organ/internal/cyberimp/arm/attackby(obj/item/W, mob/user, params) - ..() - if(isscrewdriver(W)) +/obj/item/organ/internal/cyberimp/arm/attackby(obj/item/I, mob/user, params) + if(isscrewdriver(I)) if(parent_organ == "r_arm") parent_organ = "l_arm" else @@ -43,8 +42,8 @@ slot = parent_organ + "_device" to_chat(user, "You modify [src] to be installed on the [parent_organ == "r_arm" ? "right" : "left"] arm.") update_icon() - else if(istype(W, /obj/item/card/emag)) - emag_act() + else + return ..() /obj/item/organ/internal/cyberimp/arm/remove(mob/living/carbon/M, special = 0) Retract() @@ -126,7 +125,7 @@ // You can emag the arm-mounted implant by activating it while holding emag in it's hand. var/arm_slot = (parent_organ == "r_arm" ? slot_r_hand : slot_l_hand) - if(istype(owner.get_item_by_slot(arm_slot), /obj/item/card/emag) && emag_act()) + if(istype(owner.get_item_by_slot(arm_slot), /obj/item/card/emag) && emag_act(owner)) return if(!holder || (holder in src)) @@ -205,12 +204,12 @@ /obj/item/organ/internal/cyberimp/arm/toolset/l parent_organ = "l_arm" -/obj/item/organ/internal/cyberimp/arm/toolset/emag_act() +/obj/item/organ/internal/cyberimp/arm/toolset/emag_act(mob/user) if(!(locate(/obj/item/kitchen/knife/combat/cyborg) in items_list)) - to_chat(usr, "You unlock [src]'s integrated knife!") + to_chat(user, "You unlock [src]'s integrated knife!") items_list += new /obj/item/kitchen/knife/combat/cyborg(src) - return 1 - return 0 + return TRUE + return FALSE /obj/item/organ/internal/cyberimp/arm/esword name = "arm-mounted energy blade" diff --git a/code/modules/surgery/organs/blood.dm b/code/modules/surgery/organs/blood.dm index 2464c0d795f..0ff4273daa1 100644 --- a/code/modules/surgery/organs/blood.dm +++ b/code/modules/surgery/organs/blood.dm @@ -210,6 +210,7 @@ blood_data["real_name"] = real_name blood_data["blood_color"] = dna.species.blood_color blood_data["factions"] = faction + blood_data["dna"] = dna.Clone() return blood_data //get the id of the substance this mob use as blood. diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index bd7cca63779..04626864b94 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -146,5 +146,104 @@ icon_state = "heart-c-on" icon_base = "heart-c" dead_icon = "heart-c-off" - origin_tech = "biotech=5" - status = ORGAN_ROBOT \ No newline at end of file + status = ORGAN_ROBOT + +/obj/item/organ/internal/heart/cybernetic/upgraded + name = "upgraded cybernetic heart" + desc = "A more advanced version of a cybernetic heart. Grants the user additional stamina and heart stability, but the electronics are vulnerable to shock." + icon_state = "heart-c-u-on" + icon_base = "heart-c-u" + dead_icon = "heart-c-u-off" + var/emagged = FALSE + var/attempted_restart = FALSE + +/obj/item/organ/internal/heart/cybernetic/upgraded/on_life() + if(!ishuman(owner)) + return + if(!(status & ORGAN_DEAD) && !attempted_restart && !beating) + to_chat(owner, "Your [name] detects a cardiac event and attempts to return to its normal rhythm!") + if(prob(20) && emagged) + attempted_restart = TRUE + Restart() + addtimer(CALLBACK(src, .proc/message_to_owner, owner, "Your [name] returns to its normal rhythm!"), 30) + addtimer(CALLBACK(src, .proc/recharge), 200) + else if(prob(10)) + attempted_restart = TRUE + Restart() + addtimer(CALLBACK(src, .proc/message_to_owner, owner, "Your [name] returns to its normal rhythm!"), 30) + addtimer(CALLBACK(src, .proc/recharge), 300) + else + attempted_restart = TRUE + if(emagged) + addtimer(CALLBACK(src, .proc/recharge), 200) + else + addtimer(CALLBACK(src, .proc/recharge), 300) + addtimer(CALLBACK(src, .proc/message_to_owner, owner, "Your [name] fails to return to its normal rhythm!"), 30) + + if(!(status & ORGAN_DEAD)) + var/boost = emagged ? 2 : 1 + owner.AdjustDrowsy(-4 * boost) + owner.AdjustParalysis(-1 * boost) + owner.AdjustStunned(-1 * boost) + owner.AdjustWeakened(-1 * boost) + owner.SetSleeping(0) + owner.adjustStaminaLoss(-1 * boost) + + +/obj/item/organ/internal/heart/cybernetic/upgraded/proc/message_to_owner(mob/M, message) + to_chat(M, message) + + +/obj/item/organ/internal/heart/cybernetic/upgraded/proc/recharge() + attempted_restart = FALSE + + +/obj/item/organ/internal/heart/cybernetic/upgraded/emag_act(mob/user) + if(!emagged) + to_chat(user, "You disable the safeties on [src]") + emagged = TRUE + else + to_chat(user, "You re-enable the safeties on [src]") + emagged = FALSE + + +/obj/item/organ/internal/heart/cybernetic/upgraded/emp_act(severity) + ..() + if(emp_proof) + return + necrotize() + + +/obj/item/organ/internal/heart/cybernetic/upgraded/shock_organ(intensity) + if(!ishuman(owner)) + return + intensity = min(intensity, 100) + var/numHigh = round(intensity / 5) + var/numMid = round(intensity / 10) + var/numLow = round(intensity / 20) + if(emagged && !(status & ORGAN_DEAD)) + if(prob(numHigh)) + to_chat(owner, "Your [name] spasms violently!") + owner.adjustBruteLoss(numHigh) + if(prob(numHigh)) + to_chat(owner, "Your [name] shocks you painfully!") + owner.adjustFireLoss(numHigh) + if(prob(numMid)) + to_chat(owner, "Your [name] lurches awkwardly!") + Stop() + if(prob(numMid)) + to_chat(owner, "Your [name] stops beating!") + Stop() + if(prob(numLow)) + to_chat(owner, "Your [name] shuts down!") + necrotize() + else if(!emagged && !(status & ORGAN_DEAD)) + if(prob(numMid)) + to_chat(owner, "Your [name] spasms violently!") + owner.adjustBruteLoss(numMid) + if(prob(numMid)) + to_chat(owner, "Your [name] shocks you painfully!") + owner.adjustFireLoss(numMid) + if(prob(numLow)) + to_chat(owner, "Your [name] lurches awkwardly!") + Stop() \ No newline at end of file diff --git a/code/modules/surgery/organs/organ.dm b/code/modules/surgery/organs/organ.dm index a6165c77f41..a5e85bf572c 100644 --- a/code/modules/surgery/organs/organ.dm +++ b/code/modules/surgery/organs/organ.dm @@ -63,6 +63,15 @@ if(species_override) dna.species = new species_override +/obj/item/organ/attackby(obj/item/I, mob/user, params) + if(is_robotic() && istype(I, /obj/item/stack/nanopaste)) + var/obj/item/stack/nanopaste/nano = I + nano.use(1) + rejuvenate() + to_chat(user, "You repair the damage on [src].") + return + return ..() + /obj/item/organ/proc/set_dna(var/datum/dna/new_dna) if(new_dna) dna = new_dna.Clone() @@ -138,7 +147,10 @@ /obj/item/organ/examine(mob/user) ..(user) if(status & ORGAN_DEAD) - to_chat(user, "The decay has set in.") + if(!is_robotic()) + to_chat(user, "The decay has set in.") + else + to_chat(user, "It looks in need of repairs.") /obj/item/organ/proc/handle_germ_effects() //** Handle the effects of infections @@ -171,6 +183,7 @@ /obj/item/organ/proc/rejuvenate() damage = 0 germ_level = 0 + surgeryize() if(is_robotic()) //Robotic organs stay robotic. status = ORGAN_ROBOT else @@ -269,6 +282,9 @@ if(2) receive_damage(7, 1) +/obj/item/organ/proc/shock_organ(intensity) + return + /obj/item/organ/proc/remove(var/mob/living/user,special = 0) if(!istype(owner)) return diff --git a/code/modules/surgery/organs/organ_external.dm b/code/modules/surgery/organs/organ_external.dm index f39967cc3a2..f8534ffe078 100644 --- a/code/modules/surgery/organs/organ_external.dm +++ b/code/modules/surgery/organs/organ_external.dm @@ -262,6 +262,7 @@ This function completely restores a damaged organ to perfect condition. */ /obj/item/organ/external/rejuvenate() damage_state = "00" + surgeryize() if(is_robotic()) //Robotic organs stay robotic. status = ORGAN_ROBOT else diff --git a/code/modules/surgery/organs/parasites.dm b/code/modules/surgery/organs/parasites.dm index 253eb5e50d1..536ca7a4f37 100644 --- a/code/modules/surgery/organs/parasites.dm +++ b/code/modules/surgery/organs/parasites.dm @@ -47,65 +47,75 @@ name = "terror eggs" icon = 'icons/effects/effects.dmi' icon_state = "eggs" - var/current_cycle = 0 - var/awaymission_infection = 0 - var/alternate_ending = 0 + + var/cycle_num = 0 // # of on_life() cycles completed, never reset + var/egg_progress = 0 // # of on_life() cycles completed, unlike cycle_num this is reset on each hatch event + var/egg_progress_per_hatch = 90 // if egg_progress > this, chance to hatch and reset egg_progress + var/eggs_hatched = 0 // num of hatch events completed + var/eggs_max = 3 // max possible spiderlings you can get from a single infection if its left to run for a very long time + var/awaymission_checked = FALSE + var/awaymission_infection = FALSE // TRUE if infection occurred inside gateway + var/list/types_basic = list(/mob/living/simple_animal/hostile/poison/terror_spider/red, /mob/living/simple_animal/hostile/poison/terror_spider/gray, /mob/living/simple_animal/hostile/poison/terror_spider/green) /obj/item/organ/internal/body_egg/terror_eggs/on_life() - current_cycle += 1 + // Safety first. + if(!owner) + return + + // Parasite growth + cycle_num += 1 + egg_progress += pick(0, 1, 2) + egg_progress += calc_variable_progress() + + // Detect & stop people attempting to bring a gateway white spider infection back to the main station. + if(!awaymission_checked) + awaymission_checked = TRUE + if(is_away_level(owner.z)) + awaymission_infection = TRUE + if(awaymission_infection) + if(!is_away_level(owner.z)) + owner.gib() + qdel(src) + return + + // Detect dying hosts, and try to keep them alive (so spiderlings can hatch) at the cost of some growth progress. if(owner.health < -25) to_chat(owner,"You feel a strange, blissful senstation.") owner.adjustBruteLoss(-5) owner.adjustFireLoss(-5) owner.adjustToxLoss(-5) - // the spider eggs secrete stimulants to keep their host alive until they hatch - switch(current_cycle) - if(1) // immediately - to_chat(owner,"Your wound hurts horribly! ") - if(is_away_level(owner.z)) - awaymission_infection = 1 - if(15) // 30s... enough time for the nerve agent to kick in, the pain to be blocked, and healing to begin - to_chat(owner,"The pain has faded, and stopped bleeding, though the skin around it has turned black.") - owner.adjustBruteLoss(-10) - if(30) // 1m... the point where the venom uses and accellerates the healing process, to feed the eggs - to_chat(owner,"Your wound has completely sealed up, though the skin is still black. You feel significantly better.") - owner.adjustBruteLoss(-20) - if(90) // 3m... where the eggs are developing, and the wound is turning into a hatching site, but invisibly - to_chat(owner,"The black flesh around your old spider bite wound has started to peel off.") - if(100) // 3m20s... where the victim realizes something is wrong - this is not a normal wound - to_chat(owner,"The black flesh around your spider bite wound has cracked, and started to split open!") - if(110) // 3m40s... - to_chat(owner,"The black flesh splits open completely, revealing a cluster of small black oval shapes inside you, shapes that seem to be moving!") - if(120) // 4m... - if(awaymission_infection && !is_away_level(owner.z)) - // we started in the awaymission, we ended on the station. - // To prevent someone bringing an infection back, we're going to trigger an alternate, equally-bad result here. - // Actually, let's make it slightly worse... just to discourage people from bringing back infections. - alternate_ending = 1 - to_chat(owner,"The shapes extend tendrils out of your wound... no... those are legs! SPIDER LEGS! You have spiderlings growing inside you! You scratch at the wound, but it just aggrivates them - they swarm out of the wound, biting you all over!") - owner.visible_message("[owner] flails around on the floor as spiderlings erupt from [owner.p_their()] skin and swarm all over them! ") - owner.Stun(20) - owner.Weaken(20) - // yes, this is a long stun - that's intentional. Gotta give the spiderlings time to escape. - if(alternate_ending) - owner.gib() - else - owner.adjustToxLoss(rand(100,180)) // normal case, range: 100-180, average 140, almost crit (150). - if(prob(50)) - var/obj/structure/spider/spiderling/terror_spiderling/S1 = new(get_turf(owner)) - S1.grow_as = /mob/living/simple_animal/hostile/poison/terror_spider/red - S1.name = "red spiderling" - if(prob(50)) - var/obj/structure/spider/spiderling/terror_spiderling/S2 = new(get_turf(owner)) - S2.grow_as = /mob/living/simple_animal/hostile/poison/terror_spider/gray - S2.name = "gray spiderling" - if(prob(50)) - var/obj/structure/spider/spiderling/terror_spiderling/S3 = new(get_turf(owner)) - S3.grow_as = /mob/living/simple_animal/hostile/poison/terror_spider/green - S3.name = "green spiderling" - if(130) // 4m 20s - to_chat(owner,"The spiderlings are gone. Your wound, though, looks worse than ever. Remnants of tiny spider eggs, and dead spiders, inside your flesh. Disgusting.") - qdel(src) + egg_progress += 10 + + // Once at least one egg has hatched from you, you'll need help to reach medbay. + if(eggs_hatched >= 1) + owner.Confused(2) + + if(egg_progress > egg_progress_per_hatch && eggs_hatched < eggs_max) + egg_progress -= egg_progress_per_hatch + hatch_egg() + +/obj/item/organ/internal/body_egg/terror_eggs/proc/calc_variable_progress() + var/extra_progress = 0 + if(owner.nutrition > NUTRITION_LEVEL_FULL) + extra_progress += 1 + var/antibiotics = owner.reagents.get_reagent_amount("spaceacillin") + if(antibiotics > 50) + extra_progress -= 0.5 + var/boosters = owner.reagents.get_reagent_amount("salglu_solution") + if(boosters > 1) + extra_progress += 1 + return extra_progress + +/obj/item/organ/internal/body_egg/terror_eggs/proc/hatch_egg() + var/obj/structure/spider/spiderling/terror_spiderling/S = new(get_turf(owner)) + if(eggs_hatched >= 2) // on the third egg... + S.grow_as = /mob/living/simple_animal/hostile/poison/terror_spider/princess + else + S.grow_as = pick(types_basic) + S.immediate_ventcrawl = TRUE + eggs_hatched++ + to_chat(owner, "A strange prickling sensation moves across your skin... then suddenly the whole world seems to spin around you!") + owner.Paralyse(10) /obj/item/organ/internal/body_egg/terror_eggs/remove(var/mob/living/carbon/M, var/special = 0) ..() diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm index f458d6e7152..1deedc434a9 100644 --- a/code/modules/telesci/telesci_computer.dm +++ b/code/modules/telesci/telesci_computer.dm @@ -86,6 +86,9 @@ src.attack_hand(user) /obj/machinery/computer/telescience/attack_hand(mob/user) + if(isgolem(user)) //this is why we can't have nice things free golems + to_chat(user, "You can't make sense of the console or how to use it.") + return if(..()) return interact(user) diff --git a/html/changelog.html b/html/changelog.html index 7dc3d0cfd11..d8c4438b5c4 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,171 @@ -->
+

26 February 2019

+

Fox McCloud updated:

+
    +
  • Adds in stable mutagen; a DNA altering compound
  • +
  • Having the max allowable number of advanced viruses will no longer confer total and complete disease immunity to *all* future viruses infections
  • +
  • Maximum number of advanced viruses you can have in your system at once reduced from 3 to 1
  • +
  • Removed stimulant symptom
  • +
  • Removed weight gain and weight even symptoms
  • +
  • Removed Sensory Destruction symptom
  • +
  • Sensory Restoration renamed to Mind Restoration.
  • +
  • Mind restoration functions largely the same as Sensory restoration, with a few minor number changes that adjust it downward ever so slighty. It no longer heals toxin or eye damage
  • +
  • Vision Restoration renamed to a more appropriate "Sensory Restoration"
  • +
  • Capulettium is no longer a perma-stun as long as it's in your system; keeps your paralyzed for the same time as it did previously.
  • +
  • Fixes edge case mutagen behavior
  • +
  • Adds upgraded cybernetic heart to R&D
  • +
  • can now repair robotic organs, outside of the body, with nanopaste
  • +
+

Kyep updated:

+
    +
  • Pink terror spiders are now called Queens after they evolve.
  • +
  • The terror spider major event now has a princess variant, and no longer has a mother variant.
  • +
  • White terror spider infestations are now less predictable, more spread out over time, and affected by nutrition and some chems, but also have worse consequences if left completely untreated for a long time.
  • +
+

PidgeyThePirate updated:

+
    +
  • changed a whole bunch of strings to add a bit more flavor to most reagents in the game (most of these can be found in the spreadsheet).
  • +
  • resurrected the old "flavor_strength" value which appears fully functional in testing but has been entirely unused.
  • +
+

Ralta updated:

+
    +
  • Ian can now wear a CentComm Officer Beret to become Blueshield Ian
  • +
  • Sprite added for Blueshield armor to corgi_back.dmi
  • +
  • beret_centcom_officer and beret_centcom_officer_navy copied to corgi_head.dmi spritesheet
  • +
+

UmeFuu updated:

+
    +
  • New recipe for cookies and sugar cookies, new ingredients such as pastry dough, flat pastry dough, unbaked cookies and a new tool called circular cutter (Added to the dinnerware vendor). New chem mix to create a specific type of dough for cookies and pastries.
  • +
  • Removed old cookie/sugarcookie recipe
  • +
  • added reagents of the cookies (They now actually taste like sugar and chocolate): - sugar = 3 - hot_coco = 5 +Also adjusted the sugar cookies nutriment from 3 to 1, just like chocolate cookies (They're made of the same dough after all) Chocolate bar can now be cutted into pieces/chocolate pile
  • +
  • added cookie(pastry) dough, flat cookie(pastry) dough, unbaked cookies/choco and circular cutter sprites. (Disclaimer: The cookie dough and flat cookie dough are edits of the normal doughs, pretty obvious but credits to who sprited them. Same with the tray with the unbaked cookies)
  • +
+

datlo updated:

+
    +
  • Added a "voice" option to the magic mirror, letting you toggle comic sans/wingdings/swedish/chav
  • +
  • Free Golem Ship's interior walls and floors are now fully simulated titanium walls/floors, so they can be deconstructed, built upon, etc. balance: Increased the cost of RND boards for free golems to 2000 mining points (from 1500)
  • +
  • Golems can no longer activate robotic brains or have their brain put into an MMI.
  • +
  • Replaced one welding fuel tank in the golem ship by a chem master 3000.
  • +
+

farie82 updated:

+
    +
  • Beepsky now can't insta cuff you when you run away and get back close to him.
  • +
+ +

24 February 2019

+

Fox McCloud updated:

+
    +
  • Adds the compact syndicate sniper rifle to the uplink. A weaker, low capacity variant of the operative syndicate rifle
  • +
  • Fixes blindness mutation not making you blind
  • +
+

datlo updated:

+
    +
  • Golems can no longer use telescience consoles.
  • +
  • Nuclear operatives can now choose to take over a cyborg when spawning one, with a ghost playing the nuclear operative.
  • +
+ +

23 February 2019

+

datlo updated:

+
    +
  • Golems can no longer be objective targets
  • +
  • Offstation antag/special roles such as the ERT, abductors, etc, can no longer be objectives targets
  • +
  • Nukies no longer retain flavor text from saved character
  • +
  • Antag clowns can now toggle their clumsiness off and on.
  • +
+ +

19 February 2019

+

Citinited updated:

+
    +
  • Using a multitool on a conveyor switch now switches between one and two directions without needing you to set it on a menu.
  • +
+ +

17 February 2019

+

Arkatos updated:

+
    +
  • Changed Aurora Caelus event ending title to actually reflect that event is ending
  • +
+

Nicaragua1 updated:

+
    +
  • Name of secbots
  • +
  • Honkbot wasnt dropping oil when exploded
  • +
+ +

16 February 2019

+

Alonefromhell & AffectedArc07 updated:

+
    +
  • Tweaked the discord link alert text slightly.
  • +
+

Mitchs98 updated:

+
    +
  • Bar Starter Kit to Cargo. 20 points for both Beer/Soda Boards and a package of glasses.
  • +
  • Beer and Soda Machines can now be wrenched to move them.
  • +
  • Beer and Soda Machines can now be constructed as well as upgraded to include a slightly wider range of drinks.
  • +
  • Properly named the Banana Honk to Banana Honk from Banana Mama.
  • +
+

Nicaragua1 updated:

+
    +
  • Adds General Griefsky bot and a toy version!
  • +
  • Spin-sabre sound
  • +
  • Adds Griefsky sprites
  • +
+

Terilia updated:

+
    +
  • Added the donksoft sniper rifle
  • +
  • special donksoft sniper foam darts & special foamforce sniper foam darts
  • +
  • Sniper Foam Boxes && Riot Sniper Foam Boxes.
  • +
  • creates an admin log, if a player is being hit by a Foam Dart which has been tinkered with.
  • +
  • fixes a small misalignment in the magazine sprite if a dart is loaded.
  • +
+

aleksix updated:

+
    +
  • AI's "Wipe Core" now properly ghosts the player
  • +
+

farie82 updated:

+
    +
  • Removes some of the chaplain special religion names
  • +
+ +

15 February 2019

+

aleksix updated:

+
    +
  • posibrains and robobrains don't vanish upon the controlling player's suicide
  • +
+ +

14 February 2019

+

AzuleUtama updated:

+
    +
  • Added Super Surplus Crates from TG. They contain 125TC worth of gear, but cost 40TC meaning you'll need to team up if you want one.
  • +
  • The Surplus chance value for various uplink items will now work when ordering a crate.
  • +
+

Citinited updated:

+
    +
  • Adds jestosterone to the list of standard reagents, not sure if this has any in-game effect.
  • +
+

EmanTheAlmighty updated:

+
    +
  • Sentience event now adds some damage to the affected mob.
  • +
  • Sentience event now adds health to the affected mob, rather than replacing the old value with another value.
  • +
+

Mitchs98 updated:

+
    +
  • IV Drip crate can now be opened by general medical personnel, instead of only the CMO.
  • +
+

TDSSS updated:

+
    +
  • NT rep and Magistrate lose access to the HOP office
  • +
+

aleksix updated:

+
    +
  • made the lighter size consistent before and after first lighting.
  • +
+

datlo updated:

+
    +
  • The Nuclear Authentification Disk can no longer be taken from the station by the ERT, Abductors, or Sol Traders.
  • +
+

12 February 2019

Citinited updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 1776bcf8b30..26c742238da 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -9102,3 +9102,145 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. datlo: - rscadd: Added Greey's fluff duffelbag - tweak: Staff and wand of door can now also open lockers. +2019-02-14: + AzuleUtama: + - rscadd: Added Super Surplus Crates from TG. They contain 125TC worth of gear, + but cost 40TC meaning you'll need to team up if you want one. + - bugfix: The Surplus chance value for various uplink items will now work when ordering + a crate. + Citinited: + - tweak: Adds jestosterone to the list of standard reagents, not sure if this has + any in-game effect. + EmanTheAlmighty: + - rscadd: Sentience event now adds some damage to the affected mob. + - tweak: Sentience event now adds health to the affected mob, rather than replacing + the old value with another value. + Mitchs98: + - tweak: IV Drip crate can now be opened by general medical personnel, instead of + only the CMO. + TDSSS: + - tweak: NT rep and Magistrate lose access to the HOP office + aleksix: + - bugfix: made the lighter size consistent before and after first lighting. + datlo: + - tweak: The Nuclear Authentification Disk can no longer be taken from the station + by the ERT, Abductors, or Sol Traders. +2019-02-15: + aleksix: + - bugfix: posibrains and robobrains don't vanish upon the controlling player's suicide +2019-02-16: + Alonefromhell & AffectedArc07: + - tweak: Tweaked the discord link alert text slightly. + Mitchs98: + - rscadd: Bar Starter Kit to Cargo. 20 points for both Beer/Soda Boards and a package + of glasses. + - tweak: Beer and Soda Machines can now be wrenched to move them. + - tweak: Beer and Soda Machines can now be constructed as well as upgraded to include + a slightly wider range of drinks. + - bugfix: Properly named the Banana Honk to Banana Honk from Banana Mama. + Nicaragua1: + - rscadd: Adds General Griefsky bot and a toy version! + - soundadd: Spin-sabre sound + - imageadd: Adds Griefsky sprites + Terilia: + - rscadd: Added the donksoft sniper rifle + - rscadd: special donksoft sniper foam darts & special foamforce sniper foam darts + - rscadd: Sniper Foam Boxes && Riot Sniper Foam Boxes. + - rscadd: creates an admin log, if a player is being hit by a Foam Dart which has + been tinkered with. + - bugfix: fixes a small misalignment in the magazine sprite if a dart is loaded. + aleksix: + - bugfix: AI's "Wipe Core" now properly ghosts the player + farie82: + - rscdel: Removes some of the chaplain special religion names +2019-02-17: + Arkatos: + - spellcheck: Changed Aurora Caelus event ending title to actually reflect that + event is ending + Nicaragua1: + - bugfix: Name of secbots + - bugfix: Honkbot wasnt dropping oil when exploded +2019-02-19: + Citinited: + - tweak: Using a multitool on a conveyor switch now switches between one and two + directions without needing you to set it on a menu. +2019-02-23: + datlo: + - bugfix: Golems can no longer be objective targets + - bugfix: Offstation antag/special roles such as the ERT, abductors, etc, can no + longer be objectives targets + - bugfix: Nukies no longer retain flavor text from saved character + - rscadd: Antag clowns can now toggle their clumsiness off and on. +2019-02-24: + Fox McCloud: + - rscadd: Adds the compact syndicate sniper rifle to the uplink. A weaker, low capacity + variant of the operative syndicate rifle + - bugfix: Fixes blindness mutation not making you blind + datlo: + - rscdel: Golems can no longer use telescience consoles. + - rscadd: Nuclear operatives can now choose to take over a cyborg when spawning + one, with a ghost playing the nuclear operative. +2019-02-26: + Fox McCloud: + - rscadd: Adds in stable mutagen; a DNA altering compound + - bugfix: Having the max allowable number of advanced viruses will no longer confer + total and complete disease immunity to *all* future viruses infections + - tweak: Maximum number of advanced viruses you can have in your system at once + reduced from 3 to 1 + - rscdel: Removed stimulant symptom + - rscdel: Removed weight gain and weight even symptoms + - rscdel: Removed Sensory Destruction symptom + - tweak: Sensory Restoration renamed to Mind Restoration. + - tweak: Mind restoration functions largely the same as Sensory restoration, with + a few minor number changes that adjust it downward ever so slighty. It no longer + heals toxin or eye damage + - tweak: Vision Restoration renamed to a more appropriate "Sensory Restoration" + - tweak: Capulettium is no longer a perma-stun as long as it's in your system; keeps + your paralyzed for the same time as it did previously. + - bugfix: Fixes edge case mutagen behavior + - rscadd: Adds upgraded cybernetic heart to R&D + - rscadd: can now repair robotic organs, outside of the body, with nanopaste + Kyep: + - bugfix: Pink terror spiders are now called Queens after they evolve. + - tweak: The terror spider major event now has a princess variant, and no longer + has a mother variant. + - rscadd: White terror spider infestations are now less predictable, more spread + out over time, and affected by nutrition and some chems, but also have worse + consequences if left completely untreated for a long time. + PidgeyThePirate: + - tweak: changed a whole bunch of strings to add a bit more flavor to most reagents + in the game (most of these can be found in the spreadsheet). + - experiment: resurrected the old "flavor_strength" value which appears fully functional + in testing but has been entirely unused. + Ralta: + - rscadd: Ian can now wear a CentComm Officer Beret to become Blueshield Ian + - rscadd: Sprite added for Blueshield armor to corgi_back.dmi + - tweak: beret_centcom_officer and beret_centcom_officer_navy copied to corgi_head.dmi + spritesheet + UmeFuu: + - rscadd: New recipe for cookies and sugar cookies, new ingredients such as pastry + dough, flat pastry dough, unbaked cookies and a new tool called circular cutter + (Added to the dinnerware vendor). New chem mix to create a specific type of + dough for cookies and pastries. + - rscdel: Removed old cookie/sugarcookie recipe + - tweak: 'added reagents of the cookies (They now actually taste like sugar and + chocolate): - sugar = 3 - hot_coco = 5 + + Also adjusted the sugar cookies nutriment from 3 to 1, just like chocolate cookies + (They''re made of the same dough after all) Chocolate bar can now be cutted + into pieces/chocolate pile' + - imageadd: 'added cookie(pastry) dough, flat cookie(pastry) dough, unbaked cookies/choco + and circular cutter sprites. (Disclaimer: The cookie dough and flat cookie dough + are edits of the normal doughs, pretty obvious but credits to who sprited them. + Same with the tray with the unbaked cookies)' + datlo: + - rscadd: Added a "voice" option to the magic mirror, letting you toggle comic sans/wingdings/swedish/chav + - tweak: 'Free Golem Ship''s interior walls and floors are now fully simulated titanium + walls/floors, so they can be deconstructed, built upon, etc. balance: Increased + the cost of RND boards for free golems to 2000 mining points (from 1500)' + - tweak: Golems can no longer activate robotic brains or have their brain put into + an MMI. + - tweak: Replaced one welding fuel tank in the golem ship by a chem master 3000. + farie82: + - bugfix: Beepsky now can't insta cuff you when you run away and get back close + to him. diff --git a/html/changelogs/AutoChangeLog-pr-10836.yml b/html/changelogs/AutoChangeLog-pr-10836.yml new file mode 100644 index 00000000000..39e9573160d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10836.yml @@ -0,0 +1,6 @@ +author: "datlo" +delete-after: True +changes: + - rscadd: "Added navigation computers to the nuclear, SIT, SST, ERT, and vox shuttles. This computer lets you set a custom destination to jump to." + - tweak: "Most off-station shuttle consoles are now indestructible and impossible to deconstruct." + - rscadd: "Added atmos blocking tiny fans and a security camera console to the ERT shuttle." diff --git a/html/changelogs/AutoChangeLog-pr-10929.yml b/html/changelogs/AutoChangeLog-pr-10929.yml new file mode 100644 index 00000000000..84976ab4f71 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10929.yml @@ -0,0 +1,5 @@ +author: "Nicaragua1" +delete-after: True +changes: + - bugfix: "Bots now drop their proper robotic arm" + - tweak: "Honkbot drop is consistent with other bots" diff --git a/html/changelogs/AutoChangeLog-pr-10957.yml b/html/changelogs/AutoChangeLog-pr-10957.yml new file mode 100644 index 00000000000..b3ade3d0e3f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10957.yml @@ -0,0 +1,5 @@ +author: "Kyep" +delete-after: True +changes: + - bugfix: "Fixed cases of some genetics block SE injectors that are spawned at round start (such as the ones that can appear on the Sol Trade ship) not initializing properly, which would cause them to fail to work, and generate a runtime error. +refactor: Did some minor refactoring to dna_injector.dm, fixing bad spacing." diff --git a/html/changelogs/AutoChangeLog-pr-10962.yml b/html/changelogs/AutoChangeLog-pr-10962.yml new file mode 100644 index 00000000000..0508effb59c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10962.yml @@ -0,0 +1,5 @@ +author: "Fox McCloud" +delete-after: True +changes: + - bugfix: "Fixes invisible stacks in hands" + - bugfix: "Fixes invisible bluespace crystals" diff --git a/html/changelogs/AutoChangeLog-pr-10967.yml b/html/changelogs/AutoChangeLog-pr-10967.yml new file mode 100644 index 00000000000..b99fb7d97df --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10967.yml @@ -0,0 +1,4 @@ +author: "farie82" +delete-after: True +changes: + - bugfix: "Can't use telepathy now when unconcious or dead" diff --git a/icons/mob/corgi_back.dmi b/icons/mob/corgi_back.dmi index e3ed70343a3..4aec9894ec5 100644 Binary files a/icons/mob/corgi_back.dmi and b/icons/mob/corgi_back.dmi differ diff --git a/icons/mob/corgi_head.dmi b/icons/mob/corgi_head.dmi index 8022b8aaf2e..8f33c35934a 100644 Binary files a/icons/mob/corgi_head.dmi and b/icons/mob/corgi_head.dmi differ diff --git a/icons/obj/aibots.dmi b/icons/obj/aibots.dmi index 14ac2d95ac9..273fbf77133 100644 Binary files a/icons/obj/aibots.dmi and b/icons/obj/aibots.dmi differ diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index d1aa0e9805a..4a250a1fffc 100644 Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ diff --git a/icons/obj/computer.dmi b/icons/obj/computer.dmi index 394b4071c1d..c51b8d7050b 100644 Binary files a/icons/obj/computer.dmi and b/icons/obj/computer.dmi differ diff --git a/icons/obj/food/food_ingredients.dmi b/icons/obj/food/food_ingredients.dmi index f6fcf5228ac..e57f4854b1f 100644 Binary files a/icons/obj/food/food_ingredients.dmi and b/icons/obj/food/food_ingredients.dmi differ diff --git a/icons/obj/guns/toy.dmi b/icons/obj/guns/toy.dmi index a0f2a539c54..49444798d61 100644 Binary files a/icons/obj/guns/toy.dmi and b/icons/obj/guns/toy.dmi differ diff --git a/icons/obj/kitchen.dmi b/icons/obj/kitchen.dmi index 16fb7801f0f..2c3b244a41d 100644 Binary files a/icons/obj/kitchen.dmi and b/icons/obj/kitchen.dmi differ diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index 0a0f90c45dd..bc36cdaaa8f 100644 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ diff --git a/paradise.dme b/paradise.dme index ed6d3c56f76..094e49a99f0 100644 --- a/paradise.dme +++ b/paradise.dme @@ -54,6 +54,7 @@ #include "code\__DEFINES\reagents.dm" #include "code\__DEFINES\role_preferences.dm" #include "code\__DEFINES\rolebans.dm" +#include "code\__DEFINES\shuttle.dm" #include "code\__DEFINES\sight.dm" #include "code\__DEFINES\snpc.dm" #include "code\__DEFINES\sound.dm" @@ -315,7 +316,6 @@ #include "code\datums\diseases\advance\symptoms\shivering.dm" #include "code\datums\diseases\advance\symptoms\skin.dm" #include "code\datums\diseases\advance\symptoms\sneeze.dm" -#include "code\datums\diseases\advance\symptoms\stimulant.dm" #include "code\datums\diseases\advance\symptoms\symptoms.dm" #include "code\datums\diseases\advance\symptoms\viral.dm" #include "code\datums\diseases\advance\symptoms\vision.dm" @@ -1849,6 +1849,7 @@ #include "code\modules\mob\living\simple_animal\bot\ed209bot.dm" #include "code\modules\mob\living\simple_animal\bot\emote.dm" #include "code\modules\mob\living\simple_animal\bot\floorbot.dm" +#include "code\modules\mob\living\simple_animal\bot\griefsky.dm" #include "code\modules\mob\living\simple_animal\bot\honkbot.dm" #include "code\modules\mob\living\simple_animal\bot\medbot.dm" #include "code\modules\mob\living\simple_animal\bot\mulebot.dm" @@ -2272,12 +2273,16 @@ #include "code\modules\security_levels\security levels.dm" #include "code\modules\shuttle\assault_pod.dm" #include "code\modules\shuttle\emergency.dm" +#include "code\modules\shuttle\ert.dm" +#include "code\modules\shuttle\navigation_computer.dm" #include "code\modules\shuttle\on_move.dm" #include "code\modules\shuttle\ripple.dm" #include "code\modules\shuttle\shuttle.dm" #include "code\modules\shuttle\shuttle_manipulator.dm" +#include "code\modules\shuttle\shuttle_rotate.dm" #include "code\modules\shuttle\supply.dm" #include "code\modules\shuttle\syndicate.dm" +#include "code\modules\shuttle\vox.dm" #include "code\modules\space_management\heap_space_level.dm" #include "code\modules\space_management\level_check.dm" #include "code\modules\space_management\level_traits.dm" diff --git a/sound/effects/spinsabre.ogg b/sound/effects/spinsabre.ogg new file mode 100644 index 00000000000..ad1f2abd3a6 Binary files /dev/null and b/sound/effects/spinsabre.ogg differ