diff --git a/_maps/map_files/debug/multiz.dmm b/_maps/map_files/debug/multiz.dmm
new file mode 100644
index 000000000000..a228f2b1b328
--- /dev/null
+++ b/_maps/map_files/debug/multiz.dmm
@@ -0,0 +1,10082 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aa" = (
+/turf/open/space/basic,
+/area/space)
+"ab" = (
+/obj/structure/lattice,
+/turf/open/space,
+/area/space)
+"ac" = (
+/turf/open/space,
+/area/space/nearstation)
+"ad" = (
+/turf/closed/wall/r_wall,
+/area/maintenance/department/bridge)
+"ae" = (
+/obj/structure/lattice,
+/obj/structure/grille,
+/turf/open/space,
+/area/space/nearstation)
+"af" = (
+/turf/open/floor/plating,
+/area/maintenance/department/bridge)
+"ag" = (
+/obj/structure/lattice,
+/turf/open/space,
+/area/space/nearstation)
+"ah" = (
+/turf/closed/wall/r_wall,
+/area/engine/atmos)
+"ai" = (
+/obj/machinery/power/rtg/advanced,
+/turf/open/floor/plating/airless,
+/area/space/nearstation)
+"aj" = (
+/turf/closed/wall/r_wall,
+/area/engine/engineering)
+"ak" = (
+/turf/closed/wall/r_wall,
+/area/engine/gravity_generator)
+"al" = (
+/obj/machinery/airalarm{
+ frequency = 1439;
+ locked = 0;
+ pixel_y = 23
+ },
+/obj/structure/closet/secure_closet/atmospherics,
+/turf/open/floor/plating,
+/area/engine/atmos)
+"am" = (
+/obj/machinery/atmospherics/components/unary/tank/air,
+/turf/open/floor/plating,
+/area/engine/atmos)
+"an" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/space,
+/area/space/nearstation)
+"ao" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/space,
+/area/space/nearstation)
+"ap" = (
+/obj/machinery/airalarm{
+ frequency = 1439;
+ locked = 0;
+ pixel_y = 23
+ },
+/obj/machinery/power/apc{
+ dir = 8;
+ pixel_x = -24
+ },
+/obj/structure/closet/secure_closet/engineering_electrical,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/engine/engineering)
+"aq" = (
+/obj/machinery/computer/monitor,
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plating,
+/area/engine/engineering)
+"ar" = (
+/obj/structure/closet/secure_closet/engineering_welding,
+/turf/open/floor/plating,
+/area/engine/engineering)
+"as" = (
+/obj/machinery/power/smes{
+ charge = 5e+006
+ },
+/obj/machinery/airalarm{
+ frequency = 1439;
+ locked = 0;
+ pixel_y = 23
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"at" = (
+/obj/machinery/power/apc{
+ dir = 1;
+ name = "Gravity Generator APC";
+ pixel_y = 25
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"au" = (
+/turf/open/openspace,
+/area/security)
+"av" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/openspace,
+/area/security)
+"aw" = (
+/turf/open/floor/plating,
+/area/engine/atmos)
+"ax" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 5
+ },
+/turf/open/floor/plating,
+/area/engine/atmos)
+"ay" = (
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
+/turf/open/floor/plating,
+/area/engine/atmos)
+"az" = (
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/meter,
+/turf/open/floor/plating,
+/area/engine/atmos)
+"aA" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/space,
+/area/space/nearstation)
+"aB" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/space,
+/area/space/nearstation)
+"aC" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/openspace,
+/area/security)
+"aD" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/engine/engineering)
+"aE" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/turf/open/floor/plating,
+/area/engine/engineering)
+"aF" = (
+/turf/open/floor/plating,
+/area/engine/engineering)
+"aG" = (
+/obj/machinery/power/terminal{
+ dir = 1
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"aH" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"aI" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/engine/gravity_generator)
+"aJ" = (
+/turf/open/floor/plasteel{
+ dir = 1
+ },
+/area/engine/gravity_generator)
+"aK" = (
+/turf/open/floor/plasteel{
+ dir = 8
+ },
+/area/engine/gravity_generator)
+"aL" = (
+/turf/open/floor/plasteel{
+ dir = 4
+ },
+/area/engine/gravity_generator)
+"aM" = (
+/obj/machinery/suit_storage_unit/ce,
+/turf/open/floor/plating,
+/area/engine/atmos)
+"aN" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 4
+ },
+/obj/machinery/portable_atmospherics/canister/nitrous_oxide,
+/obj/effect/turf_decal/bot{
+ dir = 2
+ },
+/turf/open/floor/plasteel{
+ dir = 2
+ },
+/area/engine/atmos)
+"aO" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 4;
+ on = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"aP" = (
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/atmos)
+"aQ" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/space,
+/area/space/nearstation)
+"aR" = (
+/obj/structure/lattice/catwalk,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/space,
+/area/space/nearstation)
+"aS" = (
+/obj/structure/table,
+/obj/item/flashlight{
+ pixel_y = 5
+ },
+/obj/item/airlock_painter,
+/turf/open/floor/plating,
+/area/engine/engineering)
+"aT" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plating,
+/area/engine/engineering)
+"aU" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"aV" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"aW" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"aX" = (
+/obj/machinery/gravity_generator/main/station,
+/turf/open/openspace,
+/area/security)
+"aY" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"aZ" = (
+/obj/structure/tank_dispenser{
+ pixel_x = -1
+ },
+/turf/open/floor/plating,
+/area/engine/atmos)
+"ba" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plating,
+/area/engine/atmos)
+"bb" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 4
+ },
+/obj/machinery/portable_atmospherics/canister,
+/obj/effect/turf_decal/bot{
+ dir = 2
+ },
+/turf/open/floor/plasteel{
+ dir = 2
+ },
+/area/engine/atmos)
+"bc" = (
+/obj/machinery/atmospherics/components/binary/pump{
+ dir = 8;
+ on = 1
+ },
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"bd" = (
+/obj/structure/table,
+/obj/item/weldingtool/experimental,
+/turf/open/floor/plating,
+/area/engine/engineering)
+"be" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/engine/engineering)
+"bf" = (
+/obj/structure/closet/secure_closet/engineering_chief,
+/turf/open/floor/plating,
+/area/engine/engineering)
+"bg" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"bh" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"bi" = (
+/obj/machinery/gravity_generator/main/station,
+/turf/open/floor/plasteel{
+ dir = 8
+ },
+/area/engine/gravity_generator)
+"bj" = (
+/obj/machinery/power/apc{
+ dir = 8;
+ pixel_x = -24
+ },
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/light,
+/obj/structure/table,
+/obj/item/analyzer,
+/obj/item/wrench,
+/turf/open/floor/plating,
+/area/engine/atmos)
+"bk" = (
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/engine/atmos)
+"bl" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/meter,
+/turf/open/floor/plating,
+/area/engine/atmos)
+"bm" = (
+/obj/machinery/atmospherics/components/binary/valve{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/engine/atmos)
+"bn" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 9
+ },
+/obj/machinery/light,
+/turf/open/floor/plating,
+/area/engine/atmos)
+"bo" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/obj/structure/table,
+/obj/item/screwdriver/power,
+/obj/item/wirecutters/power,
+/turf/open/floor/plating,
+/area/engine/engineering)
+"bp" = (
+/obj/machinery/light,
+/obj/item/storage/box/lights/mixed,
+/obj/item/lightreplacer,
+/turf/open/floor/plating,
+/area/engine/engineering)
+"bq" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"br" = (
+/obj/structure/closet/radiation,
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"bs" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/closed/wall/r_wall,
+/area/hallway/primary/central)
+"bt" = (
+/obj/machinery/door/airlock,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"bu" = (
+/turf/closed/wall/r_wall,
+/area/bridge)
+"bv" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/bridge)
+"bw" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/closed/wall/r_wall,
+/area/engine/engineering)
+"bx" = (
+/obj/machinery/door/airlock,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plating,
+/area/engine/engineering)
+"by" = (
+/turf/closed/wall/r_wall,
+/area/hallway/secondary/entry)
+"bz" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/maintenance/department/bridge)
+"bA" = (
+/turf/closed/wall/r_wall,
+/area/hallway/primary/central)
+"bB" = (
+/obj/machinery/power/apc{
+ dir = 8;
+ pixel_x = -24
+ },
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/airalarm{
+ frequency = 1439;
+ locked = 0;
+ pixel_y = 23
+ },
+/obj/structure/closet/jcloset,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bC" = (
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bD" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bE" = (
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bF" = (
+/obj/structure/closet/secure_closet/CMO,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bG" = (
+/obj/machinery/airalarm{
+ frequency = 1439;
+ locked = 0;
+ pixel_y = 23
+ },
+/obj/machinery/power/apc{
+ dir = 8;
+ pixel_x = -24
+ },
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/structure/closet/secure_closet/captains,
+/turf/open/floor/plasteel{
+ dir = 8
+ },
+/area/bridge)
+"bH" = (
+/obj/structure/table,
+/obj/item/ammo_box/c10mm,
+/obj/item/gun/ballistic,
+/turf/open/floor/plasteel,
+/area/bridge)
+"bI" = (
+/obj/structure/table,
+/turf/open/floor/plasteel,
+/area/bridge)
+"bJ" = (
+/obj/structure/table,
+/obj/item/card/id/captains_spare,
+/turf/open/floor/plasteel,
+/area/bridge)
+"bK" = (
+/obj/structure/table,
+/obj/item/storage/backpack/holding,
+/turf/open/floor/plasteel,
+/area/bridge)
+"bL" = (
+/obj/structure/table,
+/obj/item/rcd_ammo/large,
+/obj/item/rcd_ammo/large,
+/obj/item/rcd_ammo/large,
+/obj/item/construction/rcd,
+/turf/open/floor/plasteel,
+/area/bridge)
+"bM" = (
+/obj/structure/closet/secure_closet/hop,
+/turf/open/floor/plasteel{
+ dir = 4
+ },
+/area/bridge)
+"bN" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bO" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bP" = (
+/obj/machinery/vending/cigarette,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bQ" = (
+/obj/machinery/vending/coffee,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bR" = (
+/obj/machinery/vending/cola,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bS" = (
+/obj/machinery/vending/snack,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bT" = (
+/obj/machinery/computer/arcade,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"bU" = (
+/obj/machinery/airalarm{
+ frequency = 1439;
+ locked = 0;
+ pixel_y = 23
+ },
+/obj/machinery/power/apc{
+ dir = 8;
+ pixel_x = -24
+ },
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/structure/closet/firecloset/full,
+/turf/open/floor/plasteel{
+ dir = 9
+ },
+/area/hallway/secondary/entry)
+"bV" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/structure/closet/emcloset,
+/turf/open/floor/plasteel{
+ dir = 1
+ },
+/area/hallway/secondary/entry)
+"bW" = (
+/obj/structure/closet/secure_closet/hos,
+/turf/open/floor/plasteel{
+ dir = 1
+ },
+/area/hallway/secondary/entry)
+"bX" = (
+/obj/structure/closet/emcloset,
+/turf/open/floor/plasteel{
+ dir = 1
+ },
+/area/hallway/secondary/entry)
+"bY" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/maintenance/department/bridge)
+"bZ" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/hallway/primary/central)
+"ca" = (
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cb" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cc" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cd" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/bridge)
+"ce" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plasteel{
+ dir = 8
+ },
+/area/bridge)
+"cf" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/bridge)
+"cg" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel{
+ dir = 4
+ },
+/area/bridge)
+"ch" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/plating,
+/area/bridge)
+"ci" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cj" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"ck" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/closed/wall/r_wall,
+/area/hallway/secondary/entry)
+"cl" = (
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/plasteel{
+ dir = 8
+ },
+/area/hallway/secondary/entry)
+"cn" = (
+/obj/machinery/door/airlock,
+/turf/open/floor/plating,
+/area/hallway/secondary/entry)
+"co" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cp" = (
+/obj/machinery/light,
+/obj/machinery/atmospherics/components/unary/vent_pump/on,
+/turf/open/floor/plasteel{
+ dir = 10
+ },
+/area/bridge)
+"cr" = (
+/obj/machinery/light,
+/turf/open/floor/plasteel{
+ dir = 6
+ },
+/area/bridge)
+"cs" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/closed/wall/r_wall,
+/area/bridge)
+"ct" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cv" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/closed/wall/r_wall,
+/area/bridge)
+"cw" = (
+/obj/machinery/door/airlock,
+/turf/open/floor/plasteel,
+/area/bridge)
+"cx" = (
+/obj/machinery/door/airlock/glass,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"cy" = (
+/turf/open/floor/plasteel{
+ dir = 8
+ },
+/area/hallway/secondary/entry)
+"cz" = (
+/turf/open/floor/plating,
+/area/hallway/secondary/entry)
+"cA" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cB" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/open/floor/plasteel{
+ dir = 4
+ },
+/area/hallway/primary/central)
+"cC" = (
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
+/turf/open/floor/plasteel{
+ dir = 1
+ },
+/area/hallway/primary/central)
+"cD" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel{
+ dir = 1
+ },
+/area/hallway/primary/central)
+"cE" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/open/floor/plasteel{
+ dir = 1
+ },
+/area/hallway/primary/central)
+"cF" = (
+/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"cG" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/closed/wall/r_wall,
+/area/hallway/secondary/entry)
+"cH" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/plasteel{
+ dir = 8
+ },
+/area/hallway/secondary/entry)
+"cI" = (
+/obj/structure/table,
+/obj/item/storage/fancy/donut_box,
+/turf/open/floor/plasteel{
+ dir = 8
+ },
+/area/hallway/secondary/entry)
+"cJ" = (
+/obj/structure/table,
+/obj/item/storage/fancy/donut_box,
+/turf/open/floor/plasteel{
+ dir = 10
+ },
+/area/hallway/secondary/entry)
+"cK" = (
+/obj/structure/table,
+/obj/item/stack/sheet/glass/fifty,
+/obj/item/stack/rods/fifty,
+/obj/machinery/light,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"cL" = (
+/obj/structure/table,
+/obj/item/paper_bin{
+ pixel_x = -3;
+ pixel_y = 7
+ },
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"cM" = (
+/obj/structure/table,
+/obj/item/storage/firstaid/regular,
+/obj/item/storage/firstaid/regular,
+/obj/item/healthanalyzer,
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"cN" = (
+/turf/closed/wall/r_wall,
+/area/construction)
+"cO" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/closed/wall/r_wall,
+/area/construction)
+"cP" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/closed/wall/r_wall,
+/area/construction)
+"cQ" = (
+/obj/machinery/door/airlock/glass,
+/turf/open/floor/plasteel,
+/area/construction)
+"cR" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/construction)
+"cS" = (
+/turf/closed/wall/r_wall,
+/area/storage/primary)
+"cT" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/closed/wall/r_wall,
+/area/storage/primary)
+"cU" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/closed/wall/r_wall,
+/area/storage/primary)
+"cV" = (
+/obj/machinery/door/airlock/glass,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"cW" = (
+/obj/machinery/airalarm{
+ frequency = 1439;
+ locked = 0;
+ pixel_y = 23
+ },
+/obj/structure/cable,
+/obj/machinery/power/apc{
+ dir = 8;
+ pixel_x = -24
+ },
+/obj/effect/turf_decal/stripes/corner,
+/turf/open/floor/plasteel,
+/area/construction)
+"cX" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/construction)
+"cY" = (
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/construction)
+"cZ" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 1
+ },
+/obj/structure/ladder,
+/turf/open/floor/plasteel,
+/area/construction)
+"da" = (
+/obj/machinery/airalarm{
+ frequency = 1439;
+ locked = 0;
+ pixel_y = 23
+ },
+/obj/machinery/power/apc{
+ dir = 8;
+ pixel_x = -24
+ },
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/storage/primary)
+"db" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/storage/primary)
+"dc" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"dd" = (
+/turf/open/floor/plasteel{
+ icon_state = "L1"
+ },
+/area/storage/primary)
+"de" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/open/floor/plasteel{
+ icon_state = "L3"
+ },
+/area/storage/primary)
+"df" = (
+/turf/open/floor/plasteel{
+ icon_state = "L5"
+ },
+/area/storage/primary)
+"dg" = (
+/turf/open/floor/plasteel{
+ icon_state = "L7"
+ },
+/area/storage/primary)
+"dh" = (
+/turf/open/floor/plasteel{
+ icon_state = "L9"
+ },
+/area/storage/primary)
+"di" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/open/floor/plasteel{
+ icon_state = "L11"
+ },
+/area/storage/primary)
+"dj" = (
+/turf/open/floor/plasteel{
+ icon_state = "L13"
+ },
+/area/storage/primary)
+"dk" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"dl" = (
+/turf/open/floor/plating,
+/area/storage/primary)
+"dm" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/construction)
+"dn" = (
+/turf/open/floor/plating,
+/area/construction)
+"do" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/construction)
+"dp" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/storage/primary)
+"dq" = (
+/turf/open/floor/plasteel{
+ icon_state = "L2"
+ },
+/area/storage/primary)
+"dr" = (
+/turf/open/floor/plasteel{
+ icon_state = "L4"
+ },
+/area/storage/primary)
+"ds" = (
+/turf/open/floor/plasteel{
+ icon_state = "L6"
+ },
+/area/storage/primary)
+"dt" = (
+/turf/open/floor/plasteel{
+ icon_state = "L8"
+ },
+/area/storage/primary)
+"du" = (
+/turf/open/floor/plasteel{
+ icon_state = "L10"
+ },
+/area/storage/primary)
+"dv" = (
+/turf/open/floor/plasteel{
+ icon_state = "L12"
+ },
+/area/storage/primary)
+"dw" = (
+/turf/open/floor/plasteel{
+ icon_state = "L14"
+ },
+/area/storage/primary)
+"dx" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/open/floor/plating,
+/area/storage/primary)
+"dy" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/construction)
+"dz" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/construction)
+"dA" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 10
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"dB" = (
+/obj/effect/turf_decal/stripes/line,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"dC" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 6
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"dD" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 9
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"dE" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"dF" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 5
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"dG" = (
+/obj/effect/turf_decal/stripes/asteroid/line{
+ icon_state = "ast_warn";
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/asteroid/line{
+ icon_state = "ast_warn";
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/asteroid/line{
+ icon_state = "ast_warn";
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"dH" = (
+/obj/effect/landmark/start,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"dI" = (
+/obj/effect/landmark/latejoin,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"dJ" = (
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"dK" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/construction)
+"dL" = (
+/obj/effect/turf_decal/stripes/line{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/construction)
+"dM" = (
+/obj/effect/turf_decal/stripes/corner{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/construction)
+"dN" = (
+/obj/structure/table,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"dO" = (
+/obj/structure/table,
+/obj/machinery/light,
+/obj/item/twohanded/fireaxe,
+/obj/item/extinguisher,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"dP" = (
+/obj/structure/table,
+/obj/item/lightreplacer,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"dQ" = (
+/obj/structure/table,
+/obj/item/storage/box/lights/mixed,
+/obj/item/storage/box/lights/tubes,
+/obj/machinery/light,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"dR" = (
+/obj/structure/table,
+/obj/item/flashlight{
+ pixel_y = 5
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"dS" = (
+/obj/effect/turf_decal/stripes/asteroid/line{
+ icon_state = "ast_warn";
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/asteroid/line{
+ icon_state = "ast_warn";
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"dV" = (
+/turf/open/floor/plasteel,
+/area/engine/gravity_generator)
+"dW" = (
+/turf/open/floor/plasteel,
+/area/engine/engineering)
+"dX" = (
+/turf/open/floor/plasteel{
+ dir = 2
+ },
+/area/engine/atmos)
+"dY" = (
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"dZ" = (
+/obj/machinery/door/airlock{
+ req_access_txt = "1"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/engine/engineering)
+"ea" = (
+/turf/open/floor/plasteel{
+ dir = 8
+ },
+/area/bridge)
+"eb" = (
+/turf/open/floor/plasteel,
+/area/bridge)
+"ec" = (
+/turf/open/floor/plasteel{
+ dir = 4
+ },
+/area/bridge)
+"ed" = (
+/obj/effect/turf_decal/stripes/asteroid/line{
+ icon_state = "ast_warn";
+ dir = 4
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plasteel,
+/area/engine/atmos)
+"ee" = (
+/turf/open/floor/plasteel{
+ dir = 9
+ },
+/area/hallway/secondary/entry)
+"ef" = (
+/turf/open/floor/plasteel{
+ dir = 1
+ },
+/area/hallway/secondary/entry)
+"eg" = (
+/turf/open/floor/plating,
+/area/hallway/primary/central)
+"eh" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel{
+ dir = 10
+ },
+/area/bridge)
+"ei" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/open/floor/plasteel{
+ dir = 6
+ },
+/area/bridge)
+"ej" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"ek" = (
+/turf/open/floor/plasteel{
+ dir = 4
+ },
+/area/hallway/primary/central)
+"em" = (
+/turf/open/floor/plasteel{
+ dir = 1
+ },
+/area/hallway/primary/central)
+"en" = (
+/turf/open/floor/plasteel{
+ dir = 10
+ },
+/area/hallway/secondary/entry)
+"eo" = (
+/turf/open/floor/plasteel,
+/area/hallway/secondary/entry)
+"ep" = (
+/turf/open/floor/plasteel,
+/area/construction)
+"eq" = (
+/turf/open/floor/plasteel{
+ icon_state = "L3"
+ },
+/area/storage/primary)
+"er" = (
+/turf/open/floor/plasteel{
+ icon_state = "L11"
+ },
+/area/storage/primary)
+"es" = (
+/obj/effect/turf_decal/stripes/asteroid/corner,
+/turf/open/floor/plasteel,
+/area/construction)
+"et" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/construction)
+"eu" = (
+/obj/effect/turf_decal/stripes/asteroid/line,
+/turf/open/floor/plasteel,
+/area/construction)
+"ev" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"ew" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"ex" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/storage/primary)
+"ey" = (
+/obj/effect/turf_decal/stripes/asteroid/corner{
+ icon_state = "ast_warn_corner";
+ dir = 1
+ },
+/obj/structure/ladder,
+/turf/open/floor/plasteel,
+/area/construction)
+"ez" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plasteel{
+ dir = 8
+ },
+/area/hallway/secondary/entry)
+"eC" = (
+/turf/open/openspace,
+/area/maintenance/department/bridge)
+"eD" = (
+/obj/effect/turf_decal/stripes/asteroid/line{
+ icon_state = "ast_warn";
+ dir = 8
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plasteel,
+/area/engine/engineering)
+"eE" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/engine/atmos)
+"eF" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/engine/atmos)
+"eG" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/engine/engineering)
+"eH" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/obj/effect/turf_decal/stripes/asteroid/line{
+ icon_state = "ast_warn";
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/construction)
+"eI" = (
+/obj/effect/turf_decal/stripes/asteroid/line{
+ icon_state = "ast_warn";
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/construction)
+"eJ" = (
+/obj/effect/turf_decal/stripes/asteroid/line{
+ icon_state = "ast_warn";
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/construction)
+"eK" = (
+/obj/effect/turf_decal/stripes/asteroid/corner{
+ icon_state = "ast_warn_corner";
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/construction)
+"eL" = (
+/obj/effect/turf_decal/stripes/asteroid/line{
+ icon_state = "ast_warn";
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/construction)
+"eM" = (
+/obj/effect/turf_decal/stripes/asteroid/corner{
+ icon_state = "ast_warn_corner";
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/construction)
+"eN" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/engine/engineering)
+"eO" = (
+/obj/effect/turf_decal/stripes/asteroid/line{
+ icon_state = "ast_warn";
+ dir = 1
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plasteel,
+/area/bridge)
+"eP" = (
+/obj/effect/turf_decal/stripes/asteroid/line{
+ icon_state = "ast_warn";
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/asteroid/line{
+ icon_state = "ast_warn";
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"eQ" = (
+/obj/effect/turf_decal/stripes/asteroid/line{
+ icon_state = "ast_warn";
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"eR" = (
+/obj/effect/turf_decal/stripes/asteroid/corner{
+ icon_state = "ast_warn_corner";
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/asteroid/corner{
+ icon_state = "ast_warn_corner";
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"eS" = (
+/obj/effect/turf_decal/stripes/asteroid/line{
+ icon_state = "ast_warn";
+ dir = 1
+ },
+/obj/effect/turf_decal/stripes/asteroid/line{
+ icon_state = "ast_warn";
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"eT" = (
+/obj/effect/turf_decal/stripes/asteroid/line{
+ icon_state = "ast_warn";
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"eU" = (
+/obj/effect/turf_decal/stripes/asteroid/line{
+ icon_state = "ast_warn";
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"eV" = (
+/obj/structure/ladder,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"eW" = (
+/obj/effect/turf_decal/stripes/asteroid/line,
+/obj/effect/turf_decal/stripes/asteroid/line{
+ icon_state = "ast_warn";
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"eX" = (
+/obj/effect/turf_decal/stripes/asteroid/line,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"eY" = (
+/obj/effect/turf_decal/stripes/asteroid/line,
+/obj/effect/turf_decal/stripes/asteroid/line{
+ icon_state = "ast_warn";
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+"fc" = (
+/obj/item/pizzabox,
+/turf/open/floor/plasteel{
+ icon_state = "L2"
+ },
+/area/storage/primary)
+"fd" = (
+/obj/item/pizzabox,
+/turf/open/floor/plasteel{
+ icon_state = "L4"
+ },
+/area/storage/primary)
+"fe" = (
+/obj/item/pizzabox,
+/turf/open/floor/plasteel{
+ icon_state = "L6"
+ },
+/area/storage/primary)
+"ff" = (
+/obj/item/pizzabox,
+/turf/open/floor/plasteel{
+ icon_state = "L8"
+ },
+/area/storage/primary)
+"fg" = (
+/obj/item/pizzabox,
+/turf/open/floor/plasteel{
+ icon_state = "L10"
+ },
+/area/storage/primary)
+"fh" = (
+/obj/item/pizzabox,
+/turf/open/floor/plasteel{
+ icon_state = "L12"
+ },
+/area/storage/primary)
+"fi" = (
+/obj/item/pizzabox,
+/turf/open/floor/plasteel{
+ icon_state = "L14"
+ },
+/area/storage/primary)
+"fj" = (
+/obj/effect/turf_decal/stripes/line,
+/obj/item/pizzabox,
+/turf/open/floor/plasteel,
+/area/storage/primary)
+"fk" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/plating,
+/area/construction)
+"fl" = (
+/obj/effect/turf_decal/stripes/line,
+/turf/closed/wall/r_wall,
+/area/storage/primary)
+"fn" = (
+/turf/closed/wall/r_wall,
+/area/space)
+"fo" = (
+/obj/effect/turf_decal/stripes/asteroid/line{
+ icon_state = "ast_warn";
+ dir = 8
+ },
+/obj/effect/turf_decal/stripes/asteroid/line{
+ icon_state = "ast_warn";
+ dir = 4
+ },
+/obj/machinery/door/airlock,
+/turf/open/floor/plasteel,
+/area/hallway/primary/central)
+
+(1,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(2,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(3,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(4,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(5,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(6,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(7,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(8,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(9,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(10,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(11,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+bY
+bY
+bY
+bY
+bY
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(12,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+af
+af
+af
+af
+af
+af
+af
+af
+bz
+af
+af
+af
+af
+af
+bz
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(13,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+af
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+bA
+bZ
+bZ
+bZ
+bZ
+bZ
+bA
+cN
+cN
+cN
+cN
+cN
+cN
+cN
+cN
+cN
+cN
+cN
+cN
+cN
+cN
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(14,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+af
+ah
+al
+aw
+aM
+aZ
+bj
+bs
+bB
+ca
+bO
+bO
+bO
+bO
+bO
+cO
+cW
+dm
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dy
+dm
+dK
+cN
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(15,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+af
+ah
+am
+ax
+aw
+ba
+bk
+bt
+bC
+cb
+bN
+bN
+bC
+bN
+bN
+cP
+cX
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dL
+cN
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(16,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+af
+ah
+am
+ay
+aN
+bb
+bl
+ah
+bD
+cc
+bE
+bE
+cA
+bE
+bE
+cQ
+cY
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dL
+cN
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(17,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+af
+ah
+am
+ay
+aO
+bc
+bm
+ah
+bE
+cc
+bE
+bE
+cA
+bE
+bE
+cQ
+cY
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dL
+cN
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(18,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+af
+ah
+am
+az
+aP
+aP
+bn
+ah
+bF
+cc
+co
+bE
+cA
+bE
+bE
+cN
+cY
+dn
+dn
+dn
+dn
+cN
+cN
+cN
+dn
+dn
+dn
+dL
+cN
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(19,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+ad
+ah
+ah
+ah
+ah
+ah
+ah
+bu
+bu
+cd
+bu
+bu
+cB
+bE
+bE
+cR
+cY
+dn
+dn
+dn
+dn
+cN
+fk
+cN
+dn
+dn
+dn
+dL
+cN
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(20,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ae
+ag
+ag
+ag
+ag
+ag
+ag
+ag
+bu
+bG
+ce
+cp
+cv
+cC
+bE
+bE
+cR
+cY
+dn
+dn
+dn
+dn
+cN
+dn
+cN
+dn
+dn
+dn
+dL
+cN
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(21,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ae
+ag
+ai
+an
+ai
+aQ
+ai
+ag
+bv
+bH
+cf
+eb
+bv
+cD
+bE
+bE
+cR
+cY
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dL
+cN
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(22,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ae
+ag
+ai
+ao
+aA
+aR
+ai
+ag
+bv
+bI
+cf
+eb
+bu
+cD
+bE
+bE
+cN
+cY
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dL
+cN
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(23,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ae
+ag
+ag
+ag
+aB
+ag
+ag
+ag
+bv
+bJ
+cf
+eb
+cw
+cD
+bE
+bE
+cQ
+cY
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dL
+cN
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(24,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ae
+ac
+ac
+ag
+aB
+ag
+ac
+ac
+bv
+bK
+cf
+eb
+bu
+cD
+bE
+bE
+cQ
+cY
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dn
+dL
+cN
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(25,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ae
+ac
+ac
+aj
+dZ
+aj
+ac
+ac
+bv
+bL
+cf
+eb
+bv
+cD
+bE
+bE
+cN
+cZ
+do
+dz
+dz
+dz
+cN
+dz
+dz
+dz
+dz
+do
+dM
+cN
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(26,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ae
+ac
+ac
+aj
+aD
+aj
+ac
+ac
+bu
+bM
+cg
+cr
+bu
+cD
+bE
+bE
+cS
+cS
+cS
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+cS
+cS
+cS
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(27,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+ad
+aj
+aj
+aD
+aj
+aj
+aj
+bu
+bu
+ch
+cs
+cs
+cE
+bO
+bO
+cT
+da
+dp
+dl
+dl
+dl
+dl
+dl
+dl
+dl
+dl
+dp
+dl
+cS
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(28,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+af
+aj
+ap
+aD
+aS
+bd
+bo
+bw
+bN
+ci
+ct
+bN
+cF
+bN
+bN
+cU
+db
+dl
+dl
+dl
+dl
+dl
+dl
+dl
+dl
+dl
+dl
+dl
+cS
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(29,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+af
+aj
+aq
+aE
+aT
+be
+be
+bx
+bO
+cj
+bE
+bE
+cA
+bE
+bE
+cS
+dc
+dc
+dA
+dl
+dD
+dc
+dc
+dA
+dl
+dD
+dc
+dc
+cS
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(30,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+af
+aj
+ar
+aF
+aD
+bf
+bp
+aj
+bP
+cc
+bE
+bE
+cA
+bE
+bE
+cS
+dd
+fc
+dB
+dl
+dE
+dH
+dI
+dB
+cS
+dE
+dJ
+dN
+cS
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(31,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+af
+ak
+ak
+ak
+aU
+ak
+ak
+ak
+bQ
+cc
+bE
+bE
+cA
+bE
+bE
+cS
+de
+fd
+fj
+dl
+dE
+dH
+dI
+dB
+dl
+dE
+dJ
+dO
+cS
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(32,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+af
+ak
+as
+aG
+aV
+bg
+bq
+ak
+bR
+cc
+bE
+bE
+cA
+bE
+bE
+cV
+df
+fe
+fj
+dl
+dE
+dH
+dI
+dB
+dl
+dE
+dJ
+dN
+cS
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(33,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+af
+ak
+at
+aH
+aW
+bh
+br
+ak
+bS
+cc
+bE
+bE
+cA
+bE
+bE
+cV
+dg
+ff
+fj
+dl
+dE
+dH
+dI
+dB
+dl
+dE
+dJ
+dN
+cS
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(34,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+af
+ak
+aI
+aI
+dV
+aI
+aI
+ak
+bT
+cc
+co
+bE
+cA
+bE
+bE
+cV
+dh
+fg
+fj
+dl
+dE
+dH
+dI
+dB
+dl
+dE
+dJ
+dP
+cS
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(35,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+af
+ak
+dV
+dV
+dV
+dV
+dV
+by
+by
+ck
+by
+cx
+cG
+by
+by
+by
+di
+fh
+fj
+dl
+dE
+dH
+dI
+fl
+cS
+dE
+dJ
+dQ
+cS
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(36,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+af
+ak
+dV
+aJ
+aK
+aL
+dV
+by
+bU
+cl
+cy
+cy
+cH
+cI
+cJ
+by
+dj
+fi
+dB
+dl
+dE
+dH
+dI
+dB
+dl
+dE
+dJ
+dR
+cS
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(37,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+af
+ak
+dV
+aK
+dV
+bi
+dV
+by
+bV
+eo
+eo
+eo
+eo
+eo
+cK
+by
+dk
+dk
+dC
+dl
+dF
+dk
+dk
+dC
+dl
+dF
+dk
+dk
+cS
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(38,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+af
+ak
+dV
+aL
+aK
+aJ
+dV
+by
+bW
+eo
+eo
+eo
+eo
+eo
+cL
+by
+dl
+dl
+dl
+dl
+dl
+dl
+dl
+dl
+dl
+dl
+dl
+dl
+cS
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(39,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+af
+ak
+dV
+dV
+aY
+dV
+dV
+by
+bX
+eo
+eo
+cy
+eo
+eo
+cM
+by
+dl
+dx
+dl
+dl
+dl
+dl
+dl
+dl
+dl
+dl
+dx
+dl
+cS
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(40,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+af
+ak
+ak
+ak
+ak
+ak
+ak
+by
+by
+cn
+by
+cn
+by
+cn
+by
+by
+cS
+cS
+cS
+cS
+cS
+cS
+cS
+cS
+cS
+cS
+cS
+cS
+cS
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(41,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+by
+cz
+by
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(42,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+by
+cn
+by
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(43,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(44,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(45,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(46,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(47,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(48,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(49,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(50,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(51,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(52,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+
+(1,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(2,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(3,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(4,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(5,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(6,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(7,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(8,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(9,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(10,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(11,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+bY
+bY
+bY
+bY
+bY
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(12,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+af
+af
+af
+af
+af
+af
+af
+af
+bz
+af
+af
+af
+af
+af
+bz
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(13,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+af
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+bA
+eg
+eg
+eg
+eg
+eg
+bA
+cN
+cN
+cN
+cN
+cN
+cN
+cN
+cN
+cN
+cN
+cN
+cN
+cN
+cN
+af
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(14,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+af
+ah
+aw
+aw
+eE
+aw
+dY
+bA
+bE
+bE
+bE
+bE
+bE
+bE
+bE
+cN
+es
+eI
+eI
+eI
+eI
+eI
+eI
+eI
+eI
+eI
+eI
+eK
+cN
+af
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(15,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+af
+ah
+aw
+aw
+aw
+dY
+dY
+dY
+bE
+bE
+bE
+bE
+bE
+bE
+bE
+cN
+eu
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+eL
+cN
+af
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(16,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+af
+ah
+aw
+aw
+dX
+dX
+dY
+dY
+bE
+bE
+bE
+bE
+bE
+bE
+bE
+ep
+eu
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+eL
+cN
+af
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(17,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+af
+ah
+aw
+dY
+dY
+dY
+dY
+dY
+bE
+bE
+bE
+bE
+bE
+bE
+bE
+ep
+eu
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+eL
+cN
+af
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(18,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+af
+ah
+dY
+dY
+dY
+dY
+dY
+ah
+bE
+bE
+co
+bE
+bE
+bE
+bE
+ep
+eu
+au
+au
+au
+au
+cN
+cN
+cN
+au
+au
+au
+eL
+cN
+af
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(19,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+ad
+ah
+eF
+ed
+ed
+eF
+ah
+bu
+bu
+bv
+bu
+bu
+ek
+bE
+bE
+ep
+eu
+au
+au
+au
+au
+au
+av
+au
+au
+au
+au
+eL
+cN
+af
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(20,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+bu
+ea
+ea
+eh
+bu
+em
+bE
+bE
+ep
+eu
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+eL
+cN
+af
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(21,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+bv
+eb
+eb
+eb
+bv
+em
+bE
+bE
+ep
+eu
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+eL
+cN
+af
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(22,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+eO
+eb
+eb
+eb
+eb
+em
+bE
+bE
+ep
+eu
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+eL
+cN
+af
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(23,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+eO
+eb
+eb
+eb
+eb
+em
+bE
+bE
+ep
+eu
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+eL
+cN
+af
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(24,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+eO
+eb
+eb
+eb
+eb
+em
+bE
+bE
+ep
+eu
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+eL
+cN
+af
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(25,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+bv
+eb
+eb
+eb
+bv
+em
+bE
+bE
+et
+ey
+eJ
+eJ
+eJ
+eJ
+eJ
+eJ
+eJ
+eJ
+eJ
+eH
+eM
+cN
+af
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(26,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+bu
+ec
+ec
+ei
+bu
+em
+bE
+bE
+cS
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+cS
+cS
+cS
+cS
+cS
+cS
+af
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(27,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+ad
+aj
+eG
+eD
+eD
+eG
+aj
+bu
+bu
+bv
+bu
+bu
+em
+bE
+bE
+ev
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+ev
+dJ
+cS
+af
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(28,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+af
+aj
+dW
+dW
+dW
+dW
+dW
+aj
+bE
+bE
+ej
+bE
+bE
+bE
+bE
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+cS
+af
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(29,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+af
+aj
+dW
+dW
+dW
+dW
+dW
+dW
+bE
+bE
+bE
+bE
+bE
+bE
+bE
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+dJ
+cS
+af
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(30,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+af
+aj
+dW
+eN
+dW
+dW
+dW
+dW
+bE
+bE
+bE
+bE
+bE
+bE
+bE
+dJ
+dd
+dq
+dJ
+ex
+ex
+ex
+ex
+ex
+ex
+ex
+ex
+ex
+cS
+af
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(31,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+af
+ak
+dV
+ak
+dV
+dV
+dV
+dV
+bE
+bE
+bE
+bE
+bE
+bE
+bE
+dJ
+eq
+dr
+dJ
+ex
+au
+au
+au
+au
+au
+au
+au
+au
+au
+eC
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(32,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+af
+ak
+dV
+dV
+dV
+dV
+dV
+dV
+bE
+bE
+bE
+bE
+bE
+bE
+bE
+dJ
+df
+ds
+dJ
+ex
+au
+au
+au
+au
+au
+au
+au
+au
+au
+eC
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(33,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+af
+ak
+dV
+dV
+dV
+dV
+dV
+ak
+bE
+bE
+bE
+bE
+bE
+bE
+bE
+dJ
+dg
+dt
+dJ
+ex
+au
+au
+au
+au
+au
+au
+au
+au
+au
+eC
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(34,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+af
+ak
+dV
+dV
+dV
+dV
+dV
+ak
+bE
+bE
+co
+bE
+bE
+bE
+bE
+dJ
+dh
+du
+dJ
+ex
+au
+au
+au
+au
+au
+au
+au
+au
+au
+eC
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(35,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+af
+ak
+dV
+dV
+dV
+dV
+dV
+by
+by
+by
+by
+eo
+by
+by
+by
+by
+er
+dv
+dJ
+ex
+au
+au
+au
+aC
+cS
+au
+au
+au
+au
+eC
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(36,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+af
+ak
+dV
+aJ
+aK
+aL
+dV
+by
+ee
+cy
+ez
+cy
+cy
+cy
+en
+by
+dj
+dw
+dJ
+ex
+au
+au
+au
+au
+au
+au
+au
+au
+au
+eC
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(37,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+af
+ak
+dV
+aK
+dV
+bi
+dV
+by
+ef
+eo
+eo
+eo
+eo
+eo
+eo
+by
+dJ
+dJ
+dJ
+ex
+au
+au
+au
+au
+au
+au
+au
+au
+au
+eC
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(38,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+af
+ak
+dV
+aL
+aK
+aJ
+dV
+by
+ef
+eo
+eo
+eo
+eo
+eo
+eo
+by
+dJ
+dJ
+dJ
+ex
+au
+au
+au
+au
+au
+au
+au
+au
+au
+eC
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(39,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+af
+ak
+dV
+dV
+aY
+dV
+dV
+by
+ef
+eo
+eo
+cy
+eo
+eo
+eo
+by
+dJ
+ew
+dJ
+ex
+au
+au
+au
+au
+au
+au
+au
+au
+au
+eC
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(40,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+af
+ak
+ak
+ak
+ak
+ak
+ak
+by
+by
+cz
+by
+by
+by
+cz
+by
+by
+cS
+cS
+cS
+cS
+au
+au
+au
+au
+au
+au
+au
+au
+au
+eC
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(41,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+af
+af
+af
+af
+af
+af
+af
+af
+af
+af
+by
+cz
+by
+af
+af
+af
+af
+af
+af
+af
+eC
+eC
+eC
+eC
+eC
+eC
+eC
+eC
+eC
+eC
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(42,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+by
+by
+by
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(43,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(44,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(45,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(46,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(47,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(48,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(49,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(50,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(51,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(52,1,2) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+
+(1,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(2,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(3,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(4,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(5,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(6,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(7,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(8,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(9,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(10,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(11,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(12,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(13,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(14,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(15,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(16,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(17,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(18,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(19,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(20,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(21,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(22,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(23,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+eP
+eT
+eT
+eT
+eT
+eT
+eW
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(24,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+eQ
+bE
+bE
+bE
+bE
+bE
+eX
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(25,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+eQ
+bE
+bE
+bE
+eV
+bE
+eX
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(26,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+dG
+fo
+dS
+dS
+dS
+dS
+eR
+bE
+bE
+bA
+bE
+bE
+eX
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(27,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+au
+au
+au
+au
+eQ
+bE
+bE
+ej
+bE
+bE
+eX
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(28,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+eQ
+bE
+bE
+bE
+bE
+bE
+eX
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(29,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+eS
+eU
+eU
+eU
+eU
+eU
+eY
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(30,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(31,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(32,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(33,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(34,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(35,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(36,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(37,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(38,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(39,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(40,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(41,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(42,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+fn
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(43,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(44,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(45,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+aX
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(46,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(47,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+au
+aa
+aa
+aa
+aa
+aa
+"}
+(48,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(49,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(50,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(51,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(52,1,3) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
diff --git a/_maps/multiz_debug.dm b/_maps/multiz_debug.dm
new file mode 100644
index 000000000000..0521fef59d30
--- /dev/null
+++ b/_maps/multiz_debug.dm
@@ -0,0 +1 @@
+#define FORCE_MAP "_maps/multiz_debug.json"
\ No newline at end of file
diff --git a/_maps/multiz_debug.json b/_maps/multiz_debug.json
new file mode 100644
index 000000000000..6e31e510179b
--- /dev/null
+++ b/_maps/multiz_debug.json
@@ -0,0 +1,6 @@
+{
+ "map_name": "MultiZ Debug",
+ "map_path": "map_files/debug",
+ "map_file": "multiz.dmm",
+ "traits": [{"Up": 1}, {"Up": 1, "Down": -1}, {"Down": -1}]
+ }
diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm
index 11b742a9152e..a873e22d2ce4 100644
--- a/code/__DEFINES/atmospherics.dm
+++ b/code/__DEFINES/atmospherics.dm
@@ -147,7 +147,9 @@
#define ATMOS_PASS_NO 0
#define ATMOS_PASS_PROC -1 //ask CanAtmosPass()
#define ATMOS_PASS_DENSITY -2 //just check density
+
#define CANATMOSPASS(A, O) ( A.CanAtmosPass == ATMOS_PASS_PROC ? A.CanAtmosPass(O) : ( A.CanAtmosPass == ATMOS_PASS_DENSITY ? !A.density : A.CanAtmosPass ) )
+#define CANVERTICALATMOSPASS(A, O) ( A.CanAtmosPassVertical == ATMOS_PASS_PROC ? A.CanAtmosPass(O, TRUE) : ( A.CanAtmosPassVertical == ATMOS_PASS_DENSITY ? !A.density : A.CanAtmosPassVertical ) )
//OPEN TURF ATMOS
#define OPENTURF_DEFAULT_ATMOS "o2=22;n2=82;TEMP=293.15" //the default air mix that open turfs spawn
diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm
index 96518e3912a8..fce08761514f 100644
--- a/code/__DEFINES/components.dm
+++ b/code/__DEFINES/components.dm
@@ -103,6 +103,8 @@
// /turf signals
#define COMSIG_TURF_CHANGE "turf_change" //from base of turf/ChangeTurf(): (path, list/new_baseturfs, flags, list/transferring_comps)
#define COMSIG_TURF_HAS_GRAVITY "turf_has_gravity" //from base of atom/has_gravity(): (atom/asker, list/forced_gravities)
+#define COMSIG_TURF_MULTIZ_NEW "turf_multiz_new" //from base of turf/New(): (turf/source, direction)
+
// /atom/movable signals
#define COMSIG_MOVABLE_MOVED "movable_moved" //from base of atom/movable/Moved(): (/atom, dir)
diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm
index 8891c06f750b..08ffee272c0f 100644
--- a/code/__DEFINES/layers.dm
+++ b/code/__DEFINES/layers.dm
@@ -9,6 +9,7 @@
#define FLOOR_PLANE -2
#define GAME_PLANE -1
#define BLACKNESS_PLANE 0 //To keep from conflicts with SEE_BLACKNESS internals
+
#define SPACE_LAYER 1.8
//#define TURF_LAYER 2 //For easy recordkeeping; this is a byond define
#define MID_TURF_LAYER 2.02
@@ -82,11 +83,15 @@
#define ABOVE_LIGHTING_PLANE 16
#define ABOVE_LIGHTING_LAYER 16
-#define BYOND_LIGHTING_PLANE 17
-#define BYOND_LIGHTING_LAYER 17
+#define FLOOR_OPENSPACE_PLANE 17
+#define OPENSPACE_LAYER 17
+
+#define BYOND_LIGHTING_PLANE 18
+#define BYOND_LIGHTING_LAYER 18
+
+#define CAMERA_STATIC_PLANE 19
+#define CAMERA_STATIC_LAYER 19
-#define CAMERA_STATIC_PLANE 18
-#define CAMERA_STATIC_LAYER 18
//HUD layer defines
#define FULLSCREEN_PLANE 19
diff --git a/code/_globalvars/lists/mapping.dm b/code/_globalvars/lists/mapping.dm
index e5dd5d04f524..3ad960e2c16a 100644
--- a/code/_globalvars/lists/mapping.dm
+++ b/code/_globalvars/lists/mapping.dm
@@ -1,6 +1,16 @@
GLOBAL_LIST_INIT(cardinals, list(NORTH, SOUTH, EAST, WEST))
-GLOBAL_LIST_INIT(alldirs, list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST))
+GLOBAL_LIST_INIT(cardinals_multiz, list(NORTH, SOUTH, EAST, WEST, UP, DOWN))
GLOBAL_LIST_INIT(diagonals, list(NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST))
+GLOBAL_LIST_INIT(corners_multiz, list(UP|NORTHEAST, UP|NORTHWEST, UP|SOUTHEAST, UP|SOUTHWEST, DOWN|NORTHEAST, DOWN|NORTHWEST, DOWN|SOUTHEAST, DOWN|SOUTHWEST))
+GLOBAL_LIST_INIT(diagonals_multiz, list(
+ NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST,
+ UP|NORTH, UP|SOUTH, UP|EAST, UP|WEST, UP|NORTHEAST, UP|NORTHWEST, UP|SOUTHEAST, UP|SOUTHWEST,
+ DOWN|NORTH, DOWN|SOUTH, DOWN|EAST, DOWN|WEST, DOWN|NORTHEAST, DOWN|NORTHWEST, DOWN|SOUTHEAST, DOWN|SOUTHWEST))
+GLOBAL_LIST_INIT(alldirs_multiz, list(
+ NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST,
+ UP, UP|NORTH, UP|SOUTH, UP|EAST, UP|WEST, UP|NORTHEAST, UP|NORTHWEST, UP|SOUTHEAST, UP|SOUTHWEST,
+ DOWN, DOWN|NORTH, DOWN|SOUTH, DOWN|EAST, DOWN|WEST, DOWN|NORTHEAST, DOWN|NORTHWEST, DOWN|SOUTHEAST, DOWN|SOUTHWEST))
+GLOBAL_LIST_INIT(alldirs, list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST))
GLOBAL_LIST_EMPTY(landmarks_list) //list of all landmarks created
GLOBAL_LIST_EMPTY(start_landmarks_list) //list of all spawn points created
diff --git a/code/_onclick/hud/plane_master.dm b/code/_onclick/hud/plane_master.dm
index 5bdf61f75d33..6e8b3ac6d73d 100644
--- a/code/_onclick/hud/plane_master.dm
+++ b/code/_onclick/hud/plane_master.dm
@@ -16,6 +16,28 @@
//Trust me, you need one. Period. If you don't think you do, you're doing something extremely wrong.
/obj/screen/plane_master/proc/backdrop(mob/mymob)
+/obj/screen/plane_master/openspace
+ name = "open space plane master"
+ plane = FLOOR_OPENSPACE_PLANE
+ appearance_flags = PLANE_MASTER
+ blend_mode = BLEND_MULTIPLY
+ alpha = 255
+
+/obj/screen/plane_master/openspace/backdrop(mob/mymob)
+ filters = list()
+ filters += filter(type = "drop_shadow", color = "#04080FAA", border = 5, size = -10)
+ filters += filter(type = "drop_shadow", color = "#04080FAA", border = 5, size = -15)
+ filters += filter(type = "drop_shadow", color = "#04080FAA", border = 5, size = -20)
+
+/obj/screen/plane_master/proc/outline(_size, _color)
+ filters += filter(type = "outline", size = _size, color = _color)
+
+/obj/screen/plane_master/proc/shadow(_size, _border, _offset = 0, _x = 0, _y = 0, _color = "#04080FAA")
+ filters += filter(type = "drop_shadow", x = _x, y = _y, color = _color, size = _size, offset = _offset, border = _border)
+
+/obj/screen/plane_master/proc/clear_filters()
+ filters = list()
+
/obj/screen/plane_master/floor
name = "floor plane master"
plane = FLOOR_PLANE
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index c51e47a9e860..7a5887e15dcf 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -186,6 +186,10 @@
else
M.forceMove(src)
+//common name
+/atom/proc/update_multiz(prune_on_fail = FALSE)
+ return FALSE
+
/atom/proc/assume_air(datum/gas_mixture/giver)
qdel(giver)
return null
@@ -728,3 +732,6 @@ Proc for attack log creation, because really why not
/atom/movable/proc/get_filter(name)
if(filter_data && filter_data[name])
return filters[filter_data.Find(name)]
+
+/atom/proc/intercept_zImpact(atom/movable/AM, levels = 1)
+ return FALSE
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index 160ea43a4f41..3075b0726204 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -36,6 +36,51 @@
var/datum/component/orbiter/orbiting
var/can_be_z_moved = TRUE
+ var/zfalling = FALSE
+
+/atom/movable/proc/can_zFall(turf/source, levels = 1, turf/target, direction)
+ if(!direction)
+ direction = DOWN
+ if(!source)
+ source = get_turf(src)
+ if(!source)
+ return FALSE
+ if(!target)
+ target = get_step_multiz(source, direction)
+ if(!target)
+ return FALSE
+ return !(movement_type & FLYING) && has_gravity(source) && !throwing
+
+/atom/movable/proc/onZImpact(turf/T, levels)
+ var/atom/highest = T
+ for(var/i in T.contents)
+ var/atom/A = i
+ if(!A.density)
+ continue
+ if(isobj(A) || ismob(A))
+ if(A.layer > highest.layer)
+ highest = A
+ INVOKE_ASYNC(src, .proc/SpinAnimation, 5, 2)
+ throw_impact(highest)
+ return TRUE
+
+//For physical constraints to travelling up/down.
+/atom/movable/proc/can_zTravel(turf/destination, direction)
+ var/turf/T = get_turf(src)
+ if(!T)
+ return FALSE
+ if(!direction)
+ if(!destination)
+ return FALSE
+ direction = get_dir(T, destination)
+ if(direction != UP && direction != DOWN)
+ return FALSE
+ if(!destination)
+ destination = get_step_multiz(src, direction)
+ if(!destination)
+ return FALSE
+ return T.zPassOut(src, direction, destination) && destination.zPassIn(src, direction, T)
+
/atom/movable/vv_edit_var(var_name, var_value)
var/static/list/banned_edits = list("step_x", "step_y", "step_size")
var/static/list/careful_edits = list("bound_x", "bound_y", "bound_width", "bound_height")
diff --git a/code/game/objects/effects/effects.dm b/code/game/objects/effects/effects.dm
index ccde9c2254d2..6057d1b41806 100644
--- a/code/game/objects/effects/effects.dm
+++ b/code/game/objects/effects/effects.dm
@@ -58,6 +58,9 @@
/obj/effect/abstract/singularity_act()
return
+/obj/effect/abstract/has_gravity(turf/T)
+ return FALSE
+
/obj/effect/dummy/singularity_pull()
return
diff --git a/code/game/objects/structures/stairs.dm b/code/game/objects/structures/stairs.dm
new file mode 100644
index 000000000000..e28f6ef0ec69
--- /dev/null
+++ b/code/game/objects/structures/stairs.dm
@@ -0,0 +1,111 @@
+#define STAIR_TERMINATOR_AUTOMATIC 0
+#define STAIR_TERMINATOR_NO 1
+#define STAIR_TERMINATOR_YES 2
+
+/obj/structure/stairs
+ name = "stairs"
+ icon = 'icons/obj/stairs.dmi'
+ icon_state = "stairs"
+ anchored = TRUE
+ //dir = direction of travel to go upwards
+
+ var/force_open_above = FALSE
+ var/terminator_mode = STAIR_TERMINATOR_AUTOMATIC
+ var/datum/component/redirect/multiz_signal_listener
+
+/obj/structure/stairs/Initialize(mapload)
+ if(force_open_above)
+ force_open_above()
+ build_signal_listener()
+ update_surrounding()
+ return ..()
+
+/obj/structure/stairs/Destroy()
+ QDEL_NULL(multiz_signal_listener)
+ return ..()
+
+/obj/structure/stairs/Move() //Look this should never happen but...
+ . = ..()
+ if(force_open_above)
+ build_signal_listener()
+ update_surrounding()
+
+/obj/structure/stairs/proc/update_surrounding()
+ update_icon()
+ for(var/i in GLOB.cardinals)
+ var/turf/T = get_step(get_turf(src), i)
+ var/obj/structure/stairs/S = locate() in T
+ if(S)
+ S.update_icon()
+
+/obj/structure/stairs/Uncross(atom/movable/AM, turf/newloc)
+ if(!newloc || !AM)
+ return ..()
+ if(isliving(AM) && isTerminator() && (get_dir(src, newloc) == dir))
+ stair_ascend(AM)
+ return FALSE
+ return ..()
+
+/obj/structure/stairs/Cross(atom/movable/AM)
+ if(isTerminator() && (get_dir(src, AM) == dir))
+ return FALSE
+ return ..()
+
+/obj/structure/stairs/update_icon()
+ if(isTerminator())
+ icon_state = "stairs_t"
+ else
+ icon_state = "stairs"
+
+/obj/structure/stairs/proc/stair_ascend(atom/movable/AM)
+ var/turf/checking = get_step_multiz(get_turf(src), UP)
+ if(!istype(checking))
+ return
+ if(!checking.zPassIn(AM, UP, get_turf(src)))
+ return
+ var/turf/target = get_step_multiz(get_turf(src), (dir|UP))
+ if(istype(target) && !target.can_zFall(AM, null, get_step_multiz(target, DOWN))) //Don't throw them into a tile that will just dump them back down.
+ AM.forceMove(target)
+
+/obj/structure/stairs/vv_edit_var(var_name, var_value)
+ . = ..()
+ if(.)
+ if(var_name == NAMEOF(src, force_open_above))
+ if(!var_value)
+ QDEL_NULL(multiz_signal_listener)
+ else
+ build_signal_listener()
+ force_open_above()
+
+/obj/structure/stairs/proc/build_signal_listener()
+ QDEL_NULL(multiz_signal_listener)
+ var/turf/open/openspace/T = get_step_multiz(get_turf(src), UP)
+ multiz_signal_listener = T.AddComponent(/datum/component/redirect, list(COMSIG_TURF_MULTIZ_NEW = CALLBACK(src, .proc/on_multiz_new)))
+
+/obj/structure/stairs/proc/force_open_above()
+ var/turf/open/openspace/T = get_step_multiz(get_turf(src), UP)
+ if(T && !istype(T))
+ T.ChangeTurf(/turf/open/openspace)
+
+/obj/structure/stairs/proc/on_multiz_new(turf/source, dir)
+ if(dir == UP)
+ var/turf/open/openspace/T = get_step_multiz(get_turf(src), UP)
+ if(T && !istype(T))
+ T.ChangeTurf(/turf/open/openspace)
+
+/obj/structure/stairs/intercept_zImpact(atom/movable/AM, levels = 1)
+ return isTerminator()
+
+/obj/structure/stairs/proc/isTerminator() //If this is the last stair in a chain and should move mobs up
+ if(terminator_mode != STAIR_TERMINATOR_AUTOMATIC)
+ return (terminator_mode == STAIR_TERMINATOR_YES)
+ var/turf/T = get_turf(src)
+ if(!T)
+ return FALSE
+ var/turf/them = get_step(T, dir)
+ if(!them)
+ return FALSE
+ for(var/obj/structure/stairs/S in them)
+ if(S.dir == dir)
+ return FALSE
+ return TRUE
diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm
index a9699fdc3653..5308b0b04eda 100644
--- a/code/game/turfs/open.dm
+++ b/code/game/turfs/open.dm
@@ -16,6 +16,22 @@
if(wet)
AddComponent(/datum/component/wet_floor, wet, INFINITY, 0, INFINITY, TRUE)
+//direction is direction of travel of A
+/turf/open/zPassIn(atom/movable/A, direction, turf/source)
+ return (direction == DOWN)
+
+//direction is direction of travel of A
+/turf/open/zPassOut(atom/movable/A, direction, turf/destination)
+ return (direction == UP)
+
+//direction is direction of travel of air
+/turf/open/zAirIn(direction, turf/source)
+ return (direction == DOWN)
+
+//direction is direction of travel of air
+/turf/open/zAirOut(direction, turf/source)
+ return (direction == UP)
+
/turf/open/indestructible
name = "floor"
icon = 'icons/turf/floors.dmi'
@@ -157,43 +173,14 @@
update_visuals()
current_cycle = times_fired
-
- //cache some vars
- var/list/atmos_adjacent_turfs = src.atmos_adjacent_turfs
-
- for(var/direction in GLOB.cardinals)
- var/turf/open/enemy_tile = get_step(src, direction)
- if(!istype(enemy_tile))
- if (atmos_adjacent_turfs)
- atmos_adjacent_turfs -= enemy_tile
- continue
+ CalculateAdjacentTurfs()
+ for(var/i in atmos_adjacent_turfs)
+ var/turf/open/enemy_tile = i
var/datum/gas_mixture/enemy_air = enemy_tile.return_air()
-
- //only check this turf, if it didn't check us when it was initalized
- if(enemy_tile.current_cycle < times_fired)
- if(CANATMOSPASS(src, enemy_tile))
- LAZYINITLIST(atmos_adjacent_turfs)
- LAZYINITLIST(enemy_tile.atmos_adjacent_turfs)
- atmos_adjacent_turfs[enemy_tile] = TRUE
- enemy_tile.atmos_adjacent_turfs[src] = TRUE
- else
- if (atmos_adjacent_turfs)
- atmos_adjacent_turfs -= enemy_tile
- if (enemy_tile.atmos_adjacent_turfs)
- enemy_tile.atmos_adjacent_turfs -= src
- UNSETEMPTY(enemy_tile.atmos_adjacent_turfs)
- continue
- else
- if (!atmos_adjacent_turfs || !atmos_adjacent_turfs[enemy_tile])
- continue
-
if(!excited && air.compare(enemy_air))
//testing("Active turf found. Return value of compare(): [is_active]")
excited = TRUE
SSair.active_turfs |= src
- UNSETEMPTY(atmos_adjacent_turfs)
- if (atmos_adjacent_turfs)
- src.atmos_adjacent_turfs = atmos_adjacent_turfs
/turf/open/proc/GetHeatCapacity()
. = air.heat_capacity()
diff --git a/code/game/turfs/openspace/openspace.dm b/code/game/turfs/openspace/openspace.dm
new file mode 100644
index 000000000000..0f408b83d21d
--- /dev/null
+++ b/code/game/turfs/openspace/openspace.dm
@@ -0,0 +1,108 @@
+/turf/open/openspace
+ name = "open space"
+ desc = "Watch your step!"
+ icon_state = "grey"
+ baseturfs = /turf/open/openspace
+ CanAtmosPassVertical = ATMOS_PASS_YES
+ plane = FLOOR_OPENSPACE_PLANE
+ layer = OPENSPACE_LAYER
+ //mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ var/can_cover_up = TRUE
+ var/can_build_on = TRUE
+
+/turf/open/openspace/debug/update_multiz()
+ ..()
+ return TRUE
+
+/turf/open/openspace/Initialize()
+ . = ..()
+ return INITIALIZE_HINT_LATELOAD
+
+/turf/open/openspace/LateInitialize()
+ update_multiz(TRUE, TRUE)
+
+/turf/open/openspace/Destroy()
+ vis_contents.len = 0
+ return ..()
+
+/turf/open/openspace/update_multiz(prune_on_fail = FALSE, init = FALSE)
+ . = ..()
+ var/turf/T = below()
+ if(!T)
+ vis_contents.len = 0
+ if(prune_on_fail)
+ ChangeTurf(/turf/open/floor/plating)
+ return FALSE
+ if(init)
+ vis_contents += T
+ return TRUE
+
+/turf/open/openspace/multiz_turf_del(turf/T, dir)
+ if(dir != DOWN)
+ return
+ update_multiz()
+
+/turf/open/openspace/multiz_turf_new(turf/T, dir)
+ if(dir != DOWN)
+ return
+ update_multiz()
+
+/turf/open/openspace/zAirIn()
+ return TRUE
+
+/turf/open/openspace/zAirOut()
+ return TRUE
+
+/turf/open/openspace/zPassIn(atom/movable/A, direction, turf/source)
+ return TRUE
+
+/turf/open/openspace/zPassOut(atom/movable/A, direction, turf/destination)
+ return TRUE
+
+/turf/open/openspace/proc/CanCoverUp()
+ return can_cover_up
+
+/turf/open/openspace/proc/CanBuildHere()
+ return can_build_on
+
+/turf/open/openspace/attackby(obj/item/C, mob/user, params)
+ ..()
+ if(!CanBuildHere())
+ return
+ if(istype(C, /obj/item/stack/rods))
+ var/obj/item/stack/rods/R = C
+ var/obj/structure/lattice/L = locate(/obj/structure/lattice, src)
+ var/obj/structure/lattice/catwalk/W = locate(/obj/structure/lattice/catwalk, src)
+ if(W)
+ to_chat(user, "There is already a catwalk here!")
+ return
+ if(L)
+ if(R.use(1))
+ to_chat(user, "You construct a catwalk.")
+ playsound(src, 'sound/weapons/genhit.ogg', 50, 1)
+ new/obj/structure/lattice/catwalk(src)
+ else
+ to_chat(user, "You need two rods to build a catwalk!")
+ return
+ if(R.use(1))
+ to_chat(user, "You construct a lattice.")
+ playsound(src, 'sound/weapons/genhit.ogg', 50, 1)
+ ReplaceWithLattice()
+ else
+ to_chat(user, "You need one rod to build a lattice.")
+ return
+ if(istype(C, /obj/item/stack/tile/plasteel))
+ if(!CanCoverUp())
+ return
+ var/obj/structure/lattice/L = locate(/obj/structure/lattice, src)
+ if(L)
+ var/obj/item/stack/tile/plasteel/S = C
+ if(S.use(1))
+ qdel(L)
+ playsound(src, 'sound/weapons/genhit.ogg', 50, 1)
+ to_chat(user, "You build a floor.")
+ PlaceOnTop(/turf/open/floor/plating)
+ else
+ to_chat(user, "You need one floor tile to build a floor!")
+ else
+ to_chat(user, "The plating is going to need some support! Place metal rods first.")
diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm
index 9ebe8f3c190c..3e2f90c7c94a 100644
--- a/code/game/turfs/space/space.dm
+++ b/code/game/turfs/space/space.dm
@@ -19,7 +19,6 @@
dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
bullet_bounce_sound = null
-
/turf/open/space/basic/New() //Do not convert to Initialize
//This is used to optimize the map loader
return
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index c672f00fe9ed..d3c49ab8b34c 100755
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -39,7 +39,7 @@
return FALSE
. = ..()
-/turf/Initialize()
+/turf/Initialize(mapload)
if(flags_1 & INITIALIZED_1)
stack_trace("Warning: [src]([type]) initialized multiple times!")
flags_1 |= INITIALIZED_1
@@ -68,6 +68,15 @@
if (light_power && light_range)
update_light()
+ var/turf/T = SSmapping.get_turf_above(src)
+ if(T)
+ T.multiz_turf_new(src, DOWN)
+ SEND_SIGNAL(T, COMSIG_TURF_MULTIZ_NEW, src, DOWN)
+ T = SSmapping.get_turf_below(src)
+ if(T)
+ T.multiz_turf_new(src, UP)
+ SEND_SIGNAL(T, COMSIG_TURF_MULTIZ_NEW, src, UP)
+
if (opacity)
has_opaque_atom = TRUE
@@ -83,6 +92,12 @@
if(!changing_turf)
stack_trace("Incorrect turf deletion")
changing_turf = FALSE
+ var/turf/T = SSmapping.get_turf_above(src)
+ if(T)
+ T.multiz_turf_del(src, DOWN)
+ T = SSmapping.get_turf_below(src)
+ if(T)
+ T.multiz_turf_del(src, UP)
if(force)
..()
//this will completely wipe turf state
@@ -105,6 +120,54 @@
return
user.Move_Pulled(src)
+/turf/proc/multiz_turf_del(turf/T, dir)
+
+/turf/proc/multiz_turf_new(turf/T, dir)
+
+//zPassIn doesn't necessarily pass an atom!
+//direction is direction of travel of air
+/turf/proc/zPassIn(atom/movable/A, direction, turf/source)
+ return FALSE
+
+//direction is direction of travel of air
+/turf/proc/zPassOut(atom/movable/A, direction, turf/destination)
+ return FALSE
+
+//direction is direction of travel of air
+/turf/proc/zAirIn(direction, turf/source)
+ return FALSE
+
+//direction is direction of travel of air
+/turf/proc/zAirOut(direction, turf/source)
+ return FALSE
+
+/turf/proc/zImpact(atom/movable/A, levels = 1)
+ for(var/i in contents)
+ var/atom/thing = i
+ if(thing.intercept_zImpact(A, levels))
+ return FALSE
+ if(zFall(A, ++levels))
+ return FALSE
+ A.visible_message("[A] crashes into [src]!")
+ A.onZImpact(src, levels)
+ return TRUE
+
+/turf/proc/can_zFall(atom/movable/A, levels = 1, turf/target)
+ return zPassOut(A, DOWN, target) && target.zPassIn(A, DOWN, src)
+
+/turf/proc/zFall(atom/movable/A, levels = 1, force = FALSE)
+ var/turf/target = get_step_multiz(src, DOWN)
+ if(!target || (!isobj(A) && !ismob(A)))
+ return FALSE
+ if(!force && (!can_zFall(A, levels, target) || !A.can_zFall(src, levels, target, DOWN)))
+ return FALSE
+ A.visible_message("[A] falls through [src]!")
+ A.zfalling = TRUE
+ A.forceMove(target)
+ A.zfalling = FALSE
+ target.zImpact(A, levels)
+ return TRUE
+
/turf/proc/handleRCL(obj/item/twohanded/rcl/C, mob/user)
if(C.loaded)
for(var/obj/structure/cable/LC in src)
@@ -193,6 +256,8 @@
var/obj/O = AM
if(O.obj_flags & FROZEN)
O.make_unfrozen()
+ if(!AM.zfalling)
+ zFall(AM)
/turf/proc/is_plasteel_floor()
return FALSE
diff --git a/code/modules/atmospherics/environmental/LINDA_system.dm b/code/modules/atmospherics/environmental/LINDA_system.dm
index 084c35684cd5..828008baa008 100644
--- a/code/modules/atmospherics/environmental/LINDA_system.dm
+++ b/code/modules/atmospherics/environmental/LINDA_system.dm
@@ -1,4 +1,6 @@
/atom/var/CanAtmosPass = ATMOS_PASS_YES
+/atom/var/CanAtmosPassVertical = ATMOS_PASS_YES
+
/atom/proc/CanAtmosPass(turf/T)
switch (CanAtmosPass)
if (ATMOS_PASS_PROC)
@@ -8,42 +10,45 @@
else
return CanAtmosPass
-/turf/closed/CanAtmosPass = ATMOS_PASS_NO
+/turf/CanAtmosPass = ATMOS_PASS_NO
+/turf/CanAtmosPassVertical = ATMOS_PASS_NO
/turf/open/CanAtmosPass = ATMOS_PASS_PROC
-/turf/open/CanAtmosPass(turf/T)
- var/R
+/turf/open/CanAtmosPassVertical = ATMOS_PASS_PROC
+
+/turf/open/CanAtmosPass(turf/T, vertical = FALSE)
+ var/dir = vertical? get_dir_multiz(src, T) : get_dir(src, T)
+ var/opp = dir_inverse_multiz(dir)
+ var/R = FALSE
+ if(vertical && !(zAirOut(dir, T) && T.zAirIn(dir, src)))
+ R = TRUE
if(blocks_air || T.blocks_air)
- R = 1
+ R = TRUE
for(var/obj/O in contents+T.contents)
var/turf/other = (O.loc == src ? T : src)
- if(!CANATMOSPASS(O, other))
- R = 1
+ if(!(vertical? (CANVERTICALATMOSPASS(O, other)) : (CANATMOSPASS(O, other))))
+ R = TRUE
if(O.BlockSuperconductivity()) //the direction and open/closed are already checked on CanAtmosPass() so there are no arguments
- var/D = get_dir(src, T)
- atmos_supeconductivity |= D
- D = get_dir(T, src)
- T.atmos_supeconductivity |= D
- return 0 //no need to keep going, we got all we asked
+ atmos_supeconductivity |= dir
+ T.atmos_supeconductivity |= opp
+ return FALSE //no need to keep going, we got all we asked
- atmos_supeconductivity &= ~get_dir(src, T)
- T.atmos_supeconductivity &= ~get_dir(T, src)
+ atmos_supeconductivity &= ~dir
+ T.atmos_supeconductivity &= ~opp
return !R
-
-
/atom/movable/proc/BlockSuperconductivity() // objects that block air and don't let superconductivity act. Only firelocks atm.
- return 0
+ return FALSE
/turf/proc/CalculateAdjacentTurfs()
var/list/atmos_adjacent_turfs = src.atmos_adjacent_turfs
- for(var/direction in GLOB.cardinals)
- var/turf/T = get_step(src, direction)
- if(!T)
+ for(var/direction in GLOB.cardinals_multiz)
+ var/turf/T = get_step_multiz(src, direction)
+ if(!isopenturf(T))
continue
- if( !(blocks_air || T.blocks_air) && CANATMOSPASS(T, src) )
+ if(!(blocks_air || T.blocks_air) && ((direction & (UP|DOWN))? (CANVERTICALATMOSPASS(T, src)) : (CANATMOSPASS(T, src))) )
LAZYINITLIST(atmos_adjacent_turfs)
LAZYINITLIST(T.atmos_adjacent_turfs)
atmos_adjacent_turfs[T] = TRUE
@@ -72,11 +77,13 @@
var/turf/curloc = src
- for (var/direction in GLOB.diagonals)
+ for (var/direction in GLOB.diagonals_multiz)
var/matchingDirections = 0
- var/turf/S = get_step(curloc, direction)
+ var/turf/S = get_step_multiz(curloc, direction)
+ if(!S)
+ continue
- for (var/checkDirection in GLOB.cardinals)
+ for (var/checkDirection in GLOB.cardinals_multiz)
var/turf/checkTurf = get_step(S, checkDirection)
if(!S.atmos_adjacent_turfs || !S.atmos_adjacent_turfs[checkTurf])
continue
diff --git a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm
index b88efc6c6826..667dca7fb9ec 100644
--- a/code/modules/atmospherics/environmental/LINDA_turf_tile.dm
+++ b/code/modules/atmospherics/environmental/LINDA_turf_tile.dm
@@ -42,8 +42,7 @@
/turf/open/Destroy()
if(active_hotspot)
- qdel(active_hotspot)
- active_hotspot = null
+ QDEL_NULL(active_hotspot)
// Adds the adjacent turfs to the current atmos processing
for(var/T in atmos_adjacent_turfs)
SSair.add_to_active(T)
diff --git a/code/modules/mapping/space_management/multiz_helpers.dm b/code/modules/mapping/space_management/multiz_helpers.dm
new file mode 100644
index 000000000000..04415d0c1fd6
--- /dev/null
+++ b/code/modules/mapping/space_management/multiz_helpers.dm
@@ -0,0 +1,47 @@
+/proc/get_step_multiz(ref, dir)
+ if(dir & UP)
+ dir &= ~UP
+ return get_step(SSmapping.get_turf_above(get_turf(ref)), dir)
+ if(dir & DOWN)
+ dir &= ~DOWN
+ return get_step(SSmapping.get_turf_below(get_turf(ref)), dir)
+ return get_step(ref, dir)
+
+/proc/get_dir_multiz(turf/us, turf/them)
+ us = get_turf(us)
+ them = get_turf(them)
+ if(!us || !them)
+ return NONE
+ if(us.z == them.z)
+ return get_dir(us, them)
+ else
+ var/turf/T = us.above()
+ var/dir = NONE
+ if(T && (T.z == them.z))
+ dir = UP
+ else
+ T = us.below()
+ if(T && (T.z == them.z))
+ dir = DOWN
+ else
+ return get_dir(us, them)
+ return (dir | get_dir(us, them))
+
+/turf/proc/above()
+ return get_step_multiz(src, UP)
+
+/turf/proc/below()
+ return get_step_multiz(src, DOWN)
+
+/proc/dir_inverse_multiz(dir)
+ var/holder = dir & (UP|DOWN)
+ if((holder == NONE) || (holder == (UP|DOWN)))
+ return turn(dir, 180)
+ dir &= ~(UP|DOWN)
+ dir = turn(dir, 180)
+ if(holder == UP)
+ holder = DOWN
+ else
+ holder = UP
+ dir |= holder
+ return dir
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index a77df079a915..fe9ea2ce29dc 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -15,6 +15,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER)
see_in_dark = 100
invisibility = INVISIBILITY_OBSERVER
hud_type = /datum/hud/ghost
+ movement_type = GROUND | FLYING
var/can_reenter_corpse
var/datum/hud/living/carbon/hud = null // hud
var/bootime = 0
diff --git a/code/modules/mob/dead/observer/observer_movement.dm b/code/modules/mob/dead/observer/observer_movement.dm
new file mode 100644
index 000000000000..7ed0c9d9eecd
--- /dev/null
+++ b/code/modules/mob/dead/observer/observer_movement.dm
@@ -0,0 +1,2 @@
+/mob/dead/observer/canZMove(direction, turf/target)
+ return TRUE
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index c6e465888a02..93072762a60c 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -40,6 +40,15 @@
QDEL_LIST(diseases)
return ..()
+/mob/living/onZImpact(turf/T, levels)
+ ZImpactDamage(T, levels)
+ return ..()
+
+/mob/living/proc/ZImpactDamage(turf/T, levels)
+ visible_message("[src] crashes into [T] with a sickening noise!")
+ adjustBruteLoss((levels * 5) ** 1.5)
+ Knockdown(levels * 50)
+
/mob/living/proc/OpenCraftingMenu()
return
diff --git a/code/modules/mob/living/living_movement.dm b/code/modules/mob/living/living_movement.dm
index 16c3aa6050b5..4cf5fd27496b 100644
--- a/code/modules/mob/living/living_movement.dm
+++ b/code/modules/mob/living/living_movement.dm
@@ -25,3 +25,9 @@
add_movespeed_modifier(MOVESPEED_ID_LIVING_TURF_SPEEDMOD, TRUE, 100, override = TRUE, multiplicative_slowdown = T.slowdown)
else
remove_movespeed_modifier(MOVESPEED_ID_LIVING_TURF_SPEEDMOD)
+
+/mob/living/can_zFall(turf/T, levels)
+ return !(movement_type & FLYING)
+
+/mob/living/canZMove(dir, turf/target)
+ return can_zTravel(target, dir) && (movement_type & FLYING)
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index 6d6ab46ee00c..0488e7da4430 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -373,3 +373,35 @@
if(hud_used && hud_used.static_inventory)
for(var/obj/screen/mov_intent/selector in hud_used.static_inventory)
selector.update_icon(src)
+
+/mob/verb/up()
+ set name = "Move Upwards"
+ set category = "IC"
+
+ if(zMove(UP, TRUE))
+ to_chat(src, "You move upwards.")
+
+/mob/verb/down()
+ set name = "Move Down"
+ set category = "IC"
+
+ if(zMove(DOWN, TRUE))
+ to_chat(src, "You move down.")
+
+/mob/proc/zMove(dir, feedback = FALSE)
+ if(dir != UP && dir != DOWN)
+ return FALSE
+ var/turf/target = get_step_multiz(src, dir)
+ if(!target)
+ if(feedback)
+ to_chat(src, "There's nothing in that direction!")
+ return FALSE
+ if(!canZMove(dir, target))
+ if(feedback)
+ to_chat(src, "You couldn't move there!")
+ return FALSE
+ forceMove(target)
+ return TRUE
+
+/mob/proc/canZMove(direction, turf/target)
+ return FALSE
diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm
index f9011930bed5..16d09ed952a8 100644
--- a/code/modules/shuttle/shuttle.dm
+++ b/code/modules/shuttle/shuttle.dm
@@ -33,6 +33,9 @@
else
return QDEL_HINT_LETMELIVE
+/obj/docking_port/has_gravity(turf/T)
+ return FALSE
+
/obj/docking_port/take_damage()
return
diff --git a/config/maps.txt b/config/maps.txt
index 1878a625e354..403151483e5a 100644
--- a/config/maps.txt
+++ b/config/maps.txt
@@ -42,3 +42,6 @@ endmap
map runtimestation
endmap
+
+map multiz_debug
+endmap
diff --git a/icons/obj/stairs.dmi b/icons/obj/stairs.dmi
new file mode 100644
index 000000000000..615e88f68455
Binary files /dev/null and b/icons/obj/stairs.dmi differ
diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi
index 518adfc7661d..08783a9f708a 100644
Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index 65f5402f717b..7756fc39c746 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -14,6 +14,7 @@
// BEGIN_INCLUDE
#include "_maps\_basemap.dm"
+#include "_maps\multiz_debug.dm"
#include "code\_compile_options.dm"
#include "code\world.dm"
#include "code\__DEFINES\_globals.dm"
@@ -995,6 +996,7 @@
#include "code\game\objects\structures\showcase.dm"
#include "code\game\objects\structures\spawner.dm"
#include "code\game\objects\structures\spirit_board.dm"
+#include "code\game\objects\structures\stairs.dm"
#include "code\game\objects\structures\statues.dm"
#include "code\game\objects\structures\table_frames.dm"
#include "code\game\objects\structures\tables_racks.dm"
@@ -1050,6 +1052,7 @@
#include "code\game\turfs\closed.dm"
#include "code\game\turfs\open.dm"
#include "code\game\turfs\turf.dm"
+#include "code\game\turfs\openspace\openspace.dm"
#include "code\game\turfs\simulated\chasm.dm"
#include "code\game\turfs\simulated\dirtystation.dm"
#include "code\game\turfs\simulated\floor.dm"
@@ -1782,6 +1785,7 @@
#include "code\modules\mapping\reader.dm"
#include "code\modules\mapping\ruins.dm"
#include "code\modules\mapping\verify.dm"
+#include "code\modules\mapping\space_management\multiz_helpers.dm"
#include "code\modules\mapping\space_management\space_level.dm"
#include "code\modules\mapping\space_management\space_reservation.dm"
#include "code\modules\mapping\space_management\space_transition.dm"
@@ -1848,6 +1852,7 @@
#include "code\modules\mob\dead\observer\logout.dm"
#include "code\modules\mob\dead\observer\notificationprefs.dm"
#include "code\modules\mob\dead\observer\observer.dm"
+#include "code\modules\mob\dead\observer\observer_movement.dm"
#include "code\modules\mob\dead\observer\say.dm"
#include "code\modules\mob\living\blood.dm"
#include "code\modules\mob\living\bloodcrawl.dm"