diff --git a/.travis.yml b/.travis.yml
index e4443d14ee0..74ac9fedb9f 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -52,8 +52,6 @@ jobs:
- libstdc++6:i386
- libssl-dev:i386
- gcc-multilib
- - g++-7
- - g++-7-multilib
- pkg-config:i386
- zlib1g-dev:i386
cache:
@@ -61,6 +59,8 @@ jobs:
- $HOME/.cargo
- $HOME/.rustup
- $HOME/BYOND
+ before_install:
+ - 'sudo apt-get -qq update'
install:
- tools/travis/install_byond.sh
- source $HOME/BYOND/byond/bin/byondsetup
diff --git a/_maps/map_files/Delta/delta.dmm b/_maps/map_files/Delta/delta.dmm
index 02f36f5ea40..28907e9e05e 100644
--- a/_maps/map_files/Delta/delta.dmm
+++ b/_maps/map_files/Delta/delta.dmm
@@ -47144,7 +47144,7 @@
pixel_y = 3
},
/obj/item/circuitboard/powermonitor,
-/obj/item/circuitboard/stationalert_all{
+/obj/item/circuitboard/stationalert{
pixel_x = 3;
pixel_y = -3
},
diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
index bcbbe8b2351..4152ad16382 100644
--- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
@@ -31415,7 +31415,7 @@
pixel_x = -2;
pixel_y = 2
},
-/obj/item/circuitboard/stationalert_all{
+/obj/item/circuitboard/stationalert{
pixel_x = 1;
pixel_y = -1
},
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/debris1.dmm b/_maps/map_files/RandomRuins/SpaceRuins/debris1.dmm
new file mode 100644
index 00000000000..af01a5bc274
--- /dev/null
+++ b/_maps/map_files/RandomRuins/SpaceRuins/debris1.dmm
@@ -0,0 +1,614 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"b" = (
+/obj/structure/disposalpipe/segment,
+/turf/space,
+/area/space)
+"c" = (
+/obj/structure/lattice,
+/obj/structure/disposalpipe/broken{
+ dir = 1
+ },
+/turf/space,
+/area/space)
+"d" = (
+/obj/structure/lattice,
+/turf/space,
+/area/template_noop)
+"e" = (
+/obj/structure/grille/broken,
+/turf/space,
+/area/space)
+"g" = (
+/obj/structure/disposalpipe/broken{
+ dir = 4
+ },
+/turf/space,
+/area/space)
+"h" = (
+/obj/structure/disposalpipe/broken{
+ dir = 8
+ },
+/obj/item/stack/cable_coil/cut,
+/turf/space,
+/area/space)
+"l" = (
+/obj/item/stack/cable_coil/cut,
+/turf/space,
+/area/space)
+"m" = (
+/obj/effect/spawner/random_spawners/grille_often,
+/turf/space,
+/area/space)
+"n" = (
+/obj/effect/spawner/random_spawners/grille_maybe,
+/turf/space,
+/area/space)
+"o" = (
+/obj/random/tool,
+/turf/space,
+/area/space)
+"p" = (
+/obj/structure/girder/displaced,
+/turf/space,
+/area/space)
+"r" = (
+/turf/space,
+/area/template_noop)
+"t" = (
+/obj/structure/cable{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/turf/space,
+/area/space)
+"u" = (
+/obj/structure/door_assembly/door_assembly_sec,
+/obj/item/airlock_electronics,
+/turf/space,
+/area/space)
+"v" = (
+/obj/structure/lattice,
+/turf/space,
+/area/space)
+"x" = (
+/obj/structure/disposalpipe/junction,
+/turf/space,
+/area/space)
+"y" = (
+/turf/simulated/floor/plating/burnt,
+/area/space)
+"z" = (
+/obj/item/stack/sheet/metal,
+/turf/simulated/floor/plating,
+/area/space)
+"B" = (
+/obj/structure/lattice,
+/obj/item/stack/sheet/metal,
+/turf/space,
+/area/space)
+"C" = (
+/obj/structure/disposalpipe/broken{
+ dir = 1
+ },
+/turf/space,
+/area/space)
+"D" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/turf/simulated/floor/plating/burnt,
+/area/space)
+"E" = (
+/obj/item/stack/rods,
+/turf/space,
+/area/space)
+"F" = (
+/turf/simulated/floor/plating,
+/area/space)
+"G" = (
+/obj/random/toolbox,
+/turf/simulated/floor/plating/burnt,
+/area/space)
+"I" = (
+/obj/structure/grille/broken,
+/obj/structure/lattice,
+/turf/space,
+/area/space)
+"J" = (
+/obj/structure/disposalpipe/broken,
+/turf/space,
+/area/space)
+"K" = (
+/obj/item/shard,
+/turf/space,
+/area/space)
+"N" = (
+/obj/structure/lattice,
+/obj/structure/lattice,
+/turf/space,
+/area/space)
+"O" = (
+/obj/machinery/power/apc/worn_out{
+ pixel_y = -24
+ },
+/obj/structure/cable,
+/turf/simulated/floor/plating,
+/area/space)
+"Q" = (
+/obj/effect/decal/cleanable/shreds{
+ pixel_x = 4;
+ pixel_y = 3
+ },
+/turf/simulated/floor/plating,
+/area/space)
+"T" = (
+/obj/structure/girder,
+/turf/simulated/floor/plating/burnt,
+/area/space)
+"U" = (
+/obj/effect/spawner/random_barrier/wall_probably,
+/turf/space,
+/area/space)
+"V" = (
+/turf/simulated/wall,
+/area/space)
+"X" = (
+/turf/space,
+/area/space)
+"Y" = (
+/obj/item/shard,
+/turf/simulated/floor/plating,
+/area/space)
+"Z" = (
+/obj/item/stack/sheet/metal,
+/turf/space,
+/area/space)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+a
+r
+r
+r
+r
+r
+r
+r
+r
+r
+d
+d
+d
+r
+r
+d
+r
+a
+a
+"}
+(3,1,1) = {"
+a
+d
+v
+X
+X
+X
+X
+X
+X
+X
+X
+X
+X
+X
+X
+X
+X
+X
+r
+a
+"}
+(4,1,1) = {"
+a
+d
+X
+m
+X
+X
+X
+X
+X
+X
+X
+X
+X
+X
+v
+Z
+X
+X
+d
+a
+"}
+(5,1,1) = {"
+a
+r
+X
+g
+F
+X
+E
+I
+X
+X
+v
+X
+F
+v
+v
+X
+X
+X
+r
+a
+"}
+(6,1,1) = {"
+a
+r
+J
+x
+C
+E
+v
+F
+X
+E
+X
+v
+g
+Z
+X
+X
+F
+X
+r
+a
+"}
+(7,1,1) = {"
+a
+r
+X
+X
+y
+E
+X
+E
+Y
+X
+n
+X
+h
+E
+F
+X
+v
+X
+r
+a
+"}
+(8,1,1) = {"
+a
+r
+X
+X
+X
+B
+l
+p
+X
+X
+y
+p
+X
+X
+X
+E
+X
+X
+r
+a
+"}
+(9,1,1) = {"
+a
+r
+X
+v
+X
+o
+X
+X
+Z
+l
+X
+E
+a
+X
+X
+V
+X
+X
+r
+a
+"}
+(10,1,1) = {"
+a
+r
+X
+Z
+Q
+v
+X
+y
+v
+D
+y
+U
+X
+X
+E
+X
+X
+n
+r
+a
+"}
+(11,1,1) = {"
+a
+r
+X
+X
+I
+v
+v
+X
+v
+t
+O
+V
+X
+X
+F
+E
+Z
+X
+d
+a
+"}
+(12,1,1) = {"
+a
+r
+X
+X
+X
+X
+J
+b
+c
+v
+G
+V
+X
+E
+e
+X
+X
+X
+r
+a
+"}
+(13,1,1) = {"
+a
+r
+X
+X
+X
+V
+X
+Z
+X
+X
+X
+u
+X
+X
+X
+X
+e
+Z
+r
+a
+"}
+(14,1,1) = {"
+a
+r
+X
+X
+X
+X
+v
+X
+v
+N
+E
+E
+K
+X
+v
+o
+X
+X
+r
+a
+"}
+(15,1,1) = {"
+a
+r
+X
+E
+X
+X
+X
+X
+E
+J
+C
+X
+X
+X
+X
+X
+X
+X
+d
+a
+"}
+(16,1,1) = {"
+a
+r
+X
+X
+E
+X
+T
+X
+Z
+X
+n
+v
+X
+z
+n
+X
+Z
+X
+d
+a
+"}
+(17,1,1) = {"
+a
+r
+X
+X
+X
+X
+X
+X
+X
+X
+F
+X
+X
+X
+p
+X
+X
+X
+r
+a
+"}
+(18,1,1) = {"
+a
+r
+X
+X
+X
+X
+X
+X
+X
+X
+X
+X
+X
+v
+X
+X
+X
+X
+r
+a
+"}
+(19,1,1) = {"
+a
+a
+r
+r
+r
+r
+d
+r
+d
+r
+r
+r
+r
+r
+r
+r
+r
+r
+a
+a
+"}
+(20,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/debris2.dmm b/_maps/map_files/RandomRuins/SpaceRuins/debris2.dmm
new file mode 100644
index 00000000000..6a6cd81f32a
--- /dev/null
+++ b/_maps/map_files/RandomRuins/SpaceRuins/debris2.dmm
@@ -0,0 +1,631 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"b" = (
+/turf/simulated/floor/plating/airless,
+/area/space)
+"c" = (
+/turf/simulated/floor/plasteel/airless,
+/area/space)
+"d" = (
+/turf/simulated/wall/r_wall,
+/area/space)
+"e" = (
+/obj/item/stack/cable_coil/cut,
+/turf/space,
+/area/template_noop)
+"h" = (
+/obj/structure/girder,
+/turf/space,
+/area/template_noop)
+"j" = (
+/obj/structure/grille/broken,
+/turf/space,
+/area/space)
+"l" = (
+/obj/structure/girder,
+/turf/simulated/floor/plating,
+/area/space)
+"m" = (
+/obj/structure/grille/broken,
+/turf/template_noop,
+/area/space)
+"n" = (
+/obj/item/stack/cable_coil/cut,
+/turf/template_noop,
+/area/space)
+"o" = (
+/obj/machinery/door/airlock/command{
+ max_integrity = 40
+ },
+/turf/simulated/floor/plating/burnt,
+/area/space)
+"p" = (
+/mob/living/simple_animal/hostile/carp,
+/turf/space,
+/area/template_noop)
+"q" = (
+/obj/structure/lattice,
+/turf/space,
+/area/space)
+"s" = (
+/obj/item/stack/rods,
+/turf/space,
+/area/template_noop)
+"t" = (
+/obj/structure/door_assembly/door_assembly_com,
+/turf/space,
+/area/template_noop)
+"u" = (
+/obj/item/clothing/head/bio_hood/virology,
+/turf/space,
+/area/space)
+"w" = (
+/obj/structure/lattice,
+/turf/template_noop,
+/area/space)
+"x" = (
+/turf/template_noop,
+/area/space)
+"y" = (
+/obj/structure/lattice,
+/obj/structure/door_assembly/door_assembly_vault{
+ anchored = 1
+ },
+/turf/simulated/floor/plating,
+/area/space)
+"z" = (
+/obj/item/stack/rods,
+/turf/template_noop,
+/area/space)
+"A" = (
+/obj/structure/closet/crate,
+/obj/item/reagent_containers/glass/beaker/bluespace,
+/turf/simulated/floor/plasteel/airless,
+/area/space)
+"B" = (
+/obj/item/shard{
+ icon_state = "small"
+ },
+/turf/space,
+/area/space)
+"C" = (
+/obj/item/stack/sheet/metal,
+/turf/space,
+/area/template_noop)
+"D" = (
+/obj/effect/landmark/burnturf,
+/turf/simulated/floor/plating/airless,
+/area/space)
+"E" = (
+/obj/item/reagent_containers/glass/beaker/large,
+/turf/space,
+/area/template_noop)
+"F" = (
+/obj/effect/landmark/burnturf,
+/turf/simulated/floor,
+/area/space)
+"G" = (
+/obj/structure/safe,
+/obj/item/stack/sheet/mineral/bananium{
+ amount = 5
+ },
+/obj/item/stack/ore/bluespace_crystal/refined{
+ amount = 3
+ },
+/obj/item/dnainjector/comic,
+/turf/simulated/floor/plasteel/airless,
+/area/space)
+"H" = (
+/obj/structure/table,
+/obj/item/shard{
+ icon_state = "medium"
+ },
+/turf/simulated/floor/plasteel/airless,
+/area/space)
+"I" = (
+/turf/space,
+/area/template_noop)
+"J" = (
+/mob/living/simple_animal/hostile/carp,
+/turf/space,
+/area/space)
+"L" = (
+/obj/item/shard,
+/turf/space,
+/area/space)
+"M" = (
+/turf/simulated/floor,
+/area/space)
+"N" = (
+/obj/item/clothing/suit/bio_suit/virology,
+/turf/space,
+/area/space)
+"O" = (
+/obj/item/shard{
+ icon_state = "small"
+ },
+/turf/space,
+/area/template_noop)
+"P" = (
+/obj/item/reagent_containers/spray/cleaner,
+/turf/space,
+/area/space)
+"R" = (
+/obj/item/stack/sheet/metal,
+/turf/template_noop,
+/area/space)
+"S" = (
+/obj/item/reagent_containers/spray/cleaner,
+/turf/space,
+/area/template_noop)
+"T" = (
+/turf/simulated/wall,
+/area/space)
+"U" = (
+/obj/effect/landmark/burnturf,
+/turf/simulated/floor/plasteel/airless,
+/area/space)
+"V" = (
+/obj/structure/lattice,
+/turf/space,
+/area/template_noop)
+"W" = (
+/obj/effect/landmark/burnturf,
+/turf/simulated/floor/plating/burnt,
+/area/space)
+"X" = (
+/turf/space,
+/area/space)
+"Y" = (
+/obj/structure/girder/reinforced,
+/turf/simulated/floor/plating/damaged,
+/area/space)
+"Z" = (
+/obj/machinery/computer/pandemic{
+ circuit = /obj/effect/decal/cleanable/shreds
+ },
+/turf/simulated/floor/plasteel/airless,
+/area/space)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+d
+d
+d
+d
+d
+Y
+x
+S
+I
+I
+I
+I
+I
+I
+C
+I
+I
+I
+a
+"}
+(3,1,1) = {"
+a
+d
+G
+A
+U
+F
+d
+z
+T
+T
+T
+T
+o
+T
+I
+p
+O
+I
+I
+a
+"}
+(4,1,1) = {"
+a
+Y
+c
+U
+c
+U
+d
+X
+w
+M
+c
+U
+M
+T
+V
+I
+I
+I
+I
+a
+"}
+(5,1,1) = {"
+a
+Y
+M
+F
+F
+q
+d
+z
+m
+F
+M
+F
+M
+T
+I
+I
+I
+I
+I
+a
+"}
+(6,1,1) = {"
+a
+d
+d
+y
+d
+d
+Y
+X
+w
+X
+n
+X
+w
+T
+I
+I
+I
+C
+I
+a
+"}
+(7,1,1) = {"
+a
+X
+X
+X
+X
+X
+P
+J
+X
+T
+T
+T
+x
+T
+I
+I
+V
+I
+I
+a
+"}
+(8,1,1) = {"
+a
+X
+X
+X
+X
+X
+X
+X
+R
+X
+w
+X
+b
+x
+x
+I
+I
+I
+I
+a
+"}
+(9,1,1) = {"
+a
+p
+s
+T
+m
+w
+T
+R
+X
+B
+X
+w
+X
+x
+z
+I
+s
+I
+I
+a
+"}
+(10,1,1) = {"
+a
+s
+I
+T
+M
+F
+T
+X
+X
+X
+X
+X
+X
+x
+x
+I
+I
+I
+I
+a
+"}
+(11,1,1) = {"
+a
+I
+I
+T
+c
+F
+T
+X
+X
+c
+F
+b
+j
+D
+T
+I
+I
+I
+t
+a
+"}
+(12,1,1) = {"
+a
+C
+I
+T
+X
+M
+N
+s
+I
+I
+L
+q
+q
+b
+T
+I
+s
+I
+I
+a
+"}
+(13,1,1) = {"
+a
+I
+I
+l
+T
+T
+T
+I
+I
+u
+j
+W
+c
+U
+T
+I
+I
+I
+I
+a
+"}
+(14,1,1) = {"
+a
+I
+s
+p
+I
+I
+I
+I
+p
+I
+I
+c
+H
+Z
+T
+I
+I
+I
+I
+a
+"}
+(15,1,1) = {"
+a
+V
+I
+I
+s
+V
+C
+I
+I
+s
+h
+T
+T
+T
+T
+I
+I
+I
+I
+a
+"}
+(16,1,1) = {"
+a
+I
+I
+E
+I
+I
+V
+I
+O
+I
+V
+I
+I
+I
+I
+I
+C
+I
+I
+a
+"}
+(17,1,1) = {"
+a
+I
+I
+C
+I
+e
+I
+I
+I
+I
+I
+e
+I
+V
+I
+I
+I
+I
+I
+a
+"}
+(18,1,1) = {"
+a
+I
+I
+I
+I
+I
+I
+h
+I
+I
+C
+I
+I
+I
+I
+I
+I
+I
+I
+a
+"}
+(19,1,1) = {"
+a
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+I
+C
+I
+I
+I
+I
+a
+"}
+(20,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/debris3.dmm b/_maps/map_files/RandomRuins/SpaceRuins/debris3.dmm
new file mode 100644
index 00000000000..54d8725b3c4
--- /dev/null
+++ b/_maps/map_files/RandomRuins/SpaceRuins/debris3.dmm
@@ -0,0 +1,824 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"b" = (
+/obj/item/stack/rods,
+/turf/simulated/floor/plating/damaged,
+/area/template_noop)
+"c" = (
+/obj/item/trash/popcorn,
+/turf/space,
+/area/template_noop)
+"d" = (
+/obj/effect/spawner/random_spawners/wall_rusted_maybe,
+/turf/space,
+/area/template_noop)
+"e" = (
+/obj/item/poster/random_contraband,
+/turf/space,
+/area/template_noop)
+"f" = (
+/obj/structure/lattice,
+/obj/item/stack/sheet/metal,
+/turf/space,
+/area/template_noop)
+"g" = (
+/obj/item/paperplane,
+/turf/space,
+/area/template_noop)
+"h" = (
+/obj/item/trash/can,
+/turf/space,
+/area/template_noop)
+"i" = (
+/obj/item/stack/rods,
+/turf/template_noop,
+/area/template_noop)
+"k" = (
+/obj/item/shard,
+/turf/space,
+/area/template_noop)
+"l" = (
+/obj/item/stack/cable_coil{
+ amount = 10
+ },
+/turf/space,
+/area/template_noop)
+"m" = (
+/turf/simulated/wall,
+/area/template_noop)
+"n" = (
+/obj/item/stack/sheet/glass,
+/turf/space,
+/area/template_noop)
+"p" = (
+/obj/random/plushie,
+/turf/space,
+/area/template_noop)
+"q" = (
+/obj/item/stack/rods,
+/obj/item/stack/sheet/metal,
+/turf/space,
+/area/template_noop)
+"t" = (
+/obj/machinery/computer/arcade/battle,
+/turf/simulated/floor/plasteel/airless,
+/area/template_noop)
+"u" = (
+/obj/random/tool,
+/turf/space,
+/area/template_noop)
+"v" = (
+/obj/item/trash/syndi_cakes,
+/turf/space,
+/area/template_noop)
+"w" = (
+/obj/item/stack/tickets,
+/turf/space,
+/area/template_noop)
+"x" = (
+/obj/structure/bookcase/random/fiction,
+/turf/simulated/floor/plating/damaged,
+/area/template_noop)
+"y" = (
+/obj/item/storage/pill_bottle/random_meds/labelled,
+/turf/space,
+/area/template_noop)
+"z" = (
+/turf/simulated/floor/plating/damaged,
+/area/template_noop)
+"A" = (
+/turf/space,
+/area/template_noop)
+"B" = (
+/obj/item/stack/rods,
+/turf/space,
+/area/template_noop)
+"D" = (
+/obj/item/paper,
+/obj/item/paper,
+/turf/space,
+/area/template_noop)
+"F" = (
+/obj/random/tool,
+/turf/simulated/floor/plating/damaged,
+/area/template_noop)
+"G" = (
+/obj/item/poster/random_official,
+/turf/space,
+/area/template_noop)
+"H" = (
+/obj/item/stack/sheet/wood,
+/turf/space,
+/area/template_noop)
+"I" = (
+/obj/item/stack/rods,
+/obj/item/stack/rods,
+/turf/space,
+/area/template_noop)
+"J" = (
+/obj/item/trash/pistachios,
+/turf/space,
+/area/template_noop)
+"K" = (
+/obj/structure/lattice,
+/obj/structure/girder,
+/turf/space,
+/area/template_noop)
+"L" = (
+/obj/structure/girder,
+/turf/space,
+/area/template_noop)
+"M" = (
+/obj/item/stack/sheet/metal,
+/turf/space,
+/area/template_noop)
+"O" = (
+/obj/structure/girder/displaced,
+/turf/space,
+/area/template_noop)
+"S" = (
+/obj/structure/lattice,
+/turf/space,
+/area/template_noop)
+"U" = (
+/obj/item/stack/sheet/wood,
+/obj/item/stack/sheet/wood,
+/turf/space,
+/area/template_noop)
+"V" = (
+/obj/item/circuitboard/arcade,
+/turf/space,
+/area/template_noop)
+"W" = (
+/obj/item/stack/tickets,
+/obj/item/stack/tickets,
+/obj/item/stack/tickets,
+/turf/space,
+/area/template_noop)
+"Z" = (
+/obj/item/paper,
+/turf/space,
+/area/template_noop)
+
+(1,1,1) = {"
+a
+a
+a
+i
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+i
+a
+a
+a
+a
+a
+i
+a
+a
+a
+"}
+(3,1,1) = {"
+a
+a
+A
+A
+A
+A
+A
+A
+A
+A
+A
+A
+A
+A
+A
+A
+A
+A
+a
+a
+"}
+(4,1,1) = {"
+a
+a
+A
+B
+A
+B
+A
+A
+A
+A
+A
+A
+A
+A
+B
+B
+A
+A
+a
+a
+"}
+(5,1,1) = {"
+i
+a
+A
+A
+A
+A
+A
+w
+A
+M
+A
+A
+A
+A
+A
+A
+A
+A
+a
+i
+"}
+(6,1,1) = {"
+a
+a
+A
+A
+I
+A
+B
+A
+A
+B
+B
+M
+A
+A
+M
+A
+A
+A
+a
+a
+"}
+(7,1,1) = {"
+a
+a
+A
+A
+k
+A
+A
+O
+A
+A
+A
+A
+m
+A
+w
+A
+M
+A
+a
+a
+"}
+(8,1,1) = {"
+a
+a
+A
+B
+A
+M
+A
+A
+H
+A
+G
+n
+m
+A
+A
+B
+A
+A
+a
+a
+"}
+(9,1,1) = {"
+a
+a
+A
+A
+m
+A
+w
+A
+M
+S
+A
+A
+d
+B
+M
+A
+O
+A
+a
+a
+"}
+(10,1,1) = {"
+a
+a
+A
+w
+A
+A
+Z
+A
+W
+B
+S
+h
+M
+L
+A
+c
+A
+A
+a
+a
+"}
+(11,1,1) = {"
+a
+i
+B
+w
+A
+S
+A
+F
+A
+A
+S
+A
+Z
+A
+A
+A
+M
+A
+a
+a
+"}
+(12,1,1) = {"
+a
+a
+A
+A
+A
+A
+H
+L
+S
+m
+m
+b
+A
+A
+Z
+w
+B
+A
+i
+a
+"}
+(13,1,1) = {"
+a
+a
+A
+A
+B
+O
+A
+B
+A
+M
+A
+D
+K
+z
+S
+H
+B
+A
+a
+a
+"}
+(14,1,1) = {"
+a
+a
+A
+n
+A
+y
+f
+B
+A
+z
+B
+A
+m
+t
+A
+A
+A
+A
+a
+a
+"}
+(15,1,1) = {"
+a
+a
+A
+A
+z
+H
+A
+A
+A
+S
+A
+q
+z
+z
+A
+A
+O
+A
+a
+a
+"}
+(16,1,1) = {"
+a
+a
+A
+A
+S
+A
+S
+U
+B
+B
+A
+A
+S
+A
+M
+B
+u
+A
+a
+i
+"}
+(17,1,1) = {"
+a
+a
+A
+M
+H
+w
+Z
+B
+x
+S
+B
+S
+A
+k
+J
+A
+A
+A
+a
+a
+"}
+(18,1,1) = {"
+a
+a
+B
+A
+A
+A
+A
+A
+A
+w
+B
+z
+A
+O
+A
+M
+A
+A
+a
+a
+"}
+(19,1,1) = {"
+i
+a
+A
+A
+M
+z
+S
+w
+S
+M
+A
+m
+p
+A
+A
+B
+A
+A
+a
+a
+"}
+(20,1,1) = {"
+a
+a
+A
+B
+A
+O
+H
+v
+A
+V
+H
+A
+B
+L
+A
+M
+A
+w
+a
+a
+"}
+(21,1,1) = {"
+a
+a
+A
+A
+A
+A
+e
+M
+A
+w
+Z
+w
+B
+A
+w
+A
+A
+A
+a
+a
+"}
+(22,1,1) = {"
+a
+a
+A
+A
+M
+O
+m
+m
+L
+A
+B
+A
+A
+q
+A
+A
+A
+A
+a
+a
+"}
+(23,1,1) = {"
+a
+a
+A
+B
+k
+A
+B
+A
+B
+g
+n
+A
+O
+A
+A
+B
+B
+A
+a
+a
+"}
+(24,1,1) = {"
+a
+a
+A
+A
+A
+A
+A
+M
+A
+A
+l
+A
+w
+A
+A
+A
+A
+A
+a
+a
+"}
+(25,1,1) = {"
+a
+a
+A
+w
+B
+A
+A
+A
+A
+A
+A
+B
+A
+A
+A
+w
+A
+A
+a
+a
+"}
+(26,1,1) = {"
+a
+a
+A
+A
+A
+A
+A
+A
+B
+A
+B
+A
+A
+B
+A
+B
+A
+A
+a
+a
+"}
+(27,1,1) = {"
+a
+a
+B
+A
+w
+A
+B
+A
+w
+A
+B
+A
+A
+A
+A
+A
+A
+w
+a
+a
+"}
+(28,1,1) = {"
+a
+a
+A
+A
+A
+A
+A
+A
+A
+w
+A
+A
+A
+A
+A
+A
+A
+A
+a
+i
+"}
+(29,1,1) = {"
+i
+a
+a
+a
+a
+a
+a
+i
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(30,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+i
+a
+a
+"}
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/listeningpost.dmm b/_maps/map_files/RandomRuins/SpaceRuins/listeningpost.dmm
index 32d5ea2af1d..5607083f0a8 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/listeningpost.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/listeningpost.dmm
@@ -99,6 +99,12 @@
/obj/item/tank/air,
/turf/simulated/floor/plasteel,
/area/ruin/powered)
+"u" = (
+/obj/machinery/tcomms/relay/ruskie{
+ network_id = "LISTENINGOUTPOST-RELAY"
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/powered)
"w" = (
/obj/machinery/light/small,
/turf/simulated/floor/plasteel,
@@ -922,7 +928,7 @@ b
f
f
f
-c
+f
f
D
m
@@ -964,7 +970,7 @@ f
f
p
Y
-f
+u
f
j
i
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/syndiecakesfactory.dmm b/_maps/map_files/RandomRuins/SpaceRuins/syndiecakesfactory.dmm
new file mode 100644
index 00000000000..ec11a787510
--- /dev/null
+++ b/_maps/map_files/RandomRuins/SpaceRuins/syndiecakesfactory.dmm
@@ -0,0 +1,2284 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aM" = (
+/obj/item/stack/rods,
+/obj/item/stack/sheet/metal,
+/turf/template_noop,
+/area/space)
+"bb" = (
+/obj/structure/table/reinforced,
+/obj/item/stack/sheet/mineral/plasma,
+/obj/item/stack/sheet/mineral/plasma,
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"bk" = (
+/obj/structure/grille/broken,
+/turf/template_noop,
+/area/space)
+"cc" = (
+/obj/item/reagent_containers/food/snacks/syndicake,
+/obj/item/reagent_containers/food/snacks/syndicake,
+/obj/item/reagent_containers/food/snacks/syndicake,
+/turf/simulated/floor/plating,
+/area/space)
+"dy" = (
+/obj/structure/lattice,
+/turf/unsimulated,
+/area/template_noop)
+"es" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"eY" = (
+/turf/simulated/floor/plating,
+/area/ruin)
+"fq" = (
+/obj/machinery/autolathe,
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"fU" = (
+/obj/machinery/door/airlock/mining/glass{
+ locked = 1;
+ name = "Egg processing"
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"fY" = (
+/obj/item/stack/sheet/metal,
+/turf/template_noop,
+/area/template_noop)
+"hm" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"ho" = (
+/turf/space,
+/area/ruin/space)
+"hs" = (
+/turf/unsimulated/wall/fakeglass{
+ dir = 4
+ },
+/area/ruin/unpowered)
+"iK" = (
+/obj/item/stack/sheet/metal,
+/obj/item/stack/sheet/metal,
+/turf/space,
+/area/ruin/space)
+"jf" = (
+/obj/item/trash/syndi_cakes,
+/turf/template_noop,
+/area/template_noop)
+"jv" = (
+/obj/item/stack/cable_coil/cut,
+/turf/template_noop,
+/area/space)
+"jR" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/fancy/cigarettes/cigpack_random,
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"ke" = (
+/obj/structure/lattice,
+/turf/space,
+/area/ruin)
+"kh" = (
+/obj/structure/lattice,
+/obj/item/stack/rods,
+/turf/template_noop,
+/area/space)
+"ky" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ tag = ""
+ },
+/turf/simulated/wall,
+/area/ruin/unpowered)
+"ls" = (
+/obj/structure/lattice,
+/turf/template_noop,
+/area/space)
+"lK" = (
+/obj/machinery/power/apc/noalarm{
+ area = null;
+ dir = 8;
+ keep_preset_name = 1;
+ light_power = 0;
+ locked = 0;
+ max_integrity = 0;
+ name = "Manufacturing control room APC";
+ pixel_y = -24;
+ shorted = 1;
+ start_charge = -1
+ },
+/obj/structure/cable{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"mc" = (
+/obj/structure/grille/broken,
+/turf/space,
+/area/ruin/space)
+"mx" = (
+/obj/item/trash/syndi_cakes,
+/turf/template_noop,
+/area/space)
+"nV" = (
+/obj/machinery/conveyor/east{
+ id = null
+ },
+/turf/simulated/floor/plasteel,
+/area/space)
+"ob" = (
+/obj/structure/lattice,
+/turf/template_noop,
+/area/ruin/unpowered)
+"om" = (
+/obj/item/reagent_containers/food/snacks/syndicake,
+/obj/item/reagent_containers/food/snacks/syndicake,
+/obj/item/reagent_containers/food/snacks/syndicake,
+/obj/item/reagent_containers/food/snacks/syndicake,
+/obj/item/reagent_containers/food/snacks/syndicake,
+/obj/item/reagent_containers/food/snacks/syndicake,
+/turf/simulated/floor/plasteel,
+/area/space)
+"oJ" = (
+/obj/item/stack/rods,
+/turf/template_noop,
+/area/space)
+"oO" = (
+/obj/machinery/door/airlock/mining/glass{
+ name = "Nexus"
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"pb" = (
+/obj/structure/lattice/catwalk,
+/turf/template_noop,
+/area/space)
+"pd" = (
+/turf/template_noop,
+/area/space)
+"pp" = (
+/turf/unsimulated,
+/area/space)
+"pR" = (
+/obj/machinery/conveyor/northeast{
+ id = null
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"qS" = (
+/obj/machinery/door/airlock/mining/glass{
+ name = "EVA Storage"
+ },
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"rJ" = (
+/obj/structure/lattice,
+/turf/space,
+/area/ruin/space)
+"rL" = (
+/obj/item/reagent_containers/food/snacks/syndicake,
+/turf/simulated/floor/plasteel/airless,
+/area/ruin)
+"rU" = (
+/obj/machinery/space_heater,
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"sd" = (
+/turf/simulated/floor/plating,
+/area/space)
+"sN" = (
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"ub" = (
+/obj/item/stack/rods,
+/turf/space,
+/area/space)
+"uA" = (
+/obj/structure/table/reinforced,
+/obj/item/reagent_containers/food/snacks/syndicake,
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"uF" = (
+/obj/machinery/conveyor/east{
+ id = null
+ },
+/obj/machinery/gibber/autogibber,
+/obj/structure/plasticflaps{
+ canmove = 0
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"wB" = (
+/obj/item/trash/syndi_cakes,
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"xT" = (
+/turf/unsimulated/floor/plating/airless,
+/area/space)
+"yU" = (
+/obj/item/stack/sheet/metal,
+/obj/item/stack/sheet/metal,
+/turf/space,
+/area/space)
+"zd" = (
+/obj/machinery/power/apc/noalarm{
+ area = null;
+ dir = 8;
+ keep_preset_name = 1;
+ locked = 0;
+ name = "EVA room APC";
+ pixel_x = -24;
+ start_charge = -1
+ },
+/obj/structure/cable{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"zo" = (
+/turf/simulated/wall,
+/area/space)
+"zt" = (
+/obj/item/stack/sheet/metal,
+/turf/template_noop,
+/area/space)
+"zF" = (
+/turf/unsimulated/wall/fakeglass{
+ dir = 8
+ },
+/area/ruin/unpowered)
+"zP" = (
+/obj/structure/rack{
+ dir = 4
+ },
+/obj/random/tool,
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"zY" = (
+/obj/structure/table/reinforced,
+/obj/machinery/light,
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"AH" = (
+/obj/structure/lattice,
+/obj/item/stack/sheet/metal,
+/turf/template_noop,
+/area/template_noop)
+"AJ" = (
+/obj/effect/spawner/random_spawners/wall_rusted_probably,
+/turf/simulated/wall,
+/area/space)
+"BG" = (
+/obj/machinery/door/airlock/mining/glass{
+ locked = 1;
+ name = "Manufacturing Control Room"
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"BI" = (
+/obj/structure/reagent_dispensers/fueltank,
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"Cp" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2";
+ tag = ""
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"CY" = (
+/obj/item/stack/rods,
+/turf/template_noop,
+/area/template_noop)
+"Da" = (
+/turf/space,
+/area/space)
+"Dz" = (
+/mob/living/simple_animal/pet/dog/corgi,
+/obj/machinery/conveyor/east{
+ id = null
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"Ej" = (
+/obj/structure/closet/emcloset,
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"EJ" = (
+/turf/simulated/wall,
+/area/ruin/unpowered)
+"Fw" = (
+/obj/item/stack/cable_coil/cut,
+/turf/template_noop,
+/area/template_noop)
+"FO" = (
+/obj/machinery/suit_storage_unit/syndicate,
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"Gm" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_y = 0;
+ tag = ""
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"GB" = (
+/mob/living/simple_animal/pet/dog/corgi,
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"Hx" = (
+/mob/living/simple_animal/pet/dog/corgi,
+/mob/living/simple_animal/pet/dog/corgi,
+/obj/machinery/conveyor/east{
+ id = null
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"Hy" = (
+/turf/template_noop,
+/area/template_noop)
+"HQ" = (
+/obj/structure/table/reinforced,
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"Ic" = (
+/turf/simulated/floor/plating/burnt,
+/area/ruin)
+"Id" = (
+/obj/effect/spawner/random_spawners/oil_maybe,
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"IB" = (
+/obj/structure/lattice,
+/turf/space,
+/area/ruin/unpowered)
+"JI" = (
+/obj/effect/spawner/random_spawners/syndicate/loot,
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"Ki" = (
+/obj/structure/lattice,
+/turf/template_noop,
+/area/template_noop)
+"Kr" = (
+/obj/structure/girder,
+/turf/simulated/floor/plating,
+/area/ruin/unpowered)
+"KD" = (
+/turf/simulated/floor/plating,
+/area/ruin/unpowered)
+"KS" = (
+/turf/unsimulated/floor/plating/airless,
+/area/ruin)
+"Le" = (
+/obj/structure/cable{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/obj/machinery/power/port_gen/pacman,
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"Mi" = (
+/turf/unsimulated,
+/area/template_noop)
+"Mz" = (
+/turf/simulated/floor/plasteel,
+/area/ruin)
+"Nw" = (
+/obj/machinery/power/smes,
+/obj/structure/cable/blue{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"NQ" = (
+/obj/structure/lattice,
+/turf/space,
+/area/space)
+"OA" = (
+/obj/structure/computerframe,
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"OK" = (
+/obj/item/reagent_containers/food/snacks/syndicake,
+/turf/space,
+/area/space)
+"OU" = (
+/turf/simulated/floor/plasteel/airless,
+/area/ruin)
+"Qv" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/item/trash/syndi_cakes,
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"QF" = (
+/obj/machinery/conveyor/east{
+ dir = 2;
+ id = null
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin)
+"QI" = (
+/obj/effect/spawner/random_spawners/wall_rusted_probably,
+/turf/simulated/wall,
+/area/ruin)
+"Ra" = (
+/obj/machinery/power/terminal{
+ dir = 4
+ },
+/obj/structure/cable{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"Rg" = (
+/obj/machinery/door/airlock/mining/glass{
+ locked = 1;
+ max_integrity = 300000;
+ name = "Corgi processing";
+ normal_integrity = 300000
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"Ry" = (
+/obj/item/stack/cable_coil/random,
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"RB" = (
+/mob/living/simple_animal/hostile/alien/sentinel{
+ animal_species = /mob/living/simple_animal/pet/dog;
+ attack_sound = 'sound/weapons/bite.ogg';
+ attacktext = "bites";
+ damage_coeff = list("brute" = 1, "fire" = 1, "tox" = 1, "clone" = 1, "stamina" = 1, "oxy" = 1);
+ death_sound = null;
+ deathmessage = "";
+ desc = "This is no longer a goodboy. Not anymore. He has seen too much.";
+ icon = 'icons/mob/pets.dmi';
+ icon_living = "corgi";
+ icon_state = "corgi";
+ name = "angry corgi";
+ retreat_distance = 2
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"Tj" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/toolbox/syndicate,
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"Tt" = (
+/obj/machinery/door/airlock/external,
+/turf/simulated/floor/plating,
+/area/ruin/powered)
+"TM" = (
+/obj/structure/chair/office/dark{
+ dir = 4;
+ icon_state = "officechair_dark";
+ tag = "icon-officechair_dark (EAST)"
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"TT" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8";
+ tag = ""
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4";
+ tag = "90Curve"
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"Uq" = (
+/obj/machinery/conveyor/east{
+ id = null
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin)
+"UC" = (
+/obj/machinery/tcomms/relay/ruskie{
+ network_id = "SYNDICAKES-FACTORY"
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"UR" = (
+/obj/item/trash/syndi_cakes,
+/turf/space,
+/area/space)
+"Vf" = (
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"Vt" = (
+/obj/machinery/conveyor/north/ccw{
+ id = null
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"VH" = (
+/obj/structure/lattice,
+/obj/random/tool,
+/turf/space,
+/area/space)
+"VR" = (
+/obj/structure/lattice,
+/turf/unsimulated,
+/area/space)
+"WL" = (
+/turf/space,
+/area/ruin/unpowered)
+"Xd" = (
+/obj/structure/cable{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"XZ" = (
+/obj/machinery/light/small{
+ dir = 1
+ },
+/obj/structure/dispenser/oxygen,
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"YR" = (
+/obj/machinery/light{
+ dir = 4
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"YU" = (
+/obj/structure/chair/office/dark,
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"Zs" = (
+/obj/machinery/conveyor/east{
+ id = null
+ },
+/turf/simulated/floor/plasteel,
+/area/ruin/unpowered)
+"Zt" = (
+/obj/machinery/conveyor/east{
+ dir = 2;
+ id = null
+ },
+/turf/simulated/floor/plasteel,
+/area/space)
+
+(1,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(2,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(3,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+ob
+ob
+ob
+ob
+ob
+ob
+EJ
+EJ
+EJ
+EJ
+EJ
+EJ
+EJ
+EJ
+Ki
+Ki
+Ki
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(4,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+EJ
+EJ
+EJ
+EJ
+EJ
+EJ
+EJ
+Le
+Vf
+zd
+rU
+sN
+FO
+EJ
+EJ
+EJ
+pb
+pd
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(5,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+EJ
+JI
+GB
+Vf
+sN
+sN
+EJ
+Ra
+sN
+Gm
+sN
+sN
+sN
+Tt
+KD
+Tt
+pb
+pb
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(6,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+EJ
+sN
+Hx
+GB
+Dz
+sN
+EJ
+Nw
+hm
+TT
+Id
+sN
+Ej
+EJ
+EJ
+EJ
+pb
+pd
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(7,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+EJ
+sN
+Dz
+sN
+Dz
+sN
+EJ
+UC
+sN
+Gm
+sN
+sN
+zY
+EJ
+pd
+pd
+ls
+pd
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(8,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+EJ
+sN
+Zs
+sN
+Zs
+sN
+EJ
+fq
+sN
+Gm
+sN
+YU
+OA
+EJ
+pd
+pd
+ls
+pd
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(9,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+EJ
+sN
+Zs
+sN
+Zs
+Id
+EJ
+sN
+GB
+Gm
+TM
+sN
+sN
+EJ
+pd
+pd
+ls
+pd
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(10,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+EJ
+pR
+Vt
+Vt
+Vt
+sN
+EJ
+XZ
+BI
+Gm
+uA
+OA
+jR
+EJ
+pd
+pd
+ls
+pd
+pd
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(11,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+EJ
+Zs
+EJ
+EJ
+EJ
+Rg
+EJ
+EJ
+EJ
+qS
+EJ
+EJ
+EJ
+EJ
+EJ
+EJ
+EJ
+EJ
+pd
+pd
+pd
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(12,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+EJ
+Zs
+zF
+TM
+Qv
+lK
+EJ
+sN
+Vf
+Gm
+sN
+sN
+Ry
+Kr
+OU
+OU
+OU
+EJ
+pd
+pd
+pd
+OK
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(13,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+EJ
+Zs
+hs
+Tj
+zP
+Xd
+ky
+Cp
+Cp
+es
+sN
+rJ
+rJ
+Kr
+rL
+eY
+OU
+EJ
+pd
+pd
+pd
+pd
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(14,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+EJ
+Zs
+EJ
+sN
+wB
+sN
+BG
+sN
+sN
+sN
+sN
+sN
+sN
+oO
+OU
+eY
+eY
+EJ
+pd
+pd
+pd
+pd
+oJ
+Hy
+Hy
+Hy
+Hy
+Hy
+fY
+Hy
+Hy
+Hy
+Hy
+"}
+(15,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+EJ
+Zs
+zF
+TM
+RB
+wB
+EJ
+IB
+sN
+sN
+sN
+sN
+sN
+EJ
+eY
+eY
+rJ
+EJ
+pd
+pd
+mx
+pd
+pd
+pd
+Hy
+fY
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(16,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+EJ
+Zs
+hs
+bb
+OA
+sN
+EJ
+WL
+IB
+sN
+YR
+HQ
+HQ
+EJ
+OU
+eY
+rJ
+EJ
+zt
+oJ
+pd
+pd
+pd
+jv
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(17,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+EJ
+uF
+EJ
+EJ
+EJ
+fU
+EJ
+EJ
+EJ
+oO
+EJ
+EJ
+EJ
+EJ
+OU
+eY
+OK
+Da
+pd
+pd
+NQ
+zt
+pd
+pd
+pd
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(18,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+VR
+Uq
+OU
+OU
+KS
+KS
+Mz
+ho
+OU
+OU
+OU
+OU
+ho
+iK
+eY
+Da
+OK
+OK
+pd
+pd
+NQ
+zo
+pd
+pd
+pd
+pd
+OK
+Hy
+Hy
+fY
+Hy
+Hy
+Hy
+"}
+(19,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+pd
+rJ
+rJ
+rJ
+KS
+rJ
+KS
+rJ
+Ic
+Ic
+ub
+NQ
+OU
+eY
+NQ
+NQ
+Da
+OK
+yU
+Da
+NQ
+AJ
+pd
+OK
+pd
+pd
+pd
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(20,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+pd
+nV
+xT
+mc
+KS
+mc
+KS
+KS
+Da
+NQ
+Da
+NQ
+Da
+Da
+UR
+ub
+Da
+Da
+pd
+pd
+NQ
+NQ
+pd
+pd
+pd
+zt
+pd
+pd
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(21,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Ki
+pp
+pd
+Zt
+rJ
+Zt
+Zt
+NQ
+Ic
+Da
+Da
+Da
+Da
+OK
+Da
+Da
+OK
+OK
+Da
+pd
+NQ
+Da
+Da
+pd
+pd
+pd
+pd
+pd
+pd
+pd
+Hy
+Ki
+Hy
+Hy
+"}
+(22,1,1) = {"
+Hy
+Hy
+CY
+Hy
+Hy
+Hy
+Hy
+pp
+pd
+pd
+zo
+pd
+zo
+zo
+NQ
+ub
+Da
+Da
+Da
+Da
+Da
+Da
+Da
+Da
+Da
+ub
+zt
+pd
+pd
+pd
+mx
+pd
+pd
+pd
+pd
+OK
+Hy
+Hy
+Hy
+Hy
+"}
+(23,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Ki
+Mi
+dy
+VR
+pd
+pd
+pd
+pd
+pd
+zt
+pd
+pd
+Ic
+OU
+OU
+Da
+NQ
+pd
+pd
+pd
+pd
+pd
+pd
+oJ
+pd
+zt
+ls
+pd
+pd
+pd
+Hy
+Hy
+Hy
+Hy
+"}
+(24,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Ki
+Hy
+Hy
+Hy
+Ki
+Hy
+pd
+oJ
+OK
+pd
+pd
+bk
+NQ
+QF
+QF
+QF
+QF
+Da
+sd
+oJ
+pd
+pd
+pd
+cc
+VH
+pd
+pd
+pd
+pd
+pd
+pd
+ls
+Hy
+Hy
+Hy
+Hy
+"}
+(25,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+CY
+Hy
+Hy
+Hy
+Hy
+pd
+pd
+ke
+OK
+pd
+zo
+NQ
+NQ
+QI
+NQ
+NQ
+pd
+pd
+zt
+NQ
+NQ
+om
+zo
+pd
+OK
+pd
+oJ
+pd
+pd
+zt
+Hy
+Hy
+Hy
+Hy
+"}
+(26,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Ki
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+pd
+pd
+pd
+pd
+pd
+pd
+pd
+pd
+NQ
+ls
+pd
+pd
+pd
+pd
+pd
+zo
+zo
+Da
+Da
+pd
+oJ
+pd
+pd
+pd
+Hy
+Hy
+Hy
+Hy
+"}
+(27,1,1) = {"
+Hy
+Hy
+CY
+Hy
+Hy
+Hy
+Hy
+AH
+CY
+CY
+Hy
+fY
+Hy
+pd
+pd
+pd
+pd
+pd
+pd
+pd
+pd
+pd
+pd
+OK
+pd
+oJ
+pd
+mx
+pd
+pd
+OK
+pd
+pd
+pd
+pd
+pd
+Hy
+Hy
+Hy
+Hy
+"}
+(28,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+pd
+NQ
+OK
+pd
+pd
+aM
+pd
+mx
+pd
+pd
+pd
+oJ
+pd
+pd
+pd
+pd
+pd
+pd
+aM
+pd
+pd
+Hy
+Hy
+Hy
+Hy
+jf
+"}
+(29,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+CY
+Hy
+Hy
+Hy
+Hy
+CY
+Hy
+Hy
+Hy
+Fw
+Hy
+pd
+oJ
+pd
+pd
+pd
+pd
+pd
+pd
+pd
+OK
+oJ
+pd
+kh
+pd
+pd
+pd
+pd
+pd
+pd
+Hy
+Hy
+Hy
+fY
+Hy
+Hy
+"}
+(30,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+CY
+CY
+Hy
+pd
+pd
+pd
+pd
+ls
+pd
+OK
+pd
+pd
+pd
+pd
+pd
+pd
+pd
+oJ
+zt
+pd
+pd
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(31,1,1) = {"
+Hy
+Hy
+Hy
+fY
+Hy
+Hy
+Ki
+Hy
+Hy
+Hy
+Ki
+Hy
+CY
+Hy
+Hy
+Hy
+Hy
+pd
+pd
+pd
+pd
+pd
+ls
+pd
+pd
+oJ
+pd
+pd
+aM
+pd
+pd
+pd
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(32,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+fY
+Hy
+Hy
+Hy
+Hy
+kh
+pd
+pd
+zt
+pd
+pd
+ls
+pd
+pd
+pd
+pd
+pd
+pd
+Hy
+Hy
+Fw
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(33,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+CY
+Hy
+CY
+Hy
+fY
+Hy
+Hy
+Hy
+Hy
+Hy
+jf
+Hy
+Hy
+Hy
+Hy
+pd
+pd
+pd
+pd
+pd
+NQ
+zt
+pd
+pd
+oJ
+pd
+fY
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(34,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+CY
+Hy
+Hy
+Hy
+CY
+Hy
+fY
+Hy
+CY
+Hy
+Hy
+pd
+oJ
+pd
+pd
+OK
+pd
+pd
+pd
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(35,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Ki
+Hy
+Hy
+Hy
+CY
+CY
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+pd
+pd
+ls
+pd
+pd
+pd
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+fY
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(36,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+CY
+Hy
+Hy
+Hy
+Hy
+fY
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(37,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Fw
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(38,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(39,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+jf
+Hy
+Hy
+Hy
+Hy
+fY
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
+(40,1,1) = {"
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+Hy
+"}
diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm
index 2c12ac11e44..8f6f8d77f7f 100644
--- a/_maps/map_files/cyberiad/cyberiad.dmm
+++ b/_maps/map_files/cyberiad/cyberiad.dmm
@@ -35244,7 +35244,7 @@
},
/area/bridge)
"bnW" = (
-/obj/machinery/computer/station_alert/all,
+/obj/machinery/computer/station_alert,
/turf/simulated/floor/plasteel{
dir = 0;
icon_state = "yellow"
@@ -72578,7 +72578,7 @@
pixel_x = -2;
pixel_y = 2
},
-/obj/item/circuitboard/stationalert_all{
+/obj/item/circuitboard/stationalert{
pixel_x = 1;
pixel_y = -1
},
@@ -75846,7 +75846,7 @@
pixel_x = 32;
pixel_y = 0
},
-/obj/machinery/computer/station_alert/all,
+/obj/machinery/computer/station_alert,
/obj/structure/cable/yellow{
d1 = 4;
d2 = 8;
@@ -77210,6 +77210,10 @@
pixel_x = -22
},
/obj/item/stack/tape_roll,
+/obj/machinery/camera/motion{
+ c_tag = "EVA Motion Sensor";
+ dir = 4
+ },
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
diff --git a/_maps/map_files/shuttles/admin_armory.dmm b/_maps/map_files/shuttles/admin_armory.dmm
new file mode 100644
index 00000000000..837f867a52b
--- /dev/null
+++ b/_maps/map_files/shuttles/admin_armory.dmm
@@ -0,0 +1,1691 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"ae" = (
+/obj/structure/sign/securearea,
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall4";
+ tag = "icon-swall14"
+ },
+/area/shuttle/administration)
+"al" = (
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/table/reinforced,
+/obj/item/folder,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aI" = (
+/obj/structure/table/reinforced,
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/machinery/recharger,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"aP" = (
+/obj/machinery/vending/security,
+/obj/machinery/light/spot{
+ dir = 8;
+ icon_state = "tube1";
+ tag = "icon-tube1 (WEST)"
+ },
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"bi" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/firstaid,
+/obj/item/storage/firstaid/brute,
+/obj/item/storage/box/bodybags,
+/obj/item/storage/firstaid/surgery,
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"bm" = (
+/obj/structure/grille,
+/obj/machinery/door/poddoor/shutters/preopen{
+ dir = 8;
+ id_tag = "adminarmoryshutters"
+ },
+/obj/structure/window/full/shuttle,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"ce" = (
+/obj/machinery/autolathe/upgraded{
+ hacked = 1
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"cl" = (
+/obj/structure/chair/comfy/shuttle{
+ dir = 4
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"cV" = (
+/obj/structure/closet/emcloset,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"de" = (
+/obj/machinery/suit_storage_unit/security/secure,
+/obj/machinery/light/spot,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"df" = (
+/obj/structure/rack,
+/obj/item/storage/box/buck{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/item/storage/box/buck,
+/obj/structure/window/reinforced,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"dn" = (
+/obj/machinery/computer/camera_advanced/shuttle_docker/admin{
+ name = "NRV Sparta navigation computer"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"dH" = (
+/obj/structure/rack,
+/obj/structure/window/reinforced,
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/item/gun/energy/gun,
+/obj/item/gun/energy/gun{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"dP" = (
+/obj/machinery/recharge_station/upgraded,
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"eI" = (
+/obj/machinery/turretid/stun{
+ check_access = 0;
+ name = "Shuttle Turret Control";
+ pixel_y = 30
+ },
+/obj/machinery/computer/camera_advanced,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"eL" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"fo" = (
+/obj/structure/chair{
+ dir = 1
+ },
+/obj/machinery/light/spot,
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"fF" = (
+/obj/machinery/light/spot{
+ dir = 4;
+ icon_state = "tube1";
+ tag = "icon-tube1 (EAST)"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"fQ" = (
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"gd" = (
+/obj/machinery/door/airlock/shuttle,
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"gh" = (
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"gj" = (
+/obj/machinery/computer/communications{
+ name = "NRV Sparta Communications Console"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"hN" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"ir" = (
+/obj/structure/closet/emcloset,
+/obj/machinery/light/spot{
+ dir = 1;
+ icon_state = "tube1";
+ tag = "icon-tube1 (NORTH)"
+ },
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"iz" = (
+/obj/machinery/porta_turret{
+ installation = /obj/item/gun/energy/gun
+ },
+/obj/structure/window/reinforced,
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"jn" = (
+/obj/machinery/door/poddoor/shutters{
+ density = 0;
+ dir = 2;
+ icon_state = "open";
+ id_tag = "Asclshutters";
+ name = "Blast Shutters";
+ opacity = 0
+ },
+/obj/structure/grille,
+/obj/structure/window/full/shuttle,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"jB" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/lockbox/mindshield,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"jU" = (
+/obj/machinery/suit_storage_unit/security/secure,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"kf" = (
+/obj/structure/sign/securearea,
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall8";
+ tag = "icon-swall12"
+ },
+/area/shuttle/administration)
+"mq" = (
+/obj/structure/grille,
+/obj/machinery/door/poddoor/shutters{
+ density = 0;
+ dir = 2;
+ icon_state = "open";
+ id_tag = "Asclshutters";
+ name = "Blast Shutters";
+ opacity = 0
+ },
+/obj/structure/window/full/shuttle,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"mw" = (
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"mM" = (
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall13"
+ },
+/area/shuttle/administration)
+"nG" = (
+/obj/structure/window/full/shuttle,
+/obj/structure/grille,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"oj" = (
+/obj/structure/chair/comfy/shuttle{
+ dir = 1
+ },
+/obj/machinery/light/spot,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"oY" = (
+/obj/structure/chair,
+/obj/machinery/light/spot{
+ dir = 1;
+ icon_state = "tube1";
+ tag = "icon-tube1 (NORTH)"
+ },
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"pa" = (
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall11"
+ },
+/area/shuttle/administration)
+"pK" = (
+/obj/structure/shuttle/engine/propulsion{
+ dir = 4;
+ icon_state = "propulsion"
+ },
+/turf/simulated/shuttle/plating,
+/area/shuttle/administration)
+"pQ" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"qQ" = (
+/obj/machinery/recharger/wallcharger{
+ pixel_y = 25
+ },
+/obj/machinery/recharger/wallcharger{
+ pixel_y = 35
+ },
+/obj/machinery/light/spot{
+ dir = 1;
+ icon_state = "tube1";
+ tag = "icon-tube1 (NORTH)"
+ },
+/obj/machinery/door_control{
+ id = "adminshuttlebridge";
+ name = "Bridge Privacy Shutters";
+ pixel_x = 25;
+ req_access_txt = "19"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"rb" = (
+/obj/machinery/door/window/brigdoor/southleft{
+ req_one_access_txt = "2;19"
+ },
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"rW" = (
+/obj/structure/grille,
+/obj/machinery/door/poddoor/shutters/preopen{
+ id_tag = "adminshuttlebridge"
+ },
+/obj/structure/window/full/shuttle,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"sq" = (
+/obj/structure/table/reinforced,
+/obj/item/kitchen/knife/combat{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/item/kitchen/knife/combat,
+/obj/item/kitchen/knife/combat{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"tx" = (
+/obj/machinery/sleeper/upgraded{
+ dir = 4
+ },
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"ua" = (
+/obj/structure/chair{
+ dir = 8
+ },
+/obj/machinery/door_control{
+ dir = 4;
+ id = "Asclshutters";
+ name = "External Window Shutter Control";
+ pixel_x = -5;
+ pixel_y = 35;
+ req_access_txt = "19"
+ },
+/obj/machinery/keycard_auth{
+ pixel_y = 24
+ },
+/obj/machinery/door_control{
+ id = "asclblast";
+ name = "Airlock Blast Door Control";
+ pixel_x = 5;
+ pixel_y = 35;
+ req_access = null;
+ req_access_txt = "19"
+ },
+/obj/structure/chair/comfy/shuttle{
+ dir = 8
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"uz" = (
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall4";
+ tag = "icon-swall14"
+ },
+/area/shuttle/administration)
+"uW" = (
+/obj/structure/shuttle/engine/heater{
+ dir = 4;
+ icon_state = "heater"
+ },
+/obj/structure/window/plasmareinforced{
+ dir = 8
+ },
+/turf/simulated/shuttle/plating,
+/area/shuttle/administration)
+"uY" = (
+/obj/structure/window/reinforced,
+/obj/structure/table/reinforced,
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"vk" = (
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall_s6"
+ },
+/area/shuttle/administration)
+"vy" = (
+/obj/structure/table/reinforced,
+/obj/item/stack/sheet/metal/fifty,
+/obj/item/stack/sheet/glass/fifty,
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"vA" = (
+/obj/machinery/light/spot{
+ dir = 1;
+ icon_state = "tube1";
+ tag = "icon-tube1 (NORTH)"
+ },
+/obj/machinery/portable_atmospherics/canister/oxygen,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"vW" = (
+/obj/structure/table/reinforced,
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/item/storage/box/handcuffs,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"wG" = (
+/obj/structure/rack,
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/obj/item/clothing/suit/armor/bulletproof{
+ pixel_x = 0;
+ pixel_y = 0
+ },
+/obj/item/clothing/head/helmet/alt,
+/obj/item/clothing/suit/armor/bulletproof{
+ pixel_x = 0;
+ pixel_y = 0
+ },
+/obj/item/clothing/head/helmet/alt,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"wH" = (
+/obj/machinery/light/spot{
+ dir = 8;
+ icon_state = "tube1";
+ tag = "icon-tube1 (WEST)"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"wQ" = (
+/obj/machinery/door/poddoor/shutters{
+ density = 0;
+ dir = 8;
+ icon_state = "open";
+ id_tag = "Asclshutters";
+ name = "Blast Shutters";
+ opacity = 0
+ },
+/obj/structure/grille,
+/obj/structure/window/full/shuttle,
+/turf/space,
+/area/shuttle/administration)
+"xm" = (
+/obj/structure/table/reinforced,
+/obj/item/rcd/preloaded,
+/obj/item/rcd_ammo,
+/obj/item/rcd_ammo{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/obj/item/rcd_ammo{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"xF" = (
+/obj/structure/rack,
+/obj/item/storage/box/buck{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/item/storage/box/buck,
+/obj/structure/window/reinforced,
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"xH" = (
+/obj/machinery/door/airlock/shuttle,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"xK" = (
+/obj/structure/sign/nosmoking_2,
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall3";
+ tag = "icon-swall3"
+ },
+/area/shuttle/administration)
+"xQ" = (
+/obj/structure/chair{
+ dir = 4
+ },
+/obj/machinery/light/spot{
+ dir = 1;
+ icon_state = "tube1";
+ tag = "icon-tube1 (NORTH)"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"xU" = (
+/obj/structure/table/reinforced,
+/obj/item/stack/sheet/metal/fifty,
+/obj/item/stack/sheet/glass/fifty,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"xZ" = (
+/turf/space,
+/area/shuttle/administration)
+"yg" = (
+/obj/structure/table/reinforced,
+/obj/machinery/door/window/brigdoor/eastleft{
+ name = "Armory";
+ req_access_txt = "3"
+ },
+/obj/machinery/door/window/brigdoor/westleft{
+ name = "Armory"
+ },
+/obj/machinery/door/poddoor/shutters/preopen{
+ dir = 8;
+ id_tag = "adminarmoryshutters"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"yu" = (
+/obj/structure/table/reinforced,
+/obj/machinery/recharger{
+ pixel_x = -5
+ },
+/obj/machinery/recharger{
+ pixel_x = 8
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"yF" = (
+/obj/machinery/status_display,
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall3"
+ },
+/area/shuttle/administration)
+"zY" = (
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall14"
+ },
+/area/shuttle/administration)
+"AH" = (
+/obj/machinery/light/spot,
+/obj/machinery/porta_turret{
+ installation = /obj/item/gun/energy/gun
+ },
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"Bc" = (
+/obj/structure/rack,
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/item/shield/riot,
+/obj/item/shield/riot{
+ pixel_x = 2;
+ pixel_y = -4
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"Bj" = (
+/obj/structure/fans/tiny,
+/obj/machinery/door/airlock/external{
+ req_one_access_txt = "2;19"
+ },
+/obj/machinery/door/poddoor{
+ density = 0;
+ icon_state = "open";
+ id_tag = "asclblast";
+ name = "Blast Door";
+ opacity = 0
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"Bn" = (
+/obj/machinery/door/window/brigdoor/southleft{
+ req_one_access_txt = "2;19"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"Bq" = (
+/obj/structure/sign/nosmoking_2,
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall1";
+ tag = "icon-swall1"
+ },
+/area/shuttle/administration)
+"BZ" = (
+/obj/machinery/light/spot,
+/obj/machinery/porta_turret{
+ installation = /obj/item/gun/energy/gun
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"Cl" = (
+/obj/structure/table/reinforced,
+/obj/item/storage/toolbox/emergency{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/item/storage/toolbox/mechanical,
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"Du" = (
+/obj/structure/rack,
+/obj/structure/window/reinforced,
+/obj/item/gun/energy/gun,
+/obj/item/gun/energy/gun{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"DZ" = (
+/obj/machinery/light/spot,
+/obj/structure/closet/emcloset,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"Eq" = (
+/obj/structure/sign/securearea,
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall12"
+ },
+/area/shuttle/administration)
+"EQ" = (
+/obj/machinery/door/airlock/shuttle/glass,
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"Fd" = (
+/obj/structure/rack,
+/obj/structure/window/reinforced,
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/item/gun/energy/gun,
+/obj/item/gun/energy/gun{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"Fo" = (
+/obj/structure/rack,
+/obj/structure/window/reinforced,
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/item/gun/energy/immolator/multi{
+ pixel_y = -3
+ },
+/obj/item/gun/energy/immolator/multi,
+/obj/item/gun/energy/immolator/multi{
+ pixel_y = 3
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"FF" = (
+/obj/structure/sign/poster/official/enlist,
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall12"
+ },
+/area/shuttle/administration)
+"FT" = (
+/obj/structure/rack,
+/obj/item/storage/box/buck{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/item/storage/box/buck,
+/obj/structure/window/reinforced,
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"Gf" = (
+/obj/structure/sign/vacuum{
+ pixel_x = -32
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"Gn" = (
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/obj/structure/rack,
+/obj/item/gun/projectile/shotgun/riot/buckshot{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/item/gun/projectile/shotgun/riot/buckshot,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"Gx" = (
+/obj/structure/fans/tiny,
+/obj/machinery/door/airlock/external,
+/obj/docking_port/mobile{
+ dir = 2;
+ dwidth = 9;
+ height = 18;
+ id = "admin";
+ name = "armory";
+ roundstart_move = "cc_bay_1";
+ timid = 1;
+ width = 19
+ },
+/obj/machinery/door/poddoor{
+ density = 0;
+ icon_state = "open";
+ id_tag = "asclblast";
+ name = "Blast Door";
+ opacity = 0
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"Gy" = (
+/obj/structure/chair{
+ dir = 1
+ },
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"Hc" = (
+/obj/machinery/porta_turret{
+ installation = /obj/item/gun/energy/gun
+ },
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"HN" = (
+/obj/structure/sign/poster/official/do_not_question,
+/obj/item/tank/emergency_oxygen/engi,
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall3"
+ },
+/area/shuttle/administration)
+"Ir" = (
+/obj/machinery/computer/shuttle/admin{
+ name = "NRV Sparta shuttle console"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"IC" = (
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall3"
+ },
+/area/shuttle/administration)
+"Jt" = (
+/obj/machinery/suit_storage_unit/standard_unit,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"Ke" = (
+/obj/machinery/door/window/brigdoor/southright{
+ req_one_access_txt = "2;19"
+ },
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"Kh" = (
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"Ki" = (
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/item/clothing/suit/armor/bulletproof{
+ pixel_x = 0;
+ pixel_y = 0
+ },
+/obj/structure/rack,
+/obj/item/clothing/head/helmet/alt,
+/obj/item/clothing/suit/armor/bulletproof{
+ pixel_x = 0;
+ pixel_y = 0
+ },
+/obj/item/clothing/head/helmet/alt,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"KM" = (
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall7"
+ },
+/area/shuttle/administration)
+"Lh" = (
+/obj/structure/rack,
+/obj/structure/window/reinforced,
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/item/gun/energy/ionrifle{
+ pixel_x = 3;
+ pixel_y = 3
+ },
+/obj/item/gun/energy/ionrifle,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"LK" = (
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/machinery/computer/secure_data,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"LP" = (
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall_s9"
+ },
+/area/shuttle/administration)
+"Mi" = (
+/obj/structure/table/reinforced,
+/obj/machinery/recharger,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"Mj" = (
+/obj/machinery/vending/medical,
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"Mo" = (
+/obj/structure/rack,
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/item/clothing/suit/armor/bulletproof{
+ pixel_x = 0;
+ pixel_y = 0
+ },
+/obj/item/clothing/head/helmet/alt,
+/obj/item/clothing/suit/armor/bulletproof{
+ pixel_x = 0;
+ pixel_y = 0
+ },
+/obj/item/clothing/head/helmet/alt,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"MN" = (
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall12"
+ },
+/area/shuttle/administration)
+"MZ" = (
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall3";
+ tag = "icon-swall3"
+ },
+/area/shuttle/administration)
+"Ni" = (
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/obj/structure/rack,
+/obj/item/gun/projectile/shotgun/riot/buckshot{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/item/gun/projectile/shotgun/riot/buckshot,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"Ns" = (
+/obj/machinery/recharger/wallcharger{
+ pixel_y = 25
+ },
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"NF" = (
+/obj/structure/sign/poster/official/here_for_your_safety,
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall3";
+ tag = "icon-swall3"
+ },
+/area/shuttle/administration)
+"NQ" = (
+/obj/machinery/door/poddoor/shutters{
+ density = 0;
+ dir = 1;
+ icon_state = "open";
+ id_tag = "Asclshutters";
+ name = "Blast Shutters";
+ opacity = 0
+ },
+/obj/structure/grille,
+/obj/structure/window/full/shuttle,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"Op" = (
+/obj/structure/dispenser/oxygen,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"Ou" = (
+/obj/machinery/autolathe/upgraded{
+ hacked = 1
+ },
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"Pe" = (
+/obj/machinery/door/window/brigdoor/southright{
+ req_one_access_txt = "2;19"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"Pn" = (
+/obj/structure/rack,
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/item/clothing/suit/armor/riot,
+/obj/item/clothing/suit/armor/riot{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"PL" = (
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall_s10"
+ },
+/area/shuttle/administration)
+"PR" = (
+/obj/machinery/light/spot{
+ dir = 8;
+ tag = "icon-tube1 (WEST)"
+ },
+/obj/machinery/door_control{
+ id = "adminarmoryshutters";
+ name = "Armory Internal Shutters";
+ pixel_x = -26;
+ req_access_txt = "3"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"PS" = (
+/obj/structure/rack,
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/item/gun/energy/gun/nuclear{
+ pixel_y = -3
+ },
+/obj/item/gun/energy/gun/nuclear,
+/obj/item/gun/energy/gun/nuclear{
+ pixel_y = 3
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"PV" = (
+/obj/structure/rack,
+/obj/item/gun/energy/sniperrifle{
+ pixel_y = -4
+ },
+/obj/item/gun/energy/sniperrifle,
+/obj/item/gun/energy/sniperrifle{
+ pixel_y = 3
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"RM" = (
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall8";
+ tag = "icon-swall12"
+ },
+/area/shuttle/administration)
+"TD" = (
+/obj/machinery/door/airlock/command{
+ name = "Command Center";
+ req_access = null;
+ req_access_txt = "19"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"TF" = (
+/obj/structure/table/reinforced,
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced,
+/obj/item/storage/fancy/donut_box,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"Un" = (
+/obj/structure/table/reinforced,
+/obj/item/tank/emergency_oxygen/engi{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/obj/item/tank/emergency_oxygen/engi,
+/obj/item/tank/emergency_oxygen/engi{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/machinery/light/spot{
+ dir = 8;
+ icon_state = "tube1";
+ tag = "icon-tube1 (WEST)"
+ },
+/obj/item/clothing/mask/breath{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/item/clothing/mask/breath,
+/obj/item/clothing/mask/breath{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"Ur" = (
+/obj/machinery/porta_turret{
+ installation = /obj/item/gun/energy/gun
+ },
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/turf/simulated/shuttle/floor,
+/area/shuttle/administration)
+"UR" = (
+/obj/machinery/status_display,
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall12"
+ },
+/area/shuttle/administration)
+"UX" = (
+/obj/structure/fans/tiny,
+/obj/machinery/door/airlock/external,
+/obj/machinery/door/poddoor{
+ density = 0;
+ icon_state = "open";
+ id_tag = "asclblast";
+ name = "Blast Door";
+ opacity = 0
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"Vc" = (
+/turf/simulated/shuttle/wall{
+ dir = 2;
+ icon_state = "swall_s5"
+ },
+/area/shuttle/administration)
+"VC" = (
+/obj/machinery/door/airlock/shuttle{
+ name = "Shuttle Armory";
+ req_access_txt = "3"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"VQ" = (
+/obj/structure/rack,
+/obj/structure/window/reinforced,
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/item/gun/energy/gun/advtaser{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/obj/item/gun/energy/gun/advtaser{
+ pixel_x = 0;
+ pixel_y = 0
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"WV" = (
+/obj/structure/table/reinforced,
+/obj/item/restraints/handcuffs{
+ pixel_x = 3;
+ pixel_y = -3
+ },
+/obj/item/restraints/handcuffs,
+/obj/item/restraints/handcuffs{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/machinery/light/spot{
+ dir = 4;
+ icon_state = "tube1";
+ tag = "icon-tube1 (EAST)"
+ },
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+"XL" = (
+/obj/structure/window/reinforced{
+ dir = 1;
+ layer = 2.9
+ },
+/obj/structure/rack,
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/item/gun/projectile/shotgun/riot/buckshot{
+ pixel_x = -3;
+ pixel_y = 3
+ },
+/obj/item/gun/projectile/shotgun/riot/buckshot,
+/turf/simulated/shuttle/floor{
+ icon_state = "floor4"
+ },
+/area/shuttle/administration)
+
+(1,1,1) = {"
+vk
+MZ
+HN
+IC
+IC
+IC
+IC
+KM
+wQ
+wQ
+wQ
+wQ
+KM
+IC
+IC
+IC
+IC
+Vc
+"}
+(2,1,1) = {"
+MN
+Un
+xm
+Mj
+aP
+dP
+tx
+MN
+eI
+Ir
+dn
+gj
+MN
+vA
+cl
+cl
+DZ
+Eq
+"}
+(3,1,1) = {"
+MN
+Ns
+mw
+mw
+mw
+mw
+mw
+MN
+ua
+gh
+gh
+gh
+FF
+Op
+Kh
+Kh
+Kh
+Bj
+"}
+(4,1,1) = {"
+MN
+Ns
+mw
+mw
+mw
+mw
+Gy
+MN
+qQ
+Kh
+Kh
+Kh
+UR
+Jt
+Kh
+Kh
+Kh
+Bj
+"}
+(5,1,1) = {"
+MN
+Ns
+mw
+mw
+mw
+mw
+fo
+zY
+MZ
+TD
+rW
+rW
+pa
+MZ
+xH
+nG
+nG
+Eq
+"}
+(6,1,1) = {"
+MN
+bi
+Cl
+vy
+Ou
+mw
+mw
+MN
+cV
+Kh
+Kh
+Kh
+Bn
+Gf
+Kh
+Mi
+Mi
+MN
+"}
+(7,1,1) = {"
+zY
+nG
+nG
+nG
+nG
+gd
+nG
+MN
+xQ
+Kh
+hN
+Kh
+Pe
+Kh
+Kh
+Kh
+oj
+MN
+"}
+(8,1,1) = {"
+RM
+oY
+mw
+mw
+mw
+mw
+Ur
+kf
+vW
+al
+aI
+LK
+TF
+Kh
+Kh
+Kh
+fQ
+mq
+"}
+(9,1,1) = {"
+UX
+mw
+mw
+mw
+mw
+mw
+mw
+EQ
+mw
+mw
+mw
+mw
+rb
+Kh
+Kh
+Kh
+fQ
+jn
+"}
+(10,1,1) = {"
+Gx
+mw
+mw
+mw
+mw
+mw
+mw
+EQ
+mw
+mw
+mw
+mw
+Ke
+Kh
+Kh
+Kh
+Kh
+jn
+"}
+(11,1,1) = {"
+uz
+oY
+mw
+mw
+mw
+mw
+Hc
+ae
+ir
+pQ
+pQ
+pQ
+uY
+Kh
+Kh
+Kh
+BZ
+MN
+"}
+(12,1,1) = {"
+zY
+MZ
+Bq
+yg
+VC
+yg
+yF
+pa
+bm
+bm
+bm
+MZ
+MZ
+xK
+VC
+NF
+MZ
+mM
+"}
+(13,1,1) = {"
+MN
+Kh
+wH
+eL
+Kh
+eL
+Kh
+PR
+PV
+PS
+Fo
+wH
+VQ
+Bc
+Kh
+Kh
+AH
+MN
+"}
+(14,1,1) = {"
+NQ
+Kh
+dH
+Ni
+Kh
+FT
+Mo
+Kh
+Kh
+Kh
+Kh
+Kh
+Lh
+Pn
+Kh
+Kh
+Kh
+mq
+"}
+(15,1,1) = {"
+NQ
+Kh
+Du
+Gn
+Kh
+df
+wG
+Kh
+Kh
+Kh
+Kh
+Kh
+Kh
+Kh
+Kh
+Kh
+Kh
+mq
+"}
+(16,1,1) = {"
+NQ
+Kh
+Fd
+XL
+Kh
+xF
+Ki
+Kh
+Kh
+Kh
+Kh
+Kh
+Kh
+Kh
+Kh
+Kh
+Kh
+mq
+"}
+(17,1,1) = {"
+MN
+fF
+Kh
+Kh
+fF
+Kh
+Kh
+fF
+iz
+yu
+sq
+WV
+xU
+ce
+jB
+jU
+de
+MN
+"}
+(18,1,1) = {"
+PL
+KM
+uW
+uW
+KM
+IC
+IC
+KM
+uW
+uW
+KM
+IC
+IC
+KM
+uW
+uW
+KM
+LP
+"}
+(19,1,1) = {"
+xZ
+PL
+pK
+pK
+LP
+xZ
+xZ
+PL
+pK
+pK
+LP
+xZ
+xZ
+PL
+pK
+pK
+LP
+xZ
+"}
diff --git a/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm b/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm
index 66ffca0aef5..5725a7a8e9b 100644
--- a/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm
+++ b/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm
@@ -128,66 +128,56 @@
/obj/machinery/atmospherics/unary/vent_pump/process_atmos()
..()
- if((stat & (NOPOWER|BROKEN)))
- return 0
+ if(stat & (NOPOWER|BROKEN))
+ return FALSE
if(!node)
- on = 0
+ on = FALSE
//broadcast_status() // from now air alarm/control computer should request update purposely --rastaf0
if(!on)
- return 0
+ return FALSE
if(welded)
if(air_contents.return_pressure() >= weld_burst_pressure && prob(5)) //the weld is on but the cover is welded shut, can it withstand the internal pressure?
visible_message("The welded cover of [src] bursts open!")
- for(var/mob/M in range(1, src))
+ for(var/mob/living/M in range(1))
unsafe_pressure_release(M, air_contents.return_pressure()) //let's send everyone flying
welded = FALSE
update_icon()
- return 0
+ return FALSE
var/datum/gas_mixture/environment = loc.return_air()
var/environment_pressure = environment.return_pressure()
-
if(pump_direction) //internal -> external
var/pressure_delta = 10000
-
- if(pressure_checks&1)
+ if(pressure_checks & 1)
pressure_delta = min(pressure_delta, (external_pressure_bound - environment_pressure))
- if(pressure_checks&2)
+ if(pressure_checks & 2)
pressure_delta = min(pressure_delta, (air_contents.return_pressure() - internal_pressure_bound))
- if(pressure_delta > 0.5)
- if(air_contents.temperature > 0)
- var/transfer_moles = pressure_delta*environment.volume/(air_contents.temperature * R_IDEAL_GAS_EQUATION)
-
- var/datum/gas_mixture/removed = air_contents.remove(transfer_moles)
-
- loc.assume_air(removed)
- air_update_turf()
-
- parent.update = 1
+ if(pressure_delta > 0.5 && air_contents.temperature > 0)
+ var/transfer_moles = pressure_delta * environment.volume / (air_contents.temperature * R_IDEAL_GAS_EQUATION)
+ var/datum/gas_mixture/removed = air_contents.remove(transfer_moles)
+ loc.assume_air(removed)
+ air_update_turf()
+ parent.update = TRUE
else //external -> internal
var/pressure_delta = 10000
- if(pressure_checks&1)
+ if(pressure_checks & 1)
pressure_delta = min(pressure_delta, (environment_pressure - external_pressure_bound))
- if(pressure_checks&2)
+ if(pressure_checks & 2)
pressure_delta = min(pressure_delta, (internal_pressure_bound - air_contents.return_pressure()))
- if(pressure_delta > 0.5)
- if(environment.temperature > 0)
- var/transfer_moles = pressure_delta*air_contents.volume/(environment.temperature * R_IDEAL_GAS_EQUATION)
+ if(pressure_delta > 0.5 && environment.temperature > 0)
+ var/transfer_moles = pressure_delta * air_contents.volume / (environment.temperature * R_IDEAL_GAS_EQUATION)
+ var/datum/gas_mixture/removed = loc.remove_air(transfer_moles)
+ if(isnull(removed)) //in space
+ return
+ air_contents.merge(removed)
+ air_update_turf()
+ parent.update = TRUE
- var/datum/gas_mixture/removed = loc.remove_air(transfer_moles)
- if(isnull(removed)) //in space
- return
-
- air_contents.merge(removed)
- air_update_turf()
-
- parent.update = 1
-
- return 1
+ return TRUE
//Radio remote control
@@ -386,11 +376,11 @@
if(I.use_tool(src, user, 20, volume = I.tool_volume))
if(!welded)
welded = TRUE
- visible_message("[user] welds [src] shut!",\
+ user.visible_message("[user] welds [src] shut!",\
"You weld [src] shut!")
else
welded = FALSE
- visible_message("[user] unwelds [src]!",\
+ user.visible_message("[user] unwelds [src]!",\
"You unweld [src]!")
update_icon()
diff --git a/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm
index ed06dd68ce6..bbd5e760d2f 100644
--- a/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm
+++ b/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm
@@ -404,10 +404,10 @@
if(I.use_tool(src, user, 20, volume = I.tool_volume))
if(!welded)
welded = TRUE
- visible_message("[user] welds [src] shut!",\
+ user.visible_message("[user] welds [src] shut!",\
"You weld [src] shut!")
else
welded = FALSE
- visible_message("[user] unwelds [src]!",\
+ user.visible_message("[user] unwelds [src]!",\
"You unweld [src]!")
update_icon()
diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm
index 10aa1718dda..26b1d2d44aa 100644
--- a/code/__DEFINES/dcs/signals.dm
+++ b/code/__DEFINES/dcs/signals.dm
@@ -726,3 +726,7 @@
#define COMSIG_XENO_TURF_CLICK_CTRL "xeno_turf_click_alt"
///from monkey CtrlClickOn(): (/mob)
#define COMSIG_XENO_MONKEY_CLICK_CTRL "xeno_monkey_click_ctrl"
+
+///SSalarm signals
+#define COMSIG_TRIGGERED_ALARM "ssalarm_triggered"
+#define COMSIG_CANCELLED_ALARM "ssalarm_cancelled"
diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index 3bc2b086c46..0a36db1b185 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -69,9 +69,6 @@
#define ZONE_ACTIVE 1
#define ZONE_SLEEPING 0
-#define shuttle_time_in_station 1800 // 3 minutes in the station
-#define shuttle_time_to_arrive 6000 // 10 minutes to arrive
-
#define EVENT_LEVEL_MUNDANE 1
#define EVENT_LEVEL_MODERATE 2
#define EVENT_LEVEL_MAJOR 3
@@ -314,8 +311,6 @@
#define TRIGGER_GUARD_NONE 0
#define TRIGGER_GUARD_NORMAL 1
-#define CLIENT_FROM_VAR(I) (ismob(I) ? I:client : (istype(I, /client) ? I : (istype(I, /datum/mind) ? I:current?:client : null)))
-
// Macro to get the current elapsed round time, rather than total world runtime
#define ROUND_TIME (SSticker.round_start_time ? (world.time - SSticker.round_start_time) : 0)
diff --git a/code/__DEFINES/stat.dm b/code/__DEFINES/stat.dm
index c9763e4836c..9c115bed86f 100644
--- a/code/__DEFINES/stat.dm
+++ b/code/__DEFINES/stat.dm
@@ -22,16 +22,9 @@
// these define the time taken for the shuttle to get to SS13
// and the time before it leaves again
-#define SHUTTLE_PREPTIME 300 // 5 minutes = 300 seconds - after this time, the shuttle departs centcom and cannot be recalled
-#define SHUTTLE_LEAVETIME 180 // 3 minutes = 180 seconds - the duration for which the shuttle will wait at the station after arriving
-#define SHUTTLE_TRANSIT_DURATION 300 // 5 minutes = 300 seconds - how long it takes for the shuttle to get to the station
-#define SHUTTLE_TRANSIT_DURATION_RETURN 120 // 2 minutes = 120 seconds - for some reason it takes less time to come back, go figure.
-
-//Ferry shuttle processing status
-#define IDLE_STATE 0
-#define WAIT_LAUNCH 1
-#define WAIT_ARRIVE 2
-#define WAIT_FINISH 3
+#define SHUTTLE_CALLTIME 6000 //10 minutes = 6000 deciseconds - time taken for emergency shuttle to reach the station when called (in deciseconds)
+#define SHUTTLE_DOCKTIME 1800 //3 minutes = 1800 deciseconds - time taken for emergency shuttle to leave again once it has docked (in deciseconds)
+#define SHUTTLE_ESCAPETIME 1200 //2 minutes = 1200 deciseconds - time taken for emergency shuttle to reach a safe distance after leaving station (in deciseconds)
//shuttle mode defines
#define SHUTTLE_IGNITING 0
diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm
index 153eca7f373..fd7031409d8 100644
--- a/code/__DEFINES/subsystems.dm
+++ b/code/__DEFINES/subsystems.dm
@@ -80,8 +80,7 @@
#define INIT_ORDER_NANOMOB -23
#define INIT_ORDER_SQUEAK -40
#define INIT_ORDER_PATH -50
-#define INIT_ORDER_PERSISTENCE -95
-#define INIT_ORDER_CHAT -100 //Should be last to ensure chat remains smooth during init.
+#define INIT_ORDER_PERSISTENCE -95
// Subsystem fire priority, from lowest to highest priority
// If the subsystem isn't listed here it's either DEFAULT or PROCESS (if it's a processing subsystem child)
@@ -113,7 +112,6 @@
#define FIRE_PRIORITY_MOBS 100
#define FIRE_PRIORITY_NANOUI 110
#define FIRE_PRIORITY_TICKER 200
-#define FIRE_PRIORITY_CHAT 400
#define FIRE_PRIORITY_OVERLAYS 500
#define FIRE_PRIORITY_INPUT 1000 // This must always always be the max highest priority. Player input must never be lost.
diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm
index 181d2a5140c..829c2c4fade 100644
--- a/code/__HELPERS/game.dm
+++ b/code/__HELPERS/game.dm
@@ -5,11 +5,11 @@
var/turf/T = get_turf(A)
return T ? T.loc : null
-/proc/get_area_name(N) //get area by its name
- for(var/area/A in world)
- if(A.name == N)
- return A
- return 0
+/proc/get_area_name(atom/X, format_text = FALSE)
+ var/area/A = isarea(X) ? X : get_area(X)
+ if(!A)
+ return null
+ return format_text ? format_text(A.name) : A.name
/proc/get_location_name(atom/X, format_text = FALSE)
var/area/A = isarea(X) ? X : get_area(X)
@@ -31,6 +31,24 @@
areas |= T.loc
return areas
+/proc/get_open_turf_in_dir(atom/center, dir)
+ var/turf/T = get_ranged_target_turf(center, dir, 1)
+ if(T && !T.density)
+ return T
+
+/proc/get_adjacent_open_turfs(atom/center)
+ . = list(get_open_turf_in_dir(center, NORTH),
+ get_open_turf_in_dir(center, SOUTH),
+ get_open_turf_in_dir(center, EAST),
+ get_open_turf_in_dir(center, WEST))
+ listclearnulls(.)
+
+/proc/get_adjacent_open_areas(atom/center)
+ . = list()
+ var/list/adjacent_turfs = get_adjacent_open_turfs(center)
+ for(var/I in adjacent_turfs)
+ . |= get_area(I)
+
// Like view but bypasses luminosity check
/proc/hear(var/range, var/atom/source)
diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm
index c1cf5d53520..075f3370965 100644
--- a/code/__HELPERS/lists.dm
+++ b/code/__HELPERS/lists.dm
@@ -672,9 +672,6 @@ proc/dd_sortedObjectList(list/incoming)
/obj/machinery/camera/dd_SortValue()
return "[c_tag]"
-/datum/alarm/dd_SortValue()
- return "[sanitize(last_name)]"
-
//Picks from the list, with some safeties, and returns the "default" arg if it fails
#define DEFAULTPICK(L, default) ((istype(L, /list) && L:len) ? pick(L) : default)
diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm
index 47650177283..034e8851c18 100644
--- a/code/__HELPERS/text.dm
+++ b/code/__HELPERS/text.dm
@@ -615,5 +615,3 @@ proc/checkhtml(var/t)
text = replacetext(text, "
", "\[cell\]")
text = replacetext(text, " ", "\[logo\]")
return text
-
-#define string2charlist(string) (splittext(string, regex("(\\x0A|.)")) - splittext(string, ""))
diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm
index d84215e97a3..ab3bfa85451 100644
--- a/code/_globalvars/lists/objects.dm
+++ b/code/_globalvars/lists/objects.dm
@@ -47,7 +47,7 @@ GLOBAL_LIST_EMPTY(ladders)
GLOBAL_LIST_INIT(active_diseases, list()) //List of Active disease in all mobs; purely for quick referencing.
GLOBAL_LIST_EMPTY(mob_spawners) // All mob_spawn objects
-
+GLOBAL_LIST_EMPTY(alert_consoles) // Station alert consoles, /obj/machinery/computer/station_alert
GLOBAL_LIST_EMPTY(explosive_walls)
GLOBAL_LIST_EMPTY(engine_beacon_list)
diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm
index ada0ce8cd30..856f724f925 100644
--- a/code/_onclick/hud/ai.dm
+++ b/code/_onclick/hud/ai.dm
@@ -64,7 +64,7 @@
/obj/screen/ai/alerts/Click()
if(isAI(usr))
var/mob/living/silicon/ai/AI = usr
- AI.subsystem_alarm_monitor()
+ AI.ai_alerts()
/obj/screen/ai/announcement
name = "Make Announcement"
diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index 531f510e3cb..7b53bce22de 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -569,6 +569,13 @@ so as to remain in compliance with the most up-to-date laws."
if(NOTIFY_FOLLOW)
G.ManualFollow(target)
+/obj/screen/alert/notify_action/Topic(href, href_list)
+ if(..())
+ return TRUE
+
+ if(href_list["signup"] && isobserver(usr) && poll?.sign_up(usr))
+ display_signed_up()
+
/obj/screen/alert/notify_action/proc/display_signed_up()
var/image/I = image('icons/mob/screen_gen.dmi', icon_state = "selector")
I.layer = FLOAT_LAYER
diff --git a/code/_onclick/hud/ghost.dm b/code/_onclick/hud/ghost.dm
index a291120fb85..67df5eb3013 100644
--- a/code/_onclick/hud/ghost.dm
+++ b/code/_onclick/hud/ghost.dm
@@ -81,6 +81,9 @@
/obj/screen/ghost/respawn_pai/Click()
var/mob/dead/observer/G = usr
+ if(!GLOB.paiController.check_recruit(G))
+ to_chat(G, "You are not eligible to become a pAI.")
+ return
GLOB.paiController.recruitWindow(G)
/datum/hud/ghost
diff --git a/code/_onclick/hud/guardian.dm b/code/_onclick/hud/guardian.dm
index d628124e052..6c9e95f457e 100644
--- a/code/_onclick/hud/guardian.dm
+++ b/code/_onclick/hud/guardian.dm
@@ -13,7 +13,7 @@
using.icon_state = mymob.a_intent
static_inventory += using
action_intent = using
-
+
using = new /obj/screen/guardian/Manifest()
using.screen_loc = ui_rhand
static_inventory += using
@@ -49,8 +49,8 @@
/obj/screen/guardian/Manifest/Click()
if(isguardian(usr))
var/mob/living/simple_animal/hostile/guardian/G = usr
- G.Manifest()
-
+ if(G.loc == G.summoner)
+ G.Manifest()
/obj/screen/guardian/Recall
icon_state = "recall"
diff --git a/code/controllers/subsystem/alarm.dm b/code/controllers/subsystem/alarm.dm
index 289adf6de40..3d91d763be3 100644
--- a/code/controllers/subsystem/alarm.dm
+++ b/code/controllers/subsystem/alarm.dm
@@ -1,31 +1,31 @@
-SUBSYSTEM_DEF(alarms)
- name = "Alarms"
- init_order = INIT_ORDER_ALARMS // 2
- offline_implications = "Alarms (Power, camera, fire, etc) will no longer be checked. No immediate action is needed."
- var/datum/alarm_handler/atmosphere/atmosphere_alarm = new()
- var/datum/alarm_handler/burglar/burglar_alarm = new()
- var/datum/alarm_handler/camera/camera_alarm = new()
- var/datum/alarm_handler/fire/fire_alarm = new()
- var/datum/alarm_handler/motion/motion_alarm = new()
- var/datum/alarm_handler/power/power_alarm = new()
- var/list/datum/alarm/all_handlers
+SUBSYSTEM_DEF(alarm)
+ name = "Alarm"
+ flags = SS_NO_INIT | SS_NO_FIRE
+ var/list/alarms = list("Motion" = list(), "Fire" = list(), "Atmosphere" = list(), "Power" = list(), "Camera" = list(), "Burglar" = list())
-/datum/controller/subsystem/alarms/Initialize(start_timeofday)
- all_handlers = list(SSalarms.atmosphere_alarm, SSalarms.burglar_alarm, SSalarms.camera_alarm, SSalarms.fire_alarm, SSalarms.motion_alarm, SSalarms.power_alarm)
- return ..()
+/datum/controller/subsystem/alarm/proc/triggerAlarm(class, area/A, list/O, obj/alarmsource)
+ var/list/L = alarms[class]
+ for(var/I in L)
+ if(I == A.name)
+ var/list/alarm = L[I]
+ var/list/sources = alarm[3]
+ if(!(alarmsource.UID() in sources))
+ sources += alarmsource.UID()
+ return TRUE
+ L[A.name] = list(get_area_name(A, TRUE), O, list(alarmsource.UID()))
+ SEND_SIGNAL(SSalarm, COMSIG_TRIGGERED_ALARM, class, A, O, alarmsource)
+ return TRUE
-/datum/controller/subsystem/alarms/fire()
- for(var/datum/alarm_handler/AH in all_handlers)
- AH.process()
+/datum/controller/subsystem/alarm/proc/cancelAlarm(class, area/A, obj/origin)
+ var/list/L = alarms[class]
+ var/cleared = FALSE
+ for(var/I in L)
+ if(I == A.name)
+ var/list/alarm = L[I]
+ var/list/srcs = alarm[3]
+ srcs -= origin.UID()
+ if(!length(srcs))
+ cleared = TRUE
+ L -= I
-/datum/controller/subsystem/alarms/proc/active_alarms()
- var/list/all_alarms = new ()
- for(var/datum/alarm_handler/AH in all_handlers)
- var/list/alarms = AH.alarms
- all_alarms += alarms
-
- return all_alarms
-
-/datum/controller/subsystem/alarms/proc/number_of_active_alarms()
- var/list/alarms = active_alarms()
- return alarms.len
+ SEND_SIGNAL(SSalarm, COMSIG_CANCELLED_ALARM, class, A, origin, cleared)
diff --git a/code/controllers/subsystem/chat.dm b/code/controllers/subsystem/chat.dm
deleted file mode 100644
index 4eb468a0952..00000000000
--- a/code/controllers/subsystem/chat.dm
+++ /dev/null
@@ -1,67 +0,0 @@
-SUBSYSTEM_DEF(chat)
- name = "Chat"
- flags = SS_TICKER|SS_NO_INIT
- wait = 1
- priority = FIRE_PRIORITY_CHAT
- init_order = INIT_ORDER_CHAT
- offline_implications = "Chat messages will no longer be cleanly queued. No immediate action is needed."
-
- var/list/payload = list()
-
-
-/datum/controller/subsystem/chat/fire()
- for(var/i in payload)
- var/client/C = i
- if(C)
- C << output(payload[C], "browseroutput:output")
- payload -= C
-
- if(MC_TICK_CHECK)
- return
-
-
-/datum/controller/subsystem/chat/proc/queue(target, message, flag)
- if(!target || !message)
- return
-
- if(!istext(message))
- stack_trace("to_chat called with invalid input type")
- return
-
- if(target == world)
- target = GLOB.clients
-
- //Some macros remain in the string even after parsing and fuck up the eventual output
- message = replacetext(message, "\improper", "")
- message = replacetext(message, "\proper", "")
- message += " "
-
-
- //url_encode it TWICE, this way any UTF-8 characters are able to be decoded by the Javascript.
- //Do the double-encoding here to save nanoseconds
- var/twiceEncoded = url_encode(url_encode(message))
-
- if(islist(target))
- for(var/I in target)
- var/client/C = CLIENT_FROM_VAR(I) //Grab us a client if possible
-
- if(!C?.chatOutput || C.chatOutput.broken) //A player who hasn't updated his skin file.
- continue
-
- if(!C.chatOutput.loaded) //Client still loading, put their messages in a queue
- C.chatOutput.messageQueue += message
- continue
-
- payload[C] += twiceEncoded
-
- else
- var/client/C = CLIENT_FROM_VAR(target) //Grab us a client if possible
-
- if(!C?.chatOutput || C.chatOutput.broken) //A player who hasn't updated his skin file.
- return
-
- if(!C.chatOutput.loaded) //Client still loading, put their messages in a queue
- C.chatOutput.messageQueue += message
- return
-
- payload[C] += twiceEncoded
diff --git a/code/controllers/subsystem/ghost_spawns.dm b/code/controllers/subsystem/ghost_spawns.dm
index 6063d6995e5..ea0aefb88bd 100644
--- a/code/controllers/subsystem/ghost_spawns.dm
+++ b/code/controllers/subsystem/ghost_spawns.dm
@@ -59,7 +59,7 @@ SUBSYSTEM_DEF(ghost_spawns)
var/category = "[P.hash]_notify_action"
for(var/mob/dead/observer/M in (ignore_respawnability ? GLOB.player_list : GLOB.respawnable_list))
- if(!is_eligible(M))
+ if(!is_eligible(M, role, antag_age_check, role, min_hours, check_antaghud))
continue
SEND_SOUND(M, 'sound/misc/notice2.ogg')
@@ -125,6 +125,13 @@ SUBSYSTEM_DEF(ghost_spawns)
I.plane = FLOAT_PLANE
A.overlays += I
+ // Chat message
+ var/act_jump = ""
+ if(isatom(source))
+ act_jump = "\[Teleport]"
+ var/act_signup = "\[Sign Up]"
+ to_chat(M, "Now looking for candidates [role ? "to play as \an [get_roletext(role)]" : "\"[question]\""]. [act_jump] [act_signup]")
+
// Start processing it so it updates visually the timer
START_PROCESSING(SSprocessing, A)
A.process()
diff --git a/code/controllers/subsystem/shuttles.dm b/code/controllers/subsystem/shuttles.dm
index 247d71d05b8..08fa7709320 100644
--- a/code/controllers/subsystem/shuttles.dm
+++ b/code/controllers/subsystem/shuttles.dm
@@ -14,9 +14,9 @@ SUBSYSTEM_DEF(shuttle)
//emergency shuttle stuff
var/obj/docking_port/mobile/emergency/emergency
var/obj/docking_port/mobile/emergency/backup/backup_shuttle
- var/emergencyCallTime = 6000 //time taken for emergency shuttle to reach the station when called (in deciseconds)
- var/emergencyDockTime = 1800 //time taken for emergency shuttle to leave again once it has docked (in deciseconds)
- var/emergencyEscapeTime = 1200 //time taken for emergency shuttle to reach a safe distance after leaving station (in deciseconds)
+ var/emergencyCallTime = SHUTTLE_CALLTIME //time taken for emergency shuttle to reach the station when called (in deciseconds)
+ var/emergencyDockTime = SHUTTLE_DOCKTIME //time taken for emergency shuttle to leave again once it has docked (in deciseconds)
+ var/emergencyEscapeTime = SHUTTLE_ESCAPETIME //time taken for emergency shuttle to reach a safe distance after leaving station (in deciseconds)
var/emergency_sec_level_time = 0 // time sec level was last raised to red or higher
var/area/emergencyLastCallLoc
var/emergencyNoEscape
diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm
index abb0b604069..8d02529ae6b 100644
--- a/code/controllers/verbs.dm
+++ b/code/controllers/verbs.dm
@@ -20,7 +20,7 @@
message_admins("Admin [key_name_admin(usr)] has restarted the [controller] controller.")
/client/proc/debug_controller(controller in list("failsafe", "Master", "Ticker", "Air", "Jobs", "Sun", "Radio", "Configuration", "pAI",
- "Cameras", "Garbage", "Event", "Alarm", "Nano", "Vote", "Fires",
+ "Cameras", "Garbage", "Event", "Nano", "Vote", "Fires",
"Mob", "NPC Pool", "Shuttle", "Timer", "Weather", "Space", "Mob Hunt Server","Input"))
set category = "Debug"
set name = "Debug Controller"
@@ -65,9 +65,6 @@
if("Event")
debug_variables(SSevents)
feedback_add_details("admin_verb","DEvent")
- if("Alarm")
- debug_variables(SSalarms)
- feedback_add_details("admin_verb", "DAlarm")
if("Nano")
debug_variables(SSnanoui)
feedback_add_details("admin_verb","DNano")
diff --git a/code/datums/components/caltrop.dm b/code/datums/components/caltrop.dm
index 3bd740973a3..fc781b288a9 100644
--- a/code/datums/components/caltrop.dm
+++ b/code/datums/components/caltrop.dm
@@ -42,7 +42,7 @@
if(!(flags & CALTROP_BYPASS_SHOES) && (H.shoes || feetCover))
return
- if((H.flying) || H.buckled)
+ if(H.flying || H.floating || H.buckled)
return
var/damage = rand(min_damage, max_damage)
diff --git a/code/datums/components/slippery.dm b/code/datums/components/slippery.dm
index 88e51209afb..a7b81856468 100644
--- a/code/datums/components/slippery.dm
+++ b/code/datums/components/slippery.dm
@@ -51,6 +51,6 @@
Additionally calls the parent's `after_slip()` proc on the `victim`.
*/
/datum/component/slippery/proc/Slip(datum/source, mob/living/carbon/human/victim)
- if(istype(victim) && prob(slip_chance) && victim.slip(description, stun, weaken, slip_tiles, walking_is_safe, slip_always, slip_verb))
+ if(istype(victim) && !victim.flying && prob(slip_chance) && victim.slip(description, stun, weaken, slip_tiles, walking_is_safe, slip_always, slip_verb))
var/atom/movable/owner = parent
owner.after_slip(victim)
diff --git a/code/datums/components/squeak.dm b/code/datums/components/squeak.dm
index 4c55ad2ad82..f79439f2b3b 100644
--- a/code/datums/components/squeak.dm
+++ b/code/datums/components/squeak.dm
@@ -67,6 +67,14 @@
var/obj/item/projectile/P = AM
if(P.original != parent)
return
+ if(ismob(AM))
+ var/mob/M = AM
+ if(M.flying)
+ return
+ if(isliving(AM))
+ var/mob/living/L = M
+ if(L.floating)
+ return
var/atom/current_parent = parent
if(isturf(current_parent.loc))
play_squeak()
diff --git a/code/datums/log_record.dm b/code/datums/log_record.dm
index 7d127eedc7d..2a659477b47 100644
--- a/code/datums/log_record.dm
+++ b/code/datums/log_record.dm
@@ -3,8 +3,8 @@
var/raw_time // When did this happen?
var/what // What happened
var/who // Who did it
- var/target // Who/what was targeted (can be a string)
- var/turf/where // Where did it happen
+ var/target // Who/what was targeted
+ var/where // Where did it happen
/datum/log_record/New(_log_type, _who, _what, _target, _where, _raw_time)
log_type = _log_type
@@ -12,9 +12,13 @@
who = get_subject_text(_who, _log_type)
what = _what
target = get_subject_text(_target, _log_type)
- if(!_where)
+ if(!istext(_where) && !isturf(_where))
_where = get_turf(_who)
- where = _where
+ if(isturf(_where))
+ var/turf/T = _where
+ where = ADMIN_COORDJMP(T)
+ else
+ where = _where
if(!_raw_time)
_raw_time = world.time
raw_time = _raw_time
diff --git a/code/datums/log_viewer.dm b/code/datums/log_viewer.dm
index 5f7084a738b..c5a17507606 100644
--- a/code/datums/log_viewer.dm
+++ b/code/datums/log_viewer.dm
@@ -4,6 +4,9 @@ if(!result || result.ckey != __ckey){\
selected_ckeys_mobs[__ckey] = result;\
}
+#define RECORD_WARN_LIMIT 1000
+#define RECORD_HARD_LIMIT 2500
+
/datum/log_viewer
var/time_from = 0
var/time_to = 4 HOURS // 4 Hours should be enough. INFINITY would screw the UI up
@@ -23,7 +26,7 @@ if(!result || result.ckey != __ckey){\
log_records.Cut()
return
-/datum/log_viewer/proc/search()
+/datum/log_viewer/proc/search(user)
log_records.Cut() // Empty the old results
var/list/invalid_mobs = list()
var/list/ckeys = selected_ckeys.Copy()
@@ -47,8 +50,8 @@ if(!result || result.ckey != __ckey){\
continue
log_records.Add(logs.Copy(start_index, end_index + 1))
- if(invalid_mobs.len)
- to_chat(usr, "The search criteria contained invalid mobs. They have been removed from the criteria.")
+ if(length(invalid_mobs))
+ to_chat(user, "The search criteria contained invalid mobs. They have been removed from the criteria.")
for(var/i in invalid_mobs)
selected_mobs -= i // Cleanup
@@ -103,13 +106,13 @@ if(!result || result.ckey != __ckey){\
return 0
/datum/log_viewer/proc/add_mobs(list/mob/mobs)
- if(!mobs?.len)
+ if(!length(mobs))
return
for(var/i in mobs)
add_mob(usr, i, FALSE)
/datum/log_viewer/proc/add_ckey(mob/user, ckey)
- if(!user || !user)
+ if(!user || !ckey)
return
selected_ckeys |= ckey
UPDATE_CKEY_MOB(ckey)
@@ -127,7 +130,7 @@ if(!result || result.ckey != __ckey){\
var/all_log_types = ALL_LOGS
var/trStyleTop = "border-top:2px solid; border-bottom:2px solid; padding-top: 5px; padding-bottom: 5px;"
var/trStyle = "border-top:1px solid; border-bottom:1px solid; padding-top: 5px; padding-bottom: 5px;"
- var/dat
+ var/list/dat = list()
dat += ""
dat += ""
dat += " Time Search Range: [gameTimestamp(wtime = time_from)]"
@@ -184,13 +187,12 @@ if(!result || result.ckey != __ckey){\
dat +=" | [time] | [L.log_type] | \
[L.who] | [L.what] | \
- [L.target] | [ADMIN_COORDJMP(L.where)] | "
-
+ [L.target] | [L.where] | "
dat += ""
dat += " "
var/datum/browser/popup = new(user, "Log Viewer", "Log Viewer", 1500, 600)
- popup.set_content(dat)
+ popup.set_content(dat.Join())
popup.open()
/datum/log_viewer/Topic(href, href_list)
@@ -219,6 +221,19 @@ if(!result || result.ckey != __ckey){\
return
if(href_list["search"])
search(usr)
+ var/records_len = length(log_records)
+ if(records_len > RECORD_WARN_LIMIT)
+ var/datum/log_record/last_record = log_records[RECORD_WARN_LIMIT]
+ var/last_time = gameTimestamp(wtime = last_record.raw_time - 9.99)
+ var/answer = alert(usr, "More than [RECORD_WARN_LIMIT] records were found. continuing will take a long time. This won't cause much lag for the server. Time at the [RECORD_WARN_LIMIT]th record '[last_time]'", "Warning", "Continue", "Limit to [RECORD_WARN_LIMIT]", "Cancel")
+ if(answer == "Limit to [RECORD_WARN_LIMIT]")
+ log_records.Cut(RECORD_WARN_LIMIT)
+ else if(answer == "Cancel")
+ log_records.Cut()
+ else
+ if(records_len > RECORD_HARD_LIMIT)
+ to_chat(usr, "Record limit reached. Limiting to [RECORD_HARD_LIMIT].")
+ log_records.Cut(RECORD_HARD_LIMIT)
show_ui(usr)
return
if(href_list["clear_all"])
@@ -300,3 +315,5 @@ if(!result || result.ckey != __ckey){\
return get_display_name(M)
#undef UPDATE_CKEY_MOB
+#undef RECORD_WARN_LIMIT
+#undef RECORD_HARD_LIMIT
diff --git a/code/datums/ruins/space.dm b/code/datums/ruins/space.dm
index 799a12f4db9..3541be89983 100644
--- a/code/datums/ruins/space.dm
+++ b/code/datums/ruins/space.dm
@@ -248,3 +248,29 @@
allow_duplicates = FALSE // I dont even want to think about what happens if you have 2 shuttles with the same ID. Likely scary stuff.
always_place = TRUE // Its designed to make exploring other space ruins more accessible
cost = 0 // Force spawned so shouldnt have a cost
+
+/datum/map_template/ruin/space/syndiecakesfactory
+ id = "Syndiecakes Factory"
+ suffix = "syndiecakesfactory.dmm"
+ name = "Syndicakes Factory"
+ description = "Syndicate used to get funds selling corgi cakes produced here. Was it hit by meteors or by a Nanotrasen comando?"
+ allow_duplicates = FALSE
+ cost = 2 //telecomms + multiple mobs
+
+/datum/map_template/ruin/space/debris1
+ id = "debris1"
+ suffix = "debris1.dmm"
+ name = "Debris field 1"
+ description = "A bunch of metal chunks, wires and space waste"
+
+/datum/map_template/ruin/space/debris2
+ id = "debris2"
+ suffix = "debris2.dmm"
+ name = "Debris field 2"
+ description = "A bunch of metal chunks, wires and space waste that used to be some kind of secure storage facility"
+
+/datum/map_template/ruin/space/debris3
+ id = "debris3"
+ suffix = "debris3.dmm"
+ name = "Debris field 3"
+ description = "A bunch of metal chunks, wires and space waste. It used to be an arcade."
diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm
index 4d6310041e5..dacc08dee31 100644
--- a/code/datums/shuttles.dm
+++ b/code/datums/shuttles.dm
@@ -133,3 +133,8 @@
suffix = "admin"
name = "NTV Argos"
description = "Default Admin ship. An older ship used for special operations."
+
+/datum/map_template/shuttle/admin/armory
+ suffix = "armory"
+ name = "NRV Sparta"
+ description = "Armory Shuttle, with plenty of guns to hand out and some general supplies."
diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm
index 5b21036b2bc..c8f2b6bb99b 100644
--- a/code/datums/supplypacks.dm
+++ b/code/datums/supplypacks.dm
@@ -1173,11 +1173,10 @@ GLOBAL_LIST_INIT(all_supply_groups, list(SUPPLY_EMERGENCY,SUPPLY_SECURITY,SUPPLY
containername = "fox crate"
/datum/supply_packs/organic/butterfly
- name = "Butterflies Crate"
+ name = "Butterfly Crate"
cost = 50
containertype = /obj/structure/closet/critter/butterfly
- containername = "butterflies crate"
- contraband = 1
+ containername = "butterfly crate"
/datum/supply_packs/organic/deer
name = "Deer Crate"
diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm
index 4814e27380b..8a172bb85b1 100644
--- a/code/datums/uplink_item.dm
+++ b/code/datums/uplink_item.dm
@@ -1725,8 +1725,8 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
U.purchase_log += "[bicon(C)]"
for(var/item in bought_items)
- new item(C)
- U.purchase_log += "[bicon(item)]"
+ var/obj/purchased = new item(C)
+ U.purchase_log += "[bicon(purchased)]"
log_game("[key_name(usr)] purchased a surplus crate with [jointext(itemlog, ", ")]")
/datum/uplink_item/bundles_TC/telecrystal
diff --git a/code/datums/weather/weather_types/floor_is_lava.dm b/code/datums/weather/weather_types/floor_is_lava.dm
index 9f98a481dbf..0233e0aee71 100644
--- a/code/datums/weather/weather_types/floor_is_lava.dm
+++ b/code/datums/weather/weather_types/floor_is_lava.dm
@@ -35,6 +35,8 @@
return
if(!L.client) //Only sentient people are going along with it!
return
+ if(L.flying)
+ return
L.adjustFireLoss(3)
/datum/weather/floor_is_lava/fake
diff --git a/code/datums/wires/alarm.dm b/code/datums/wires/alarm.dm
index 99180782345..824009701ab 100644
--- a/code/datums/wires/alarm.dm
+++ b/code/datums/wires/alarm.dm
@@ -47,8 +47,8 @@
A.apply_mode()
if(WIRE_AALARM)
- if(A.alarm_area.atmosalert(2, A))
- A.post_alert(2)
+ if(A.alarm_area.atmosalert(ATMOS_ALARM_DANGER, A))
+ A.post_alert(ATMOS_ALARM_DANGER)
A.update_icon()
..()
@@ -85,7 +85,7 @@
A.apply_mode()
if(WIRE_AALARM)
- if(A.alarm_area.atmosalert(0, A))
- A.post_alert(0)
+ if(A.alarm_area.atmosalert(ATMOS_ALARM_NONE, A))
+ A.post_alert(ATMOS_ALARM_NONE)
A.update_icon()
..()
diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm
index c33e7609685..9a333d268f3 100644
--- a/code/game/area/Space Station 13 areas.dm
+++ b/code/game/area/Space Station 13 areas.dm
@@ -50,10 +50,10 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
/area/space/atmosalert()
return
-/area/space/fire_alert()
+/area/space/firealert(obj/source)
return
-/area/space/fire_reset()
+/area/space/firereset(obj/source)
return
/area/space/readyalert()
diff --git a/code/game/area/ai_monitored.dm b/code/game/area/ai_monitored.dm
index 8f65ac634f4..723574ee949 100644
--- a/code/game/area/ai_monitored.dm
+++ b/code/game/area/ai_monitored.dm
@@ -1,24 +1,30 @@
/area/ai_monitored
name = "AI Monitored Area"
- var/obj/machinery/camera/motioncamera = null
+ var/list/motioncameras = list()
+ var/list/motionTargets = list()
-
-/area/ai_monitored/LateInitialize()
+/area/ai_monitored/Initialize(mapload)
. = ..()
- // locate and store the motioncamera
- for(var/obj/machinery/camera/M in src)
- if(M.isMotion())
- motioncamera = M
- M.area_motion = src
- break
+ if(mapload)
+ for(var/obj/machinery/camera/M in src)
+ if(M.isMotion())
+ motioncameras.Add(M)
+ M.set_area_motion(src)
/area/ai_monitored/Entered(atom/movable/O)
..()
- if(ismob(O) && motioncamera)
- motioncamera.newTarget(O)
+ if(ismob(O) && length(motioncameras))
+ for(var/X in motioncameras)
+ var/obj/machinery/camera/cam = X
+ cam.newTarget(O)
+ return
/area/ai_monitored/Exited(atom/movable/O)
- if(ismob(O) && motioncamera)
- motioncamera.lostTarget(O)
+ ..()
+ if(ismob(O) && length(motioncameras))
+ for(var/X in motioncameras)
+ var/obj/machinery/camera/cam = X
+ cam.lostTargetRef(O.UID())
+ return
diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm
index da80a6e775c..de913ac9f91 100644
--- a/code/game/area/areas.dm
+++ b/code/game/area/areas.dm
@@ -57,6 +57,11 @@
var/list/ambientsounds = GENERIC_SOUNDS
+ var/list/firedoors
+ var/list/cameras
+ var/list/firealarms
+ var/firedoors_last_closed_on = 0
+
var/fast_despawn = FALSE
var/can_get_auto_cryod = TRUE
var/hide_attacklogs = FALSE // For areas such as thunderdome, lavaland syndiebase, etc which generate a lot of spammy attacklogs. Reduces log priority.
@@ -125,35 +130,6 @@
cameras += C
return cameras
-
-/area/proc/atmosalert(danger_level, var/alarm_source, var/force = FALSE)
- if(report_alerts)
- if(danger_level == ATMOS_ALARM_NONE)
- SSalarms.atmosphere_alarm.clearAlarm(src, alarm_source)
- else
- SSalarms.atmosphere_alarm.triggerAlarm(src, alarm_source, severity = danger_level)
-
- //Check all the alarms before lowering atmosalm. Raising is perfectly fine. If force = 1 we don't care.
- for(var/obj/machinery/alarm/AA in src)
- if(!(AA.stat & (NOPOWER|BROKEN)) && !AA.shorted && AA.report_danger_level && !force)
- danger_level = max(danger_level, AA.danger_level)
-
- if(danger_level != atmosalm)
- if(danger_level < ATMOS_ALARM_WARNING && atmosalm >= ATMOS_ALARM_WARNING)
- //closing the doors on red and opening on green provides a bit of hysteresis that will hopefully prevent fire doors from opening and closing repeatedly due to noise
- air_doors_open()
- else if(danger_level >= ATMOS_ALARM_DANGER && atmosalm < ATMOS_ALARM_DANGER)
- air_doors_close()
-
- atmosalm = danger_level
- for(var/obj/machinery/alarm/AA in src)
- AA.update_icon()
-
- GLOB.air_alarm_repository.update_cache(src)
- return 1
- GLOB.air_alarm_repository.update_cache(src)
- return 0
-
/area/proc/air_doors_close()
if(!air_doors_activated)
air_doors_activated = TRUE
@@ -179,44 +155,151 @@
D.open()
-/area/proc/fire_alert()
- if(!fire)
- fire = 1 //used for firedoor checks
- updateicon()
- mouse_opacity = MOUSE_OPACITY_TRANSPARENT
- air_doors_close()
+/area/Destroy()
+ STOP_PROCESSING(SSobj, src)
+ return ..()
-/area/proc/fire_reset()
- if(fire)
- fire = 0 //used for firedoor checks
- updateicon()
- mouse_opacity = MOUSE_OPACITY_TRANSPARENT
- air_doors_open()
+/**
+ * Generate a power alert for this area
+ *
+ * Sends to all ai players, alert consoles, drones and alarm monitor programs in the world
+ */
+/area/proc/poweralert(state, obj/source)
+ if(state != poweralm)
+ poweralm = state
+ if(istype(source)) //Only report power alarms on the z-level where the source is located.
+ for(var/thing in cameras)
+ var/obj/machinery/camera/C = locateUID(thing)
+ if(!QDELETED(C) && is_station_level(C.z))
+ if(state)
+ C.network -= "Power Alarms"
+ else
+ C.network |= "Power Alarms"
- return
+ if(state)
+ SSalarm.cancelAlarm("Power", src, source)
+ else
+ SSalarm.triggerAlarm("Power", src, cameras, source)
-/area/proc/burglaralert(var/obj/trigger)
- if(always_unpowered == 1) //no burglar alarms in space/asteroid
+/**
+ * Generate an atmospheric alert for this area
+ *
+ * Sends to all ai players, alert consoles, drones and alarm monitor programs in the world
+ */
+/area/proc/atmosalert(danger_level, obj/source)
+ if(danger_level != atmosalm)
+ if(danger_level == ATMOS_ALARM_DANGER)
+
+ for(var/thing in cameras)
+ var/obj/machinery/camera/C = locateUID(thing)
+ if(!QDELETED(C) && is_station_level(C.z))
+ C.network |= "Atmosphere Alarms"
+
+
+ SSalarm.triggerAlarm("Atmosphere", src, cameras, source)
+
+ else if(atmosalm == ATMOS_ALARM_DANGER)
+ for(var/thing in cameras)
+ var/obj/machinery/camera/C = locateUID(thing)
+ if(!QDELETED(C) && is_station_level(C.z))
+ C.network -= "Atmosphere Alarms"
+
+ SSalarm.cancelAlarm("Atmosphere", src, source)
+
+ atmosalm = danger_level
+ return TRUE
+ return FALSE
+
+/**
+ * Try to close all the firedoors in the area
+ */
+/area/proc/ModifyFiredoors(opening)
+ if(firedoors)
+ firedoors_last_closed_on = world.time
+ for(var/FD in firedoors)
+ var/obj/machinery/door/firedoor/D = FD
+ var/cont = !D.welded
+ if(cont && opening) //don't open if adjacent area is on fire
+ for(var/I in D.affecting_areas)
+ var/area/A = I
+ if(A.fire)
+ cont = FALSE
+ break
+ if(cont && D.is_operational())
+ if(D.operating)
+ D.nextstate = opening ? FD_OPEN : FD_CLOSED
+ else if(!(D.density ^ opening))
+ INVOKE_ASYNC(D, (opening ? /obj/machinery/door/firedoor.proc/open : /obj/machinery/door/firedoor.proc/close))
+
+/**
+ * Generate a firealarm alert for this area
+ *
+ * Sends to all ai players, alert consoles, drones and alarm monitor programs in the world
+ *
+ * Also starts the area processing on SSobj
+ */
+/area/proc/firealert(obj/source)
+ if(always_unpowered) //no fire alarms in space/asteroid
return
- //Trigger alarm effect
- set_fire_alarm_effect()
+ if(!fire)
+ set_fire_alarm_effect()
+ ModifyFiredoors(FALSE)
+ for(var/item in firealarms)
+ var/obj/machinery/firealarm/F = item
+ F.update_icon()
- //Lockdown airlocks
- for(var/obj/machinery/door/airlock/A in src)
- spawn(0)
- A.close()
- if(A.density)
- A.lock()
+ for(var/thing in cameras)
+ var/obj/machinery/camera/C = locateUID(thing)
+ if(!QDELETED(C) && is_station_level(C.z))
+ C.network |= "Fire Alarms"
- SSalarms.burglar_alarm.triggerAlarm(src, trigger)
- spawn(600)
- SSalarms.burglar_alarm.clearAlarm(src, trigger)
+ SSalarm.triggerAlarm("Fire", src, cameras, source)
-/area/proc/set_fire_alarm_effect()
- fire = 1
- updateicon()
- mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ START_PROCESSING(SSobj, src)
+
+/**
+ * Reset the firealarm alert for this area
+ *
+ * resets the alert sent to all ai players, alert consoles, drones and alarm monitor programs
+ * in the world
+ *
+ * Also cycles the icons of all firealarms and deregisters the area from processing on SSOBJ
+ */
+/area/proc/firereset(obj/source)
+ if(fire)
+ unset_fire_alarm_effects()
+ ModifyFiredoors(TRUE)
+ for(var/item in firealarms)
+ var/obj/machinery/firealarm/F = item
+ F.update_icon()
+
+ for(var/thing in cameras)
+ var/obj/machinery/camera/C = locateUID(thing)
+ if(!QDELETED(C) && is_station_level(C.z))
+ C.network -= "Fire Alarms"
+
+ SSalarm.cancelAlarm("Fire", src, source)
+
+ STOP_PROCESSING(SSobj, src)
+
+/**
+ * If 100 ticks has elapsed, toggle all the firedoors closed again
+ */
+/area/process()
+ if(firedoors_last_closed_on + 100 < world.time) //every 10 seconds
+ ModifyFiredoors(FALSE)
+
+/**
+ * Close and lock a door passed into this proc
+ *
+ * Does this need to exist on area? probably not
+ */
+/area/proc/close_and_lock_door(obj/machinery/door/DOOR)
+ set waitfor = FALSE
+ DOOR.close()
+ if(DOOR.density)
+ DOOR.lock()
/area/proc/readyalert()
if(!eject)
@@ -240,13 +323,62 @@
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
updateicon()
+/**
+ * Raise a burglar alert for this area
+ *
+ * Close and locks all doors in the area and alerts silicon mobs of a break in
+ *
+ * Alarm auto resets after 600 ticks
+ */
+/area/proc/burglaralert(obj/trigger)
+ if(always_unpowered) //no burglar alarms in space/asteroid
+ return
+
+ //Trigger alarm effect
+ set_fire_alarm_effect()
+ //Lockdown airlocks
+ for(var/obj/machinery/door/DOOR in src)
+ close_and_lock_door(DOOR)
+
+ if(SSalarm.triggerAlarm("Burglar", src, cameras, trigger))
+ //Cancel silicon alert after 1 minute
+ addtimer(CALLBACK(SSalarm, /datum/controller/subsystem/alarm.proc/cancelAlarm, "Burglar", src, trigger), 600)
+
+/**
+ * Trigger the fire alarm visual affects in an area
+ *
+ * Updates the fire light on fire alarms in the area and sets all lights to emergency mode
+ */
+/area/proc/set_fire_alarm_effect()
+ fire = TRUE
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ for(var/alarm in firealarms)
+ var/obj/machinery/firealarm/F = alarm
+ F.update_fire_light(fire)
+ for(var/obj/machinery/light/L in src)
+ L.update()
+
+/**
+ * unset the fire alarm visual affects in an area
+ *
+ * Updates the fire light on fire alarms in the area and sets all lights to emergency mode
+ */
+/area/proc/unset_fire_alarm_effects()
+ fire = FALSE
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ for(var/alarm in firealarms)
+ var/obj/machinery/firealarm/F = alarm
+ F.update_fire_light(fire)
+ for(var/obj/machinery/light/L in src)
+ L.update()
+
/area/proc/updateicon()
- if((fire || eject || party) && (!requires_power||power_environ))//If it doesn't require power, can still activate this proc.
- if(fire && !eject && !party)
+ if((eject || party) && (!requires_power||power_environ))//If it doesn't require power, can still activate this proc.
+ if(!eject && !party)
icon_state = "red"
- else if(!fire && eject && !party)
+ else if(eject && !party)
icon_state = "red"
- else if(party && !fire && !eject)
+ else if(party && !eject)
icon_state = "party"
else
icon_state = "blue-red"
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index ade06f58b35..d463c85eaf6 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -512,6 +512,7 @@
return //don't do an animation if attacking self
var/pixel_x_diff = 0
var/pixel_y_diff = 0
+
var/direction = get_dir(src, A)
if(direction & NORTH)
pixel_y_diff = 8
@@ -531,7 +532,8 @@
if(visual_effect_icon)
I = image('icons/effects/effects.dmi', A, visual_effect_icon, A.layer + 0.1)
else if(used_item)
- I = image(used_item.icon, A, used_item.icon_state, A.layer + 0.1)
+ I = image(icon = used_item, loc = A, layer = A.layer + 0.1)
+ I.plane = GAME_PLANE
// Scale the icon.
I.transform *= 0.75
diff --git a/code/game/dna/genes/disabilities.dm b/code/game/dna/genes/disabilities.dm
index 8b8a86009b9..a887959db48 100644
--- a/code/game/dna/genes/disabilities.dm
+++ b/code/game/dna/genes/disabilities.dm
@@ -249,14 +249,13 @@
block = GLOB.wingdingsblock
/datum/dna/gene/disability/wingdings/OnSay(mob/M, message)
- var/list/chars = string2charlist(message)
var/garbled_message = ""
- for(var/C in chars)
- if(C in GLOB.alphabet_uppercase)
+ for(var/i in 1 to length(message))
+ if(message[i] in GLOB.alphabet_uppercase)
garbled_message += pick(GLOB.alphabet_uppercase)
- else if(C in GLOB.alphabet)
+ else if(message[i] in GLOB.alphabet)
garbled_message += pick(GLOB.alphabet)
else
- garbled_message += C
+ garbled_message += message[i]
message = garbled_message
return message
diff --git a/code/game/gamemodes/blob/blobs/blob_mobs.dm b/code/game/gamemodes/blob/blobs/blob_mobs.dm
index 46b1972e565..34c717f11a8 100644
--- a/code/game/gamemodes/blob/blobs/blob_mobs.dm
+++ b/code/game/gamemodes/blob/blobs/blob_mobs.dm
@@ -7,6 +7,7 @@
/mob/living/simple_animal/hostile/blob
icon = 'icons/mob/blob.dmi'
pass_flags = PASSBLOB
+ status_flags = NONE //No throwing blobspores into deep space to despawn, or throwing blobbernaughts, which are bigger than you.
faction = list(ROLE_BLOB)
bubble_icon = "blob"
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
@@ -49,6 +50,7 @@
environment_smash = ENVIRONMENT_SMASH_STRUCTURES
attacktext = "hits"
attack_sound = 'sound/weapons/genhit1.ogg'
+ flying = TRUE
speak_emote = list("pulses")
var/obj/structure/blob/factory/factory = null
var/list/human_overlays = list()
diff --git a/code/game/gamemodes/blob/blobs/core.dm b/code/game/gamemodes/blob/blobs/core.dm
index b4c01609653..dc8d0f5aba2 100644
--- a/code/game/gamemodes/blob/blobs/core.dm
+++ b/code/game/gamemodes/blob/blobs/core.dm
@@ -17,12 +17,12 @@
START_PROCESSING(SSobj, src)
GLOB.poi_list |= src
adjustcolors(color) //so it atleast appears
- if(!overmind)
- create_overmind(new_overmind)
- if(overmind)
- adjustcolors(overmind.blob_reagent_datum.color)
if(offspring)
is_offspring = 1
+ if(overmind)
+ adjustcolors(overmind.blob_reagent_datum.color)
+ if(!overmind)
+ create_overmind(new_overmind)
point_rate = new_rate
..(loc, h)
@@ -104,18 +104,11 @@
var/mob/C = null
var/list/candidates = list()
if(!new_overmind)
- // Create icon
- var/mutable_appearance/MA = new
- var/mutable_appearance/MA1 = new(icon, "blob")
- MA1.color = overmind ? overmind.blob_reagent_datum.color : color
- MA.overlays += MA1
- var/mutable_appearance/MA2 = new(icon, "blob_core_overlay")
- MA.overlays += MA2
// sendit
if(is_offspring)
- candidates = SSghost_spawns.poll_candidates("Do you want to play as a blob offspring?", ROLE_BLOB, TRUE, source = MA)
+ candidates = SSghost_spawns.poll_candidates("Do you want to play as a blob offspring?", ROLE_BLOB, TRUE, source = src)
else
- candidates = SSghost_spawns.poll_candidates("Do you want to play as a blob?", ROLE_BLOB, TRUE, source = MA)
+ candidates = SSghost_spawns.poll_candidates("Do you want to play as a blob?", ROLE_BLOB, TRUE, source = src)
if(length(candidates))
C = pick(candidates)
diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm
index ec354d4d1c4..350da7c7593 100644
--- a/code/game/gamemodes/blob/powers.dm
+++ b/code/game/gamemodes/blob/powers.dm
@@ -389,7 +389,7 @@
return
split_used = TRUE
- new /obj/structure/blob/core/ (get_turf(N), 200, null, blob_core.point_rate, "offspring")
+ new /obj/structure/blob/core/ (get_turf(N), 200, null, blob_core.point_rate, offspring = TRUE)
qdel(N)
if(SSticker && SSticker.mode.name == "blob")
diff --git a/code/game/gamemodes/changeling/evolution_menu.dm b/code/game/gamemodes/changeling/evolution_menu.dm
index 9c33ffaaca5..b3b4000bbf1 100644
--- a/code/game/gamemodes/changeling/evolution_menu.dm
+++ b/code/game/gamemodes/changeling/evolution_menu.dm
@@ -370,16 +370,11 @@ GLOBAL_LIST_EMPTY(sting_paths)
mind.changeling.purchasedpowers += path
path.on_purchase(src)
else //for respec
- var/datum/action/changeling/hivemind_upload/S1 = new
+ var/datum/action/changeling/hivemind_pick/S1 = new
if(!mind.changeling.has_sting(S1))
mind.changeling.purchasedpowers+=S1
S1.Grant(src)
- var/datum/action/changeling/hivemind_download/S2 = new
- if(!mind.changeling.has_sting(S2))
- mind.changeling.purchasedpowers+=S2
- S2.Grant(src)
-
var/mob/living/carbon/C = src //only carbons have dna now, so we have to typecaste
mind.changeling.absorbed_dna |= C.dna.Clone()
mind.changeling.trim_dna()
diff --git a/code/game/gamemodes/changeling/powers/hivemind.dm b/code/game/gamemodes/changeling/powers/hivemind.dm
index 98336608da4..18a5477fd3f 100644
--- a/code/game/gamemodes/changeling/powers/hivemind.dm
+++ b/code/game/gamemodes/changeling/powers/hivemind.dm
@@ -12,27 +12,36 @@
var/datum/changeling/changeling=user.mind.changeling
changeling.changeling_speak = 1
to_chat(user, "Use say \":g message\" to communicate with the other changelings.")
- var/datum/action/changeling/hivemind_upload/S1 = new
+ var/datum/action/changeling/hivemind_pick/S1 = new
if(!changeling.has_sting(S1))
changeling.purchasedpowers+=S1
S1.Grant(user)
- var/datum/action/changeling/hivemind_download/S2 = new
- if(!changeling.has_sting(S2))
- S2.Grant(user)
- changeling.purchasedpowers+=S2
return
// HIVE MIND UPLOAD/DOWNLOAD DNA
GLOBAL_LIST_EMPTY(hivemind_bank)
-/datum/action/changeling/hivemind_upload
+/datum/action/changeling/hivemind_pick
name = "Hive Channel DNA"
- desc = "Allows us to channel DNA in the airwaves to allow other changelings to absorb it. Costs 10 chemicals."
- button_icon_state = "hivemind_channel"
+ desc = "Allows us to upload or absorb DNA in the airwaves. Does not count towards absorb objectives. Costs 10 chemicals."
+ button_icon_state = "hive_absorb"
chemical_cost = 10
dna_cost = -1
-/datum/action/changeling/hivemind_upload/sting_action(var/mob/user)
+/datum/action/changeling/hivemind_pick/sting_action(mob/user)
+ var/datum/changeling/changeling = user.mind.changeling
+ var/channel_pick = alert("Upload or Absorb DNA?", "Channel Select", "Upload", "Absorb")
+
+ if(channel_pick == "Upload")
+ dna_upload(user)
+ if(channel_pick == "Absorb")
+ if(changeling.using_stale_dna(user))//If our current DNA is the stalest, we gotta ditch it.
+ to_chat(user, "We have reached our capacity to store genetic information! We must transform before absorbing more.")
+ return
+ else
+ dna_absorb(user)
+
+/datum/action/changeling/proc/dna_upload(mob/user)
var/datum/changeling/changeling = user.mind.changeling
var/list/names = list()
for(var/datum/dna/DNA in (changeling.absorbed_dna+changeling.protected_dna))
@@ -56,23 +65,7 @@ GLOBAL_LIST_EMPTY(hivemind_bank)
feedback_add_details("changeling_powers","HU")
return 1
-/datum/action/changeling/hivemind_download
- name = "Hive Absorb DNA"
- desc = "Allows us to absorb DNA that has been channeled to the airwaves. Does not count towards absorb objectives. Costs 10 chemicals."
- button_icon_state = "hive_absorb"
- chemical_cost = 10
- dna_cost = -1
-
-/datum/action/changeling/hivemind_download/can_sting(var/mob/living/carbon/user)
- if(!..())
- return
- var/datum/changeling/changeling = user.mind.changeling
- if(changeling.using_stale_dna(user))//If our current DNA is the stalest, we gotta ditch it.
- to_chat(user, "We have reached our capacity to store genetic information! We must transform before absorbing more.")
- return
- return 1
-
-/datum/action/changeling/hivemind_download/sting_action(var/mob/user)
+/datum/action/changeling/proc/dna_absorb(mob/user)
var/datum/changeling/changeling = user.mind.changeling
var/list/names = list()
for(var/datum/dna/DNA in GLOB.hivemind_bank)
diff --git a/code/game/gamemodes/changeling/powers/swap_form.dm b/code/game/gamemodes/changeling/powers/swap_form.dm
index 0e02df12d88..97192c86a0f 100644
--- a/code/game/gamemodes/changeling/powers/swap_form.dm
+++ b/code/game/gamemodes/changeling/powers/swap_form.dm
@@ -18,12 +18,15 @@
if((NOCLONE || SKELETON || HUSK) in target.mutations)
to_chat(user, "DNA of [target] is ruined beyond usability!")
return
- if(!istype(target) || issmall(target) || (NO_DNA in target.dna.species.species_traits))
+ if(!istype(target) || !target.mind || issmall(target) || (NO_DNA in target.dna.species.species_traits))
to_chat(user, "[target] is not compatible with this ability.")
return
if(target.mind.changeling)
to_chat(user, "We are unable to swap forms with another changeling!")
return
+ if(target.has_brain_worms() || user.has_brain_worms())
+ to_chat(user, "A foreign presence repels us from this body!")
+ return
return 1
/datum/action/changeling/swap_form/sting_action(var/mob/living/carbon/user)
@@ -63,6 +66,8 @@
target.add_language("Changeling")
user.remove_language("Changeling")
user.regenerate_icons()
+ if(target.stat == DEAD && target.suiciding) //If Target committed suicide, unset flag for User
+ target.suiciding = 0
for(var/power in lingpowers)
var/datum/action/changeling/S = power
diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm
index f1f3bc1c72c..a68e4c1e9ca 100644
--- a/code/game/gamemodes/cult/cult_items.dm
+++ b/code/game/gamemodes/cult/cult_items.dm
@@ -177,26 +177,37 @@
/obj/item/clothing/suit/hooded/cultrobes/cult_shield/special_overlays()
return mutable_appearance('icons/effects/cult_effects.dmi', shield_state, MOB_LAYER + 0.01)
-/obj/item/clothing/suit/hooded/cultrobes/berserker
+/obj/item/clothing/suit/hooded/cultrobes/flagellant_robe
name = "flagellant's robes"
desc = "Blood-soaked robes infused with dark magic; allows the user to move at inhuman speeds, but at the cost of increased damage."
- icon_state = "hardsuit-berserker"
- item_state = "hardsuit-berserker"
+ icon_state = "flagellantrobe"
+ item_state = "flagellantrobe"
flags_inv = HIDEJUMPSUIT
allowed = list(/obj/item/tome,/obj/item/melee/cultblade)
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
armor = list("melee" = -45, "bullet" = -45, "laser" = -45,"energy" = -45, "bomb" = -45, "bio" = -45, "rad" = -45, "fire" = 0, "acid" = 0)
slowdown = -1
- hoodtype = /obj/item/clothing/head/hooded/berserkerhood
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi',
+ "Drask" = 'icons/mob/species/drask/suit.dmi',
+ "Grey" = 'icons/mob/species/grey/suit.dmi'
+ )
+ hoodtype = /obj/item/clothing/head/hooded/flagellant_hood
-/obj/item/clothing/head/hooded/berserkerhood
+/obj/item/clothing/head/hooded/flagellant_hood
name = "flagellant's robes"
desc = "Blood-soaked garb infused with dark magic; allows the user to move at inhuman speeds, but at the cost of increased damage."
- icon_state = "culthood"
+ icon_state = "flagellanthood"
+ item_state = "flagellanthood"
flags_inv = HIDEFACE
flags_cover = HEADCOVERSEYES
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/head.dmi',
+ "Drask" = 'icons/mob/species/drask/head.dmi',
+ "Grey" = 'icons/mob/species/grey/head.dmi'
+ )
/obj/item/whetstone/cult
name = "eldritch whetstone"
diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm
index 0e96dd92062..c06913c1abe 100644
--- a/code/game/gamemodes/cult/cult_structures.dm
+++ b/code/game/gamemodes/cult/cult_structures.dm
@@ -120,7 +120,7 @@
selection_prompt = "You study the schematics etched on the forge..."
selection_title = "Forge"
creation_message = "You work the forge as dark knowledge guides your hands, creating %ITEM%!"
- choosable_items = list("Shielded Robe" = /obj/item/clothing/suit/hooded/cultrobes/cult_shield, "Flagellant's Robe" = /obj/item/clothing/suit/hooded/cultrobes/berserker, \
+ choosable_items = list("Shielded Robe" = /obj/item/clothing/suit/hooded/cultrobes/cult_shield, "Flagellant's Robe" = /obj/item/clothing/suit/hooded/cultrobes/flagellant_robe, \
"Cultist Hardsuit" = /obj/item/storage/box/cult)
/obj/structure/cult/functional/forge/New()
diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm
index 492d128e222..af0dfb5e6e3 100644
--- a/code/game/gamemodes/cult/talisman.dm
+++ b/code/game/gamemodes/cult/talisman.dm
@@ -1,5 +1,5 @@
/obj/item/paper/talisman
- icon = 'icons/obj/paper.dmi'
+ icon = 'icons/obj/bureaucracy.dmi'
icon_state = "paper_talisman"
var/cultist_name = "talisman"
var/cultist_desc = "A basic talisman. It serves no purpose."
diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm
index 526a2c01083..9f5db8d5dae 100644
--- a/code/game/gamemodes/malfunction/Malf_Modules.dm
+++ b/code/game/gamemodes/malfunction/Malf_Modules.dm
@@ -616,7 +616,7 @@
active = FALSE
return
var/turf/T = get_turf(owner_AI.eyeobj)
- new /obj/machinery/transformer/conveyor(T)
+ new /obj/machinery/transformer(T, owner_AI)
playsound(T, 'sound/effects/phasein.ogg', 100, 1)
owner_AI.can_shunt = FALSE
to_chat(owner, "You are no longer able to shunt your core to APCs.")
@@ -781,3 +781,17 @@
if(AI.eyeobj)
AI.eyeobj.relay_speech = TRUE
+/datum/AI_Module/large/cameracrack
+ module_name = "Core Camera Cracker"
+ mod_pick_name = "cameracrack"
+ description = "By shortcirucuting the camera network chip, it overheats, preventing the camera console from using your internal camera."
+ cost = 10
+ one_purchase = TRUE
+ upgrade = TRUE
+ unlock_text = "Network chip short circuited. Internal camera disconected from network. Minimal damage to other internal components."
+ unlock_sound = 'sound/items/wirecutter.ogg'
+
+/datum/AI_Module/large/cameracrack/upgrade(mob/living/silicon/ai/AI)
+ if(AI.builtInCamera)
+ QDEL_NULL(AI.builtInCamera)
+
diff --git a/code/game/gamemodes/miniantags/guardian/guardian.dm b/code/game/gamemodes/miniantags/guardian/guardian.dm
index 0bb48fc55ed..fdf17f6ddda 100644
--- a/code/game/gamemodes/miniantags/guardian/guardian.dm
+++ b/code/game/gamemodes/miniantags/guardian/guardian.dm
@@ -15,7 +15,7 @@
a_intent = INTENT_HARM
can_change_intents = 0
stop_automated_movement = 1
- floating = 1
+ flying = TRUE
attack_sound = 'sound/weapons/punch1.ogg'
minbodytemp = 0
maxbodytemp = INFINITY
@@ -312,7 +312,7 @@
used = FALSE
return
to_chat(user, "[use_message]")
- var/list/mob/dead/observer/candidates = SSghost_spawns.poll_candidates("Do you want to play as the [mob_name] of [user.real_name]?", ROLE_GUARDIAN, FALSE, 10 SECONDS, source = /mob/living/simple_animal/hostile/guardian)
+ var/list/mob/dead/observer/candidates = SSghost_spawns.poll_candidates("Do you want to play as the [mob_name] of [user.real_name]?", ROLE_GUARDIAN, FALSE, 10 SECONDS, source = src)
var/mob/dead/observer/theghost = null
if(candidates.len)
diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm
index d4e912aa781..cba5ea62a2a 100644
--- a/code/game/gamemodes/miniantags/revenant/revenant.dm
+++ b/code/game/gamemodes/miniantags/revenant/revenant.dm
@@ -34,7 +34,7 @@
status_flags = 0
wander = 0
density = 0
- flying = 1
+ flying = TRUE
move_resist = INFINITY
mob_size = MOB_SIZE_TINY
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
diff --git a/code/game/gamemodes/wizard/artefact.dm b/code/game/gamemodes/wizard/artefact.dm
index b3092b04e3b..44dec855f82 100644
--- a/code/game/gamemodes/wizard/artefact.dm
+++ b/code/game/gamemodes/wizard/artefact.dm
@@ -50,7 +50,7 @@
to_chat(H, "You already used this contract!")
return
used = 1
- var/mutable_appearance/source = new('icons/obj/cardboard_cutout.dmi', "cutout_wizard")
+ var/image/source = image('icons/obj/cardboard_cutout.dmi', "cutout_wizard")
var/list/candidates = SSghost_spawns.poll_candidates("Do you want to play as the wizard apprentice of [H.real_name]?", ROLE_WIZARD, TRUE, source = source)
if(candidates.len)
var/mob/C = pick(candidates)
@@ -308,7 +308,7 @@ GLOBAL_LIST_EMPTY(multiverse)
if(M.assigned == assigned)
M.cooldown = cooldown
- var/mutable_appearance/source = new('icons/obj/cardboard_cutout.dmi', "cutout_wizard")
+ var/image/source = image('icons/obj/cardboard_cutout.dmi', "cutout_wizard")
var/list/candidates = SSghost_spawns.poll_candidates("Do you want to play as the wizard apprentice of [user.real_name]?", ROLE_WIZARD, TRUE, 10 SECONDS, source = source)
if(candidates.len)
var/mob/C = pick(candidates)
diff --git a/code/game/gamemodes/wizard/raginmages.dm b/code/game/gamemodes/wizard/raginmages.dm
index b189c98524f..d51b16d2cd3 100644
--- a/code/game/gamemodes/wizard/raginmages.dm
+++ b/code/game/gamemodes/wizard/raginmages.dm
@@ -118,7 +118,7 @@
return FALSE
making_mage = TRUE
- var/mutable_appearance/source = new('icons/obj/cardboard_cutout.dmi', "cutout_wizard")
+ var/image/source = image('icons/obj/cardboard_cutout.dmi', "cutout_wizard")
var/list/mob/dead/observer/candidates = SSghost_spawns.poll_candidates("Do you want to play as a raging Space Wizard?", ROLE_WIZARD, TRUE, poll_time = 20 SECONDS, source = source)
var/mob/dead/observer/harry = null
message_admins("SWF is still pissed, sending another wizard - [max_mages - mages_made] left.")
diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm
index 5ab5db96677..bbbe31e9199 100644
--- a/code/game/machinery/alarm.dm
+++ b/code/game/machinery/alarm.dm
@@ -315,7 +315,7 @@
temperature_dangerlevel
)
- if(old_danger_level!=danger_level)
+ if(old_danger_level != danger_level)
apply_danger_level()
if(mode == AALARM_MODE_REPLACEMENT && environment_pressure < ONE_ATMOSPHERE * 0.05)
@@ -535,28 +535,35 @@
"checks"= 0,
))
-/obj/machinery/alarm/proc/apply_danger_level(var/new_danger_level)
- if(report_danger_level && alarm_area.atmosalert(new_danger_level, src))
- post_alert(new_danger_level)
+/obj/machinery/alarm/proc/apply_danger_level()
+ var/new_area_danger_level = ATMOS_ALARM_NONE
+ for(var/obj/machinery/alarm/AA in alarm_area)
+ if(!(AA.stat & (NOPOWER|BROKEN)) && !AA.shorted)
+ new_area_danger_level = max(new_area_danger_level, AA.danger_level)
+ if(alarm_area.atmosalert(new_area_danger_level, src)) //if area was in normal state or if area was in alert state
+ post_alert(new_area_danger_level)
update_icon()
/obj/machinery/alarm/proc/post_alert(alert_level)
+ if(!report_danger_level)
+ return
var/datum/radio_frequency/frequency = SSradio.return_frequency(alarm_frequency)
+
if(!frequency)
return
var/datum/signal/alert_signal = new
alert_signal.source = src
alert_signal.transmission_method = 1
- alert_signal.data["zone"] = alarm_area.name
+ alert_signal.data["zone"] = get_area_name(src, TRUE)
alert_signal.data["type"] = "Atmospheric"
- if(alert_level==2)
+ if(alert_level == ATMOS_ALARM_DANGER)
alert_signal.data["alert"] = "severe"
- else if(alert_level==1)
+ else if(alert_level == ATMOS_ALARM_WARNING)
alert_signal.data["alert"] = "minor"
- else if(alert_level==0)
+ else if(alert_level == ATMOS_ALARM_NONE)
alert_signal.data["alert"] = "clear"
frequency.post_signal(src, alert_signal)
@@ -890,14 +897,14 @@
if(href_list["atmos_alarm"])
if(alarm_area.atmosalert(ATMOS_ALARM_DANGER, src))
- apply_danger_level(ATMOS_ALARM_DANGER)
+ post_alert(ATMOS_ALARM_DANGER)
alarmActivated = 1
update_icon()
return 1
if(href_list["atmos_reset"])
if(alarm_area.atmosalert(ATMOS_ALARM_NONE, src, TRUE))
- apply_danger_level(ATMOS_ALARM_NONE)
+ post_alert(ATMOS_ALARM_NONE)
alarmActivated = 0
update_icon()
return 1
diff --git a/code/game/machinery/atmoalter/scrubber.dm b/code/game/machinery/atmoalter/scrubber.dm
index 7af7751ff2c..d7a49e40d4b 100644
--- a/code/game/machinery/atmoalter/scrubber.dm
+++ b/code/game/machinery/atmoalter/scrubber.dm
@@ -187,24 +187,24 @@
icon_state = "scrubber:0"
/obj/machinery/portable_atmospherics/scrubber/huge/attackby(var/obj/item/W as obj, var/mob/user as mob, params)
- if(istype(W, /obj/item/wrench))
- if(stationary)
- to_chat(user, "The bolts are too tight for you to unscrew!")
- return
- if(on)
- to_chat(user, "Turn it off first!")
- return
-
- anchored = !anchored
- playsound(loc, W.usesound, 50, 1)
- to_chat(user, "You [anchored ? "wrench" : "unwrench"] \the [src].")
- return
-
if((istype(W, /obj/item/analyzer)) && get_dist(user, src) <= 1)
atmosanalyzer_scan(air_contents, user)
return
return ..()
+/obj/machinery/portable_atmospherics/scrubber/huge/wrench_act(mob/user, obj/item/I)
+ . = TRUE
+ if(stationary)
+ to_chat(user, "The bolts are too tight for you to unscrew!")
+ return
+ if(on)
+ to_chat(user, "Turn it off first!")
+ return
+ if(!I.use_tool(src, user, 0, volume = I.tool_volume))
+ return
+ anchored = !anchored
+ to_chat(user, "You [anchored ? "wrench" : "unwrench"] [src].")
+
/obj/machinery/portable_atmospherics/scrubber/huge/stationary
name = "Stationary Air Scrubber"
stationary = 1
diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm
index 8ec5123ea66..4e185feb4a8 100644
--- a/code/game/machinery/camera/camera.dm
+++ b/code/game/machinery/camera/camera.dm
@@ -28,13 +28,14 @@
var/view_range = 7
var/short_range = 2
+ var/alarm_on = FALSE
var/busy = FALSE
var/emped = FALSE //Number of consecutive EMP's on this camera
var/in_use_lights = 0 // TO BE IMPLEMENTED
var/toggle_sound = 'sound/items/wirecutter.ogg'
-/obj/machinery/camera/Initialize()
+/obj/machinery/camera/Initialize(mapload)
. = ..()
wires = new(src)
assembly = new(src)
@@ -44,10 +45,15 @@
GLOB.cameranet.cameras += src
GLOB.cameranet.addCamera(src)
+ if(isturf(loc))
+ LAZYADD(myArea.cameras, UID())
if(is_station_level(z) && prob(3) && !start_active)
toggle_cam(null, FALSE)
wires.cut_all()
+/obj/machinery/camera/proc/set_area_motion(area/A)
+ area_motion = A
+
/obj/machinery/camera/Destroy()
SStgui.close_uis(wires)
toggle_cam(null, FALSE) //kick anyone viewing out
@@ -60,10 +66,14 @@
QDEL_NULL(wires)
GLOB.cameranet.removeCamera(src) //Will handle removal from the camera network and the chunks, so we don't need to worry about that
GLOB.cameranet.cameras -= src
+ if(isarea(myArea))
+ LAZYREMOVE(myArea.cameras, UID())
var/area/ai_monitored/A = get_area(src)
if(istype(A))
- A.motioncamera = null
+ A.motioncameras -= src
area_motion = null
+ cancelCameraAlarm()
+ cancelAlarm()
return ..()
/obj/machinery/camera/emp_act(severity)
@@ -283,9 +293,16 @@
status = !status
if(can_use())
GLOB.cameranet.addCamera(src)
+ if(isturf(loc))
+ myArea = get_area(src)
+ LAZYADD(myArea.cameras, UID())
+ else
+ myArea = null
else
set_light(0)
GLOB.cameranet.removeCamera(src)
+ if(isarea(myArea))
+ LAZYREMOVE(myArea.cameras, UID())
GLOB.cameranet.updateChunk(x, y, z)
var/change_msg = "deactivates"
if(status)
@@ -314,12 +331,12 @@
to_chat(O, "The screen bursts into static.")
/obj/machinery/camera/proc/triggerCameraAlarm()
- if(is_station_contact(z))
- SSalarms.camera_alarm.triggerAlarm(loc, src)
+ alarm_on = TRUE
+ SSalarm.triggerAlarm("Camera", get_area(src), list(UID()), src)
/obj/machinery/camera/proc/cancelCameraAlarm()
- if(is_station_contact(z))
- SSalarms.camera_alarm.clearAlarm(loc, src)
+ alarm_on = FALSE
+ SSalarm.cancelAlarm("Camera", get_area(src), src)
/obj/machinery/camera/proc/can_use()
if(!status)
@@ -415,8 +432,8 @@
/obj/machinery/camera/portable //Cameras which are placed inside of things, such as helmets.
var/turf/prev_turf
-/obj/machinery/camera/portable/New()
- ..()
+/obj/machinery/camera/portable/Initialize(mapload)
+ . = ..()
assembly.state = 0 //These cameras are portable, and so shall be in the portable state if removed.
assembly.anchored = 0
assembly.update_icon()
diff --git a/code/game/machinery/camera/motion.dm b/code/game/machinery/camera/motion.dm
index 16fb6eca204..7d33361e4b9 100644
--- a/code/game/machinery/camera/motion.dm
+++ b/code/game/machinery/camera/motion.dm
@@ -1,60 +1,60 @@
/obj/machinery/camera
-
- var/list/motionTargets = list()
+ var/list/localMotionTargets = list()
var/detectTime = 0
var/area/ai_monitored/area_motion = null
- var/alarm_delay = 100
-
+ var/alarm_delay = 30 // Don't forget, there's another 3 seconds in queueAlarm()
/obj/machinery/camera/process()
// motion camera event loop
- if(stat & (EMPED|NOPOWER))
- return
if(!isMotion())
. = PROCESS_KILL
return
+ if(stat & (EMPED|NOPOWER))
+ return
if(detectTime > 0)
var/elapsed = world.time - detectTime
if(elapsed > alarm_delay)
triggerAlarm()
else if(detectTime == -1)
- for(var/mob/target in motionTargets)
- if(target.stat == 2) lostTarget(target)
- // If not detecting with motion camera...
- if(!area_motion)
- // See if the camera is still in range
- if(!in_range(src, target))
- // If they aren't in range, lose the target.
- lostTarget(target)
+ for(var/thing in getTargetList())
+ var/mob/target = locateUID(thing)
+ if(QDELETED(target) || target.stat == DEAD || (!area_motion && !in_range(src, target)))
+ //If not part of a monitored area and the camera is not in range or the target is dead
+ lostTargetRef(thing)
-/obj/machinery/camera/proc/newTarget(var/mob/target)
- if(istype(target, /mob/living/silicon/ai)) return 0
+/obj/machinery/camera/proc/getTargetList()
+ if(area_motion)
+ return area_motion.motionTargets
+ return localMotionTargets
+
+/obj/machinery/camera/proc/newTarget(mob/target)
+ if(isAI(target))
+ return FALSE
if(detectTime == 0)
detectTime = world.time // start the clock
- if(!(target in motionTargets))
- motionTargets += target
- return 1
+ var/list/targets = getTargetList()
+ targets |= target.UID()
+ return TRUE
-/obj/machinery/camera/proc/lostTarget(var/mob/target)
- if(target in motionTargets)
- motionTargets -= target
- if(motionTargets.len == 0)
+/obj/machinery/camera/proc/lostTargetRef(uid)
+ var/list/targets = getTargetList()
+ targets -= uid
+ if(length(targets))
cancelAlarm()
/obj/machinery/camera/proc/cancelAlarm()
- if(!status || (stat & NOPOWER))
- return FALSE
- if(detectTime == -1 && is_station_contact(z))
- SSalarms.motion_alarm.clearAlarm(loc, src)
+ if(detectTime == -1)
+ if(status)
+ SSalarm.cancelAlarm("Motion", get_area(src), src)
detectTime = 0
return TRUE
/obj/machinery/camera/proc/triggerAlarm()
- if(!status || (stat & NOPOWER))
+ if(!detectTime)
return FALSE
- if(!detectTime || !is_station_contact(z))
- return FALSE
- SSalarms.motion_alarm.triggerAlarm(loc, src)
+ if(status)
+ SSalarm.triggerAlarm("Motion", get_area(src), list(UID()), src)
+ visible_message("A red light flashes on the [src]!")
detectTime = -1
return TRUE
diff --git a/code/game/machinery/camera/presets.dm b/code/game/machinery/camera/presets.dm
index b7ae75cd13f..33c970639e5 100644
--- a/code/game/machinery/camera/presets.dm
+++ b/code/game/machinery/camera/presets.dm
@@ -2,7 +2,7 @@
// EMP
-/obj/machinery/camera/emp_proof/Initialize()
+/obj/machinery/camera/emp_proof/Initialize(mapload)
. = ..()
upgradeEmpProof()
@@ -11,19 +11,23 @@
/obj/machinery/camera/xray
icon_state = "xraycam" // Thanks to Krutchen for the icons.
-/obj/machinery/camera/xray/Initialize()
+/obj/machinery/camera/xray/Initialize(mapload)
. = ..()
upgradeXRay()
// MOTION
+/obj/machinery/camera/motion
+ name = "motion-sensitive security camera"
-/obj/machinery/camera/motion/Initialize()
+/obj/machinery/camera/motion/Initialize(mapload)
. = ..()
upgradeMotion()
// ALL UPGRADES
+/obj/machinery/camera/all
+ icon_state = "xraycamera" //mapping icon.
-/obj/machinery/camera/all/Initialize()
+/obj/machinery/camera/all/Initialize(mapload)
. = ..()
upgradeEmpProof()
upgradeXRay()
@@ -78,6 +82,10 @@
// If you are upgrading Motion, and it isn't in the camera's New(), add it to the machines list.
/obj/machinery/camera/proc/upgradeMotion()
+ if(isMotion())
+ return
+ if(name == initial(name))
+ name = "motion-sensitive security camera"
assembly.upgrades.Add(new /obj/item/assembly/prox_sensor(assembly))
setPowerUsage()
// Add it to machines that process
diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm
index 123cee3ae4e..0be4aa0449b 100644
--- a/code/game/machinery/computer/atmos_alert.dm
+++ b/code/game/machinery/computer/atmos_alert.dm
@@ -1,84 +1,90 @@
-GLOBAL_LIST_EMPTY(priority_air_alarms)
-GLOBAL_LIST_EMPTY(minor_air_alarms)
-
-
/obj/machinery/computer/atmos_alert
name = "atmospheric alert computer"
desc = "Used to access the station's atmospheric sensors."
circuit = /obj/item/circuitboard/atmos_alert
+ var/ui_x = 350
+ var/ui_y = 300
icon_keyboard = "atmos_key"
icon_screen = "alert:0"
light_color = LIGHT_COLOR_CYAN
+ var/list/priority_alarms = list()
+ var/list/minor_alarms = list()
+ var/receive_frequency = ATMOS_FIRE_FREQ
+ var/datum/radio_frequency/radio_connection
-/obj/machinery/computer/atmos_alert/New()
- ..()
- SSalarms.atmosphere_alarm.register(src, /obj/machinery/computer/station_alert/.proc/update_icon)
+/obj/machinery/computer/atmos_alert/Initialize(mapload)
+ . = ..()
+ set_frequency(receive_frequency)
/obj/machinery/computer/atmos_alert/Destroy()
- SSalarms.atmosphere_alarm.unregister(src)
- return ..()
+ SSradio.remove_object(src, receive_frequency)
+ return ..()
/obj/machinery/computer/atmos_alert/attack_hand(mob/user)
- ui_interact(user)
+ tgui_interact(user)
-/obj/machinery/computer/atmos_alert/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
- ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open)
+/obj/machinery/computer/atmos_alert/tgui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/tgui_state/state = GLOB.tgui_default_state)
+ ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
if(!ui)
- ui = new(user, src, ui_key, "atmos_alert.tmpl", src.name, 500, 500)
+ ui = new(user, src, ui_key, "AtmosAlertConsole", name, ui_x, ui_y, master_ui, state)
ui.open()
- ui.set_auto_update(1)
-/obj/machinery/computer/atmos_alert/ui_data(mob/user, datum/topic_state/state)
- var/data[0]
- var/major_alarms[0]
- var/minor_alarms[0]
+/obj/machinery/computer/atmos_alert/tgui_data(mob/user)
+ var/list/data = list()
- for(var/datum/alarm/alarm in SSalarms.atmosphere_alarm.major_alarms())
- major_alarms[++major_alarms.len] = list("name" = sanitize(alarm.alarm_name()), "ref" = "\ref[alarm]")
-
- for(var/datum/alarm/alarm in SSalarms.atmosphere_alarm.minor_alarms())
- minor_alarms[++minor_alarms.len] = list("name" = sanitize(alarm.alarm_name()), "ref" = "\ref[alarm]")
-
- data["priority_alarms"] = major_alarms
- data["minor_alarms"] = minor_alarms
+ data["priority"] = list()
+ for(var/zone in priority_alarms)
+ data["priority"] |= zone
+ data["minor"] = list()
+ for(var/zone in minor_alarms)
+ data["minor"] |= zone
return data
-/obj/machinery/computer/atmos_alert/update_icon()
- var/list/alarms = SSalarms.atmosphere_alarm.major_alarms()
- if(alarms.len)
- icon_screen = "alert:2"
- else
- alarms = SSalarms.atmosphere_alarm.minor_alarms()
- if(alarms.len)
- icon_screen = "alert:1"
- else
- icon_screen = "alert:0"
- ..()
-
-/obj/machinery/computer/atmos_alert/Topic(href, href_list)
+/obj/machinery/computer/atmos_alert/tgui_act(action, params)
if(..())
- return 1
+ return
+ switch(action)
+ if("clear")
+ var/zone = params["zone"]
+ if(zone in priority_alarms)
+ to_chat(usr, "Priority alarm for [zone] cleared.")
+ priority_alarms -= zone
+ . = TRUE
+ if(zone in minor_alarms)
+ to_chat(usr, "Minor alarm for [zone] cleared.")
+ minor_alarms -= zone
+ . = TRUE
+ update_icon()
- if(href_list["clear_alarm"])
- var/datum/alarm/alarm = locate(href_list["clear_alarm"]) in SSalarms.atmosphere_alarm.alarms
- if(alarm)
- for(var/datum/alarm_source/alarm_source in alarm.sources)
- var/obj/machinery/alarm/air_alarm = alarm_source.source
- if(istype(air_alarm))
- var/list/new_ref = list("atmos_reset" = 1)
- air_alarm.Topic(href, new_ref, state = GLOB.air_alarm_topic)
- update_icon()
- return 1
+/obj/machinery/computer/atmos_alert/proc/set_frequency(new_frequency)
+ SSradio.remove_object(src, receive_frequency)
+ receive_frequency = new_frequency
+ radio_connection = SSradio.add_object(src, receive_frequency, RADIO_ATMOSIA)
-GLOBAL_DATUM_INIT(air_alarm_topic, /datum/topic_state/air_alarm_topic, new)
+/obj/machinery/computer/atmos_alert/receive_signal(datum/signal/signal)
+ if(!signal)
+ return
-/datum/topic_state/air_alarm_topic/href_list(var/mob/user)
- var/list/extra_href = list()
- extra_href["remote_connection"] = 1
- extra_href["remote_access"] = 1
+ var/zone = signal.data["zone"]
+ var/severity = signal.data["alert"]
- return extra_href
+ if(!zone || !severity)
+ return
-/datum/topic_state/air_alarm_topic/can_use_topic(var/src_object, var/mob/user)
- return STATUS_INTERACTIVE
+ minor_alarms -= zone
+ priority_alarms -= zone
+ if(severity == "severe")
+ priority_alarms += zone
+ else if(severity == "minor")
+ minor_alarms += zone
+ update_icon()
+
+/obj/machinery/computer/atmos_alert/update_icon()
+ if(length(priority_alarms))
+ icon_screen = "alert:2"
+ else if(length(minor_alarms))
+ icon_screen = "alert:1"
+ else
+ icon_screen = "alert:0"
+ ..()
diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm
index b502d6e5441..a07f3c04348 100644
--- a/code/game/machinery/computer/buildandrepair.dm
+++ b/code/game/machinery/computer/buildandrepair.dm
@@ -165,12 +165,9 @@
/obj/item/circuitboard/stationalert_engineering
name = "Circuit Board (Station Alert Console (Engineering))"
build_path = /obj/machinery/computer/station_alert
-/obj/item/circuitboard/stationalert_security
- name = "Circuit Board (Station Alert Console (Security))"
+/obj/item/circuitboard/stationalert
+ name = "Circuit Board (Station Alert Console)"
build_path = /obj/machinery/computer/station_alert
-/obj/item/circuitboard/stationalert_all
- name = "Circuit Board (Station Alert Console (All))"
- build_path = /obj/machinery/computer/station_alert/all
/obj/item/circuitboard/atmos_alert
name = "Circuit Board (Atmospheric Alert Computer)"
build_path = /obj/machinery/computer/atmos_alert
diff --git a/code/game/machinery/computer/station_alert.dm b/code/game/machinery/computer/station_alert.dm
index 607918442ea..3b4631b171a 100644
--- a/code/game/machinery/computer/station_alert.dm
+++ b/code/game/machinery/computer/station_alert.dm
@@ -6,48 +6,91 @@
icon_screen = "alert:0"
light_color = LIGHT_COLOR_CYAN
circuit = /obj/item/circuitboard/stationalert_engineering
- var/datum/nano_module/alarm_monitor/alarm_monitor
- var/monitor_type = /datum/nano_module/alarm_monitor/engineering
+ var/ui_x = 325
+ var/ui_y = 500
+ var/list/alarms_listend_for = list("Fire", "Atmosphere", "Power")
-/obj/machinery/computer/station_alert/security
- monitor_type = /datum/nano_module/alarm_monitor/security
- circuit = /obj/item/circuitboard/stationalert_security
-
-/obj/machinery/computer/station_alert/all
- monitor_type = /datum/nano_module/alarm_monitor/all
- circuit = /obj/item/circuitboard/stationalert_all
-
-/obj/machinery/computer/station_alert/New()
- ..()
- alarm_monitor = new monitor_type(src)
- alarm_monitor.register(src, /obj/machinery/computer/station_alert/.proc/update_icon)
+/obj/machinery/computer/station_alert/Initialize(mapload)
+ . = ..()
+ GLOB.alert_consoles += src
+ RegisterSignal(SSalarm, COMSIG_TRIGGERED_ALARM, .proc/alarm_triggered)
+ RegisterSignal(SSalarm, COMSIG_CANCELLED_ALARM, .proc/alarm_cancelled)
/obj/machinery/computer/station_alert/Destroy()
- alarm_monitor.unregister(src)
- QDEL_NULL(alarm_monitor)
+ GLOB.alert_consoles -= src
return ..()
/obj/machinery/computer/station_alert/attack_ai(mob/user)
add_fingerprint(user)
if(stat & (BROKEN|NOPOWER))
return
- interact(user)
+ tgui_interact(user)
/obj/machinery/computer/station_alert/attack_hand(mob/user)
add_fingerprint(user)
if(stat & (BROKEN|NOPOWER))
return
- interact(user)
+ tgui_interact(user)
-/obj/machinery/computer/station_alert/interact(mob/user)
- alarm_monitor.ui_interact(user)
+/obj/machinery/computer/station_alert/tgui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/tgui_state/state = GLOB.tgui_default_state)
+ ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
+ if(!ui)
+ ui = new(user, src, ui_key, "StationAlertConsole", name, ui_x, ui_y, master_ui, state)
+ ui.open()
+
+/obj/machinery/computer/station_alert/tgui_data(mob/user)
+ var/list/data = list()
+
+ data["alarms"] = list()
+ for(var/class in SSalarm.alarms)
+ if(!(class in alarms_listend_for))
+ continue
+ data["alarms"][class] = list()
+ for(var/area in SSalarm.alarms[class])
+ for(var/thing in SSalarm.alarms[class][area][3])
+ var/atom/A = locateUID(thing)
+ if(atoms_share_level(A, src))
+ data["alarms"][class] += area
+
+ return data
+
+/obj/machinery/computer/station_alert/proc/alarm_triggered(src, class, area/A, list/O, obj/alarmsource)
+ if(!(class in alarms_listend_for))
+ return
+ if(alarmsource.z != z)
+ return
+ if(stat & (BROKEN))
+ return
+ update_icon()
+
+/obj/machinery/computer/station_alert/proc/alarm_cancelled(src, class, area/A, obj/origin, cleared)
+ if(!(class in alarms_listend_for))
+ return
+ if(origin.z != z)
+ return
+ if(stat & (BROKEN))
+ return
+ update_icon()
/obj/machinery/computer/station_alert/update_icon()
- if(alarm_monitor)
- var/list/alarms = alarm_monitor.major_alarms()
- if(alarms.len)
- icon_screen = "alert:2"
- else
- icon_screen = "alert:0"
+ var/active_alarms = FALSE
+ var/list/list/temp_alarm_list = SSalarm.alarms.Copy()
+ for(var/cat in temp_alarm_list)
+ if(!(cat in alarms_listend_for))
+ continue
+ var/list/list/L = temp_alarm_list[cat].Copy()
+ for(var/alarm in L)
+ var/list/list/alm = L[alarm].Copy()
+ var/list/list/sources = alm[3].Copy()
+ for(var/thing in sources)
+ var/atom/A = locateUID(thing)
+ if(A && A.z != z)
+ L -= alarm
+ if(length(L))
+ active_alarms = TRUE
+ if(active_alarms)
+ icon_screen = "alert:2"
+ else
+ icon_screen = "alert:0"
..()
diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm
index 37dbdb6c9c0..c509675868b 100644
--- a/code/game/machinery/doors/firedoor.dm
+++ b/code/game/machinery/doors/firedoor.dm
@@ -28,6 +28,11 @@
var/nextstate = null
var/boltslocked = TRUE
var/active_alarm = FALSE
+ var/list/affecting_areas
+
+/obj/machinery/door/firedoor/Initialize(mapload)
+ . = ..()
+ CalculateAffectingAreas()
/obj/machinery/door/firedoor/examine(mob/user)
. = ..()
@@ -40,11 +45,31 @@
else
. += "The bolt locks have been unscrewed, but the bolts themselves are still wrenched to the floor."
+/obj/machinery/door/firedoor/proc/CalculateAffectingAreas()
+ remove_from_areas()
+ affecting_areas = get_adjacent_open_areas(src) | get_area(src)
+ for(var/I in affecting_areas)
+ var/area/A = I
+ LAZYADD(A.firedoors, src)
+
/obj/machinery/door/firedoor/closed
icon_state = "door_closed"
opacity = TRUE
density = TRUE
+//see also turf/AfterChange for adjacency shennanigans
+
+/obj/machinery/door/firedoor/proc/remove_from_areas()
+ if(affecting_areas)
+ for(var/I in affecting_areas)
+ var/area/A = I
+ LAZYREMOVE(A.firedoors, src)
+
+/obj/machinery/door/firedoor/Destroy()
+ remove_from_areas()
+ affecting_areas.Cut()
+ return ..()
+
/obj/machinery/door/firedoor/Bumped(atom/AM)
if(panel_open || operating)
return
diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm
index f12361f1664..b387f404d8c 100644
--- a/code/game/machinery/firealarm.dm
+++ b/code/game/machinery/firealarm.dm
@@ -25,6 +25,11 @@ FIRE ALARM
active_power_usage = 6
power_channel = ENVIRON
resistance_flags = FIRE_PROOF
+
+ light_power = 0
+ light_range = 7
+ light_color = "#ff3232"
+
var/last_process = 0
var/wiresexposed = 0
var/buildstage = 2 // 2 = complete, 1 = no wires, 0 = circuit gone
@@ -191,6 +196,7 @@ FIRE ALARM
/obj/machinery/firealarm/obj_break(damage_flag)
if(!(stat & BROKEN) && !(flags & NODECONSTRUCT) && buildstage != 0) //can't break the electronics if there isn't any inside.
stat |= BROKEN
+ LAZYREMOVE(myArea.firealarms, src)
update_icon()
/obj/machinery/firealarm/deconstruct(disassembled = TRUE)
@@ -203,6 +209,14 @@ FIRE ALARM
new /obj/item/stack/cable_coil(loc, 3)
qdel(src)
+/obj/machinery/firealarm/proc/update_fire_light(fire)
+ if(fire == !!light_power)
+ return // do nothing if we're already active
+ if(fire)
+ set_light(l_power = 0.8)
+ else
+ set_light(l_power = 0)
+
/obj/machinery/firealarm/process()//Note: this processing was mostly phased out due to other code, and only runs when needed
if(stat & (NOPOWER|BROKEN))
return
@@ -286,26 +300,16 @@ FIRE ALARM
time = min(max(round(time), 0), 120)
/obj/machinery/firealarm/proc/reset()
- if(!working)
+ if(!working || !report_fire_alarms)
return
var/area/A = get_area(src)
- A.fire_reset()
+ A.firereset(src)
- for(var/obj/machinery/firealarm/FA in A)
- if(is_station_contact(z) && FA.report_fire_alarms)
- SSalarms.fire_alarm.clearAlarm(loc, FA)
-
-/obj/machinery/firealarm/proc/alarm(var/duration = 0)
- if(!working)
+/obj/machinery/firealarm/proc/alarm()
+ if(!working || !report_fire_alarms)
return
-
var/area/A = get_area(src)
- for(var/obj/machinery/firealarm/FA in A)
- if(is_station_contact(z) && FA.report_fire_alarms)
- SSalarms.fire_alarm.triggerAlarm(loc, FA, duration)
- else
- A.fire_alert() // Manually trigger alarms if the alarm isn't reported
-
+ A.firealert(src) // Manually trigger alarms if the alarm isn't reported
update_icon()
/obj/machinery/firealarm/New(location, direction, building)
@@ -323,8 +327,14 @@ FIRE ALARM
else
overlays += image('icons/obj/monitors.dmi', "overlay_green")
+ myArea = get_area(src)
+ LAZYADD(myArea.firealarms, src)
update_icon()
+/obj/machinery/firealarm/Destroy()
+ LAZYREMOVE(myArea.firealarms, src)
+ return ..()
+
/*
FIRE ALARM CIRCUIT
Just a object used in constructing fire alarms
diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm
index e4e37ae1bcb..56019d22f7c 100644
--- a/code/game/machinery/recycler.dm
+++ b/code/game/machinery/recycler.dm
@@ -8,7 +8,7 @@
layer = MOB_LAYER+1 // Overhead
anchored = 1
density = 1
- damage_deflection = 10
+ damage_deflection = 15
var/safety_mode = 0 // Temporarily stops machine if it detects a mob
var/icon_name = "grinder-o"
var/blood = 0
@@ -92,7 +92,6 @@
if(AM)
Bumped(AM)
-
/obj/machinery/recycler/Bumped(atom/movable/AM)
if(stat & (BROKEN|NOPOWER))
diff --git a/code/game/machinery/tcomms/_base.dm b/code/game/machinery/tcomms/_base.dm
index 05c7552aacc..c3531c7f674 100644
--- a/code/game/machinery/tcomms/_base.dm
+++ b/code/game/machinery/tcomms/_base.dm
@@ -106,23 +106,37 @@ GLOBAL_LIST_EMPTY(tcomms_machines)
/**
- * Start of Ion Anomalie Event
+ * Start of Ion Anomaly Event
*
- * Proc to easily start an Ion Anomalie's effects, and update the icon
+ * Proc to easily start an Ion Anomaly's effects, and update the icon
*/
/obj/machinery/tcomms/proc/start_ion()
ion = TRUE
update_icon()
/**
- * End of Ion Anomalie Event
+ * End of Ion Anomaly Event
*
- * Proc to easily stop an Ion Anomalie's effects, and update the icon
+ * Proc to easily stop an Ion Anomaly's effects, and update the icon
*/
/obj/machinery/tcomms/proc/end_ion()
ion = FALSE
update_icon()
+/**
+ * Z-Level transit change helper
+ *
+ * Proc to make sure you cant have two of these active on a Z-level at once. It also makes sure to update the linkage
+ */
+/obj/machinery/tcomms/onTransitZ(old_z, new_z)
+ . = ..()
+ if(active)
+ active = FALSE
+ // This needs a timer because otherwise its on the shuttle Z and the message is missed
+ addtimer(CALLBACK(src, /atom.proc/visible_message, "Radio equipment on [src] has been overloaded by heavy bluespace interference. Please restart the machine."), 5)
+ update_icon()
+
+
/**
* Logging helper
*
diff --git a/code/game/machinery/tcomms/core.dm b/code/game/machinery/tcomms/core.dm
index 46cd0e6df71..622ce2e2b9f 100644
--- a/code/game/machinery/tcomms/core.dm
+++ b/code/game/machinery/tcomms/core.dm
@@ -14,6 +14,8 @@
name = "Telecommunications Core"
desc = "A large rack full of communications equipment. Looks important."
icon_state = "core"
+ // This starts as off so you cant make cores as hot spares
+ active = FALSE
/// The NTTC config for this device
var/datum/nttc_configuration/nttc = new()
/// List of all reachable devices
@@ -35,6 +37,11 @@
link_password = GenerateKey()
reachable_zlevels |= loc.z
component_parts += new /obj/item/circuitboard/tcomms/core(null)
+ if(check_power_on())
+ active = TRUE
+ else
+ visible_message("Error: Another core is already active in this sector. Power-up cancelled due to radio interference.")
+ update_icon()
/**
* Destructor for the core.
@@ -121,6 +128,38 @@
reachable_zlevels |= R.loc.z
+/**
+ * Z-Level transit change helper
+ *
+ * Handles parent call of disabling the machine if it changes Z-level, but also rebuilds the list of reachable levels
+ */
+/obj/machinery/tcomms/core/onTransitZ(old_z, new_z)
+ . = ..()
+ refresh_zlevels()
+
+/**
+ * Power-on checker
+ *
+ * Checks the z-level to see if an existing core is already powered on, and deny this one turning on if there is one. Returns TRUE if it can power on, or FALSE if it cannot
+ */
+/obj/machinery/tcomms/core/proc/check_power_on()
+ // Cancel if we are already on
+ if(active)
+ return TRUE
+
+ for(var/obj/machinery/tcomms/core/C in GLOB.tcomms_machines)
+ // Make sure we dont check ourselves
+ if(C == src)
+ continue
+ // We dont care about ones on other zlevels
+ if(!atoms_share_level(C, src))
+ continue
+ // If another core is active, return FALSE
+ if(C.active)
+ return FALSE
+ // If we got here there isnt an active core on this Z-level. So return true
+ return TRUE
+
//////////////
// UI STUFF //
//////////////
@@ -198,8 +237,11 @@
if(ui_tab == UI_TAB_CONFIG)
// All the toggle on/offs go here
if(href_list["toggle_active"])
- active = !active
- update_icon()
+ if(check_power_on())
+ active = !active
+ update_icon()
+ else
+ to_chat(usr, "Error: Another core is already active in this sector. Power-up cancelled due to radio interference.")
// NTTC Toggles
if(href_list["nttc_toggle_jobs"])
nttc.toggle_jobs = !nttc.toggle_jobs
diff --git a/code/game/machinery/tcomms/relay.dm b/code/game/machinery/tcomms/relay.dm
index b2faf9ce0cd..bf5e6e21a9c 100644
--- a/code/game/machinery/tcomms/relay.dm
+++ b/code/game/machinery/tcomms/relay.dm
@@ -9,6 +9,8 @@
name = "Telecommunications Relay"
desc = "A large device with several radio antennas on it."
icon_state = "relay"
+ // This starts as off so you cant make cores as hot spares
+ active = FALSE
/// The host core for this relay
var/obj/machinery/tcomms/core/linked_core
/// ID of the hub to auto link to
@@ -26,6 +28,11 @@
/obj/machinery/tcomms/relay/Initialize(mapload)
. = ..()
component_parts += new /obj/item/circuitboard/tcomms/relay(null)
+ if(check_power_on())
+ active = TRUE
+ else
+ visible_message("Error: Another relay is already active in this sector. Power-up cancelled due to radio interference.")
+ update_icon()
if(mapload && autolink_id)
return INITIALIZE_HINT_LATELOAD
@@ -51,6 +58,40 @@
// Only ONE of these with one ID should exist per world
break
+/**
+ * Z-Level transit change helper
+ *
+ * Handles parent call of disabling the machine if it changes Z-level, but also rebuilds the list of reachable levels on the linked core
+ */
+/obj/machinery/tcomms/relay/onTransitZ(old_z, new_z)
+ . = ..()
+ if(linked_core)
+ linked_core.refresh_zlevels()
+
+
+/**
+ * Power-on checker
+ *
+ * Checks the z-level to see if an existing relay is already powered on, and deny this one turning on if there is one. Returns TRUE if it can power on, or FALSE if it cannot
+ */
+/obj/machinery/tcomms/relay/proc/check_power_on()
+ // Cancel if we are already on
+ if(active)
+ return TRUE
+
+ for(var/obj/machinery/tcomms/relay/R in GLOB.tcomms_machines)
+ // Make sure we dont check ourselves
+ if(R == src)
+ continue
+ // We dont care about ones on other zlevels
+ if(!atoms_share_level(R, src))
+ continue
+ // If another relay is active, return FALSE
+ if(R.active)
+ return FALSE
+ // If we got here there isnt an active relay on this Z-level. So return TRUE
+ return TRUE
+
/**
* Proc to link the relay to the core.
*
@@ -83,9 +124,9 @@
* Proc which ensures the host core has its zlevels updated (icons are updated by parent call)
*/
/obj/machinery/tcomms/relay/power_change()
- ..()
- if(linked_core)
- linked_core.refresh_zlevels()
+ ..()
+ if(linked_core)
+ linked_core.refresh_zlevels()
//////////////
// UI STUFF //
@@ -127,10 +168,13 @@
// All the toggle on/offs go here
if(href_list["toggle_active"])
- active = !active
- update_icon()
- if(linked_core)
- linked_core.refresh_zlevels()
+ if(check_power_on())
+ active = !active
+ update_icon()
+ if(linked_core)
+ linked_core.refresh_zlevels()
+ else
+ to_chat(usr, "Error: Another relay is already active in this sector. Power-up cancelled due to radio interference.")
// Set network ID
if(href_list["network_id"])
diff --git a/code/game/machinery/transformer.dm b/code/game/machinery/transformer.dm
index cc9fc3e4666..18abeba7400 100644
--- a/code/game/machinery/transformer.dm
+++ b/code/game/machinery/transformer.dm
@@ -6,17 +6,45 @@
layer = MOB_LAYER+1 // Overhead
anchored = 1
density = 1
- var/transform_dead = 0
- var/transform_standing = 0
- var/cooldown_duration = 600 // 1 minute
- var/cooldown = 0
- var/robot_cell_charge = 5000
+ /// TRUE if the factory can transform dead mobs.
+ var/transform_dead = TRUE
+ /// TRUE if the mob can be standing and still be transformed.
+ var/transform_standing = TRUE
+ /// Cooldown between each transformation, in deciseconds.
+ var/cooldown_duration = 1 MINUTES
+ /// If the factory is currently on cooldown from its last transformation.
+ var/is_on_cooldown = FALSE
+ /// The type of cell that newly created borgs get.
+ var/robot_cell_type = /obj/item/stock_parts/cell/high/plus
+ /// The direction that mobs must moving in to get transformed.
var/acceptdir = EAST
+ /// The AI who placed this factory.
+ var/mob/living/silicon/ai/masterAI
-/obj/machinery/transformer/New()
- // On us
- ..()
- new /obj/machinery/conveyor/auto(loc, WEST)
+/obj/machinery/transformer/Initialize(mapload, mob/living/silicon/ai/_ai = null)
+ . = ..()
+ if(_ai)
+ masterAI = _ai
+ initialize_belts()
+
+/// Used to create all of the belts the transformer will be using. All belts should be pushing `WEST`.
+/obj/machinery/transformer/proc/initialize_belts()
+ var/turf/T = get_turf(src)
+ if(!T)
+ return
+
+ // Belt under the factory.
+ new /obj/machinery/conveyor/auto(T, WEST)
+
+ // Get the turf 1 tile to the EAST.
+ var/turf/east = locate(T.x + 1, T.y, T.z)
+ if(istype(east, /turf/simulated/floor))
+ new /obj/machinery/conveyor/auto(east, WEST)
+
+ // Get the turf 1 tile to the WEST.
+ var/turf/west = locate(T.x - 1, T.y, T.z)
+ if(istype(west, /turf/simulated/floor))
+ new /obj/machinery/conveyor/auto(west, WEST)
/obj/machinery/transformer/power_change()
..()
@@ -24,7 +52,7 @@
/obj/machinery/transformer/update_icon()
..()
- if(stat & (BROKEN|NOPOWER) || cooldown == 1)
+ if(is_on_cooldown || stat & (BROKEN|NOPOWER))
icon_state = "separator-AO0"
else
icon_state = initial(icon_state)
@@ -35,120 +63,76 @@
C.setDir(newdir)
acceptdir = turn(newdir, 180)
-/obj/machinery/transformer/Bumped(var/atom/movable/AM)
+/// Resets `is_on_cooldown` to `FALSE` and updates our icon. Used in a callback after the transformer does a transformation.
+/obj/machinery/transformer/proc/reset_cooldown()
+ is_on_cooldown = FALSE
+ update_icon()
- if(cooldown == 1)
+/obj/machinery/transformer/Bumped(atom/movable/AM)
+ // They have to be human to be transformed.
+ if(is_on_cooldown || !ishuman(AM))
return
- // Crossed didn't like people lying down.
- if(ishuman(AM))
- // Only humans can enter from the west side, while lying down.
- var/move_dir = get_dir(loc, AM.loc)
- var/mob/living/carbon/human/H = AM
- if((transform_standing || H.lying) && move_dir == acceptdir)// || move_dir == WEST)
- AM.loc = src.loc
- do_transform(AM)
+ var/mob/living/carbon/human/H = AM
+ var/move_dir = get_dir(loc, H.loc)
-/obj/machinery/transformer/proc/do_transform(var/mob/living/carbon/human/H)
- if(stat & (BROKEN|NOPOWER))
- return
- if(cooldown == 1)
+ if((transform_standing || H.lying) && move_dir == acceptdir)
+ H.forceMove(drop_location())
+ do_transform(H)
+
+/// Transforms a human mob into a cyborg, connects them to the malf AI which placed the factory.
+/obj/machinery/transformer/proc/do_transform(mob/living/carbon/human/H)
+ if(is_on_cooldown || stat & (BROKEN|NOPOWER))
return
if(!transform_dead && H.stat == DEAD)
- playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
+ playsound(loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
return
- playsound(src.loc, 'sound/items/welder.ogg', 50, 1)
- H.emote("scream") // It is painful
- H.adjustBruteLoss(max(0, 80 - H.getBruteLoss())) // Hurt the human, don't try to kill them though.
-
- // Sleep for a couple of ticks to allow the human to see the pain
- sleep(5)
-
+ playsound(loc, 'sound/items/welder.ogg', 50, 1)
use_power(5000) // Use a lot of power.
- var/mob/living/silicon/robot/R = H.Robotize(1) // Delete the items or they'll all pile up in a single tile and lag
-
- R.cell.maxcharge = robot_cell_charge
- R.cell.charge = robot_cell_charge
-
- // So he can't jump out the gate right away.
- R.lockcharge = !R.lockcharge
- spawn(50)
- playsound(src.loc, 'sound/machines/ping.ogg', 50, 0)
- sleep(30)
- if(R)
- R.lockcharge = !R.lockcharge
- R.notify_ai(1)
// Activate the cooldown
- cooldown = 1
+ is_on_cooldown = TRUE
update_icon()
- spawn(cooldown_duration)
- cooldown = 0
- update_icon()
-
-/obj/machinery/transformer/conveyor/New()
- ..()
- var/turf/T = loc
- if(T)
- // Spawn Conveyour Belts
-
- //East
- var/turf/east = locate(T.x + 1, T.y, T.z)
- if(istype(east, /turf/simulated/floor))
- new /obj/machinery/conveyor/auto(east, WEST)
-
- // West
- var/turf/west = locate(T.x - 1, T.y, T.z)
- if(istype(west, /turf/simulated/floor))
- new /obj/machinery/conveyor/auto(west, WEST)
+ addtimer(CALLBACK(src, .proc/reset_cooldown), cooldown_duration)
+ addtimer(CALLBACK(null, .proc/playsound, loc, 'sound/machines/ping.ogg', 50, 0), 3 SECONDS)
+ H.emote("scream")
+ if(!masterAI) // If the factory was placed via admin spawning or other means, it wont have an owner_AI.
+ H.Robotize(robot_cell_type)
+ return
+ var/mob/living/silicon/robot/R = H.Robotize(robot_cell_type, FALSE, masterAI)
+ if(R.mind && !R.client && !R.grab_ghost()) // Make sure this is an actual player first and not just a humanized monkey or something.
+ message_admins("[key_name_admin(R)] was just transformed by a borg factory, but they were SSD. Polling ghosts for a replacement.")
+ var/list/candidates = SSghost_spawns.poll_candidates("Do you want to play as a malfunctioning cyborg?", ROLE_TRAITOR, poll_time = 15 SECONDS)
+ if(!length(candidates))
+ return
+ var/mob/dead/observer/O = pick(candidates)
+ R.key= O.key
/obj/machinery/transformer/mime
name = "Mimetech Greyscaler"
desc = "Turns anything placed inside black and white."
-
-/obj/machinery/transformer/mime/conveyor/New()
- ..()
- var/turf/T = loc
- if(T)
- // Spawn Conveyour Belts
-
- //East
- var/turf/east = locate(T.x + 1, T.y, T.z)
- if(istype(east, /turf/simulated/floor))
- new /obj/machinery/conveyor/auto(east, WEST)
-
- // West
- var/turf/west = locate(T.x - 1, T.y, T.z)
- if(istype(west, /turf/simulated/floor))
- new /obj/machinery/conveyor/auto(west, WEST)
-
-/obj/machinery/transformer/mime/Bumped(var/atom/movable/AM)
-
- if(cooldown == 1)
+/obj/machinery/transformer/mime/Bumped(atom/movable/AM)
+ if(is_on_cooldown)
return
// Crossed didn't like people lying down.
- if(isatom(AM))
- AM.loc = src.loc
+ if(istype(AM))
+ AM.forceMove(drop_location())
do_transform_mime(AM)
else
to_chat(AM, "Only items can be greyscaled.")
return
-/obj/machinery/transformer/proc/do_transform_mime(var/obj/item/I)
- if(stat & (BROKEN|NOPOWER))
- return
- if(cooldown == 1)
+/obj/machinery/transformer/proc/do_transform_mime(obj/item/I)
+ if(is_on_cooldown || stat & (BROKEN|NOPOWER))
return
- playsound(src.loc, 'sound/items/welder.ogg', 50, 1)
- // Sleep for a couple of ticks to allow the human to see the pain
- sleep(5)
+ playsound(loc, 'sound/items/welder.ogg', 50, 1)
use_power(5000) // Use a lot of power.
var/icon/newicon = new(I.icon, I.icon_state)
@@ -156,42 +140,27 @@
I.icon = newicon
// Activate the cooldown
- cooldown = 1
+ is_on_cooldown = TRUE
update_icon()
- spawn(cooldown_duration)
- cooldown = 0
- update_icon()
+ addtimer(CALLBACK(src, .proc/reset_cooldown), cooldown_duration)
/obj/machinery/transformer/xray
name = "Automatic X-Ray 5000"
desc = "A large metalic machine with an entrance and an exit. A sign on the side reads, 'backpack go in, backpack come out', 'human go in, irradiated human come out'."
+ acceptdir = WEST
-/obj/machinery/transformer/xray/Initialize(mapload)
- . = ..()
- // On us
- new /obj/machinery/conveyor/auto(loc, EAST)
-
-/obj/machinery/transformer/xray/conveyor/New()
- ..()
- var/turf/T = loc
+/obj/machinery/transformer/xray/initialize_belts()
+ var/turf/T = get_turf(src)
if(T)
- // Spawn Conveyour Belts
+ // This handles the belt under the transformer and 1 tile to the left and right.
+ . = ..()
- //East
- var/turf/east = locate(T.x + 1, T.y, T.z)
- if(istype(east, /turf/simulated/floor))
- new /obj/machinery/conveyor/auto(east, EAST)
- //East2
+ // Get the turf 2 tiles to the EAST.
var/turf/east2 = locate(T.x + 2, T.y, T.z)
if(istype(east2, /turf/simulated/floor))
new /obj/machinery/conveyor/auto(east2, EAST)
- // West
- var/turf/west = locate(T.x - 1, T.y, T.z)
- if(istype(west, /turf/simulated/floor))
- new /obj/machinery/conveyor/auto(west, EAST)
-
- // West2
+ // Get the turf 2 tiles to the WEST.
var/turf/west2 = locate(T.x - 2, T.y, T.z)
if(istype(west2, /turf/simulated/floor))
new /obj/machinery/conveyor/auto(west2, EAST)
@@ -207,30 +176,30 @@
else
icon_state = initial(icon_state)
-/obj/machinery/transformer/xray/Bumped(var/atom/movable/AM)
-
- if(cooldown == 1)
+/obj/machinery/transformer/xray/Bumped(atom/movable/AM)
+ if(is_on_cooldown)
return
// Crossed didn't like people lying down.
if(ishuman(AM))
// Only humans can enter from the west side, while lying down.
- var/move_dir = get_dir(loc, AM.loc)
var/mob/living/carbon/human/H = AM
- if(H.lying && move_dir == WEST)// || move_dir == WEST)
- AM.loc = src.loc
- irradiate(AM)
+ var/move_dir = get_dir(loc, H.loc)
- else if(isatom(AM))
- AM.loc = src.loc
+ if(H.lying && move_dir == acceptdir)
+ H.forceMove(drop_location())
+ irradiate(H)
+
+ else if(istype(AM))
+ AM.forceMove(drop_location())
scan(AM)
-/obj/machinery/transformer/xray/proc/irradiate(var/mob/living/carbon/human/H)
+/obj/machinery/transformer/xray/proc/irradiate(mob/living/carbon/human/H)
if(stat & (BROKEN|NOPOWER))
return
flick("separator-AO0",src)
- playsound(src.loc, 'sound/effects/alert.ogg', 50, 0)
+ playsound(loc, 'sound/effects/alert.ogg', 50, 0)
sleep(5)
H.apply_effect((rand(150,200)),IRRADIATE,0)
if(prob(5))
@@ -242,15 +211,15 @@
domutcheck(H,null,1)
-/obj/machinery/transformer/xray/proc/scan(var/obj/item/I)
+/obj/machinery/transformer/xray/proc/scan(obj/item/I)
if(scan_rec(I))
- playsound(src.loc, 'sound/effects/alert.ogg', 50, 0)
+ playsound(loc, 'sound/effects/alert.ogg', 50, 0)
flick("separator-AO0",src)
else
- playsound(src.loc, 'sound/machines/ping.ogg', 50, 0)
+ playsound(loc, 'sound/machines/ping.ogg', 50, 0)
sleep(30)
-/obj/machinery/transformer/xray/proc/scan_rec(var/obj/item/I)
+/obj/machinery/transformer/xray/proc/scan_rec(obj/item/I)
if(istype(I, /obj/item/gun))
return TRUE
if(istype(I, /obj/item/transfer_valve))
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 69f70207452..9a24edb4da3 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -331,6 +331,8 @@
else
occupant.clear_alert("mechaport")
if(leg_overload_mode)
+ log_message("Leg Overload damage.")
+ take_damage(1, BRUTE, FALSE, FALSE)
if(obj_integrity < max_integrity - max_integrity / 3)
leg_overload_mode = FALSE
step_in = initial(step_in)
@@ -502,7 +504,7 @@
check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
else
check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT))
- if(. >= 5 || prob(33))
+ if((. >= 5 || prob(33)) && !(. == 1 && leg_overload_mode)) //If it takes 1 damage and leg_overload_mode is true, do not say TAKING DAMAGE! to the user several times a second.
occupant_message("Taking damage!")
log_message("Took [damage_amount] points of damage. Damage type: [damage_type]")
@@ -540,7 +542,7 @@
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src, ATTACK_EFFECT_PUNCH)
playsound(loc, 'sound/weapons/tap.ogg', 40, 1, -1)
- user.visible_message("[user] hits [name]. Nothing happens", "You hit [name] with no visible effect.")
+ user.visible_message("[user] hits [name]. Nothing happens", "You hit [name] with no visible effect.")
log_message("Attack by hand/paw. Attacker - [user].")
diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm
index 5f5c62abd21..97e46e3abb5 100644
--- a/code/game/objects/items/blueprints.dm
+++ b/code/game/objects/items/blueprints.dm
@@ -221,6 +221,12 @@
A.contents += thing
thing.change_area(old_area, A)
+ var/area/oldA = get_area(get_turf(usr))
+ var/list/firedoors = oldA.firedoors
+ for(var/door in firedoors)
+ var/obj/machinery/door/firedoor/FD = door
+ FD.CalculateAffectingAreas()
+
interact()
area_created = TRUE
return area_created
@@ -236,6 +242,10 @@
return
set_area_machinery_title(A,str,prevname)
A.name = str
+ if(A.firedoors)
+ for(var/D in A.firedoors)
+ var/obj/machinery/door/firedoor/FD = D
+ FD.CalculateAffectingAreas()
to_chat(usr, "You rename the '[prevname]' to '[str]'.")
interact()
return 1
diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index eeb484b9f50..ce52e260bca 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -11,7 +11,7 @@
slot_flags = SLOT_BELT | SLOT_EARS
attack_verb = list("attacked", "coloured")
toolspeed = 1
- var/colour = "#FF0000" //RGB
+ var/colour = COLOR_RED
var/drawtype = "rune"
var/list/graffiti = list("body","amyjon","face","matt","revolution","engie","guy","end","dwarf","uboa","up","down","left","right","heart","borgsrogue","voxpox","shitcurity","catbeast","hieroglyphs1","hieroglyphs2","hieroglyphs3","security","syndicate1","syndicate2","nanotrasen","lie","valid","arrowleft","arrowright","arrowup","arrowdown","chicken","hailcrab","brokenheart","peace","scribble","scribble2","scribble3","skrek","squish","tunnelsnake","yip","youaredead")
var/list/letters = list("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z")
@@ -123,54 +123,54 @@
/obj/item/toy/crayon/red
icon_state = "crayonred"
- colour = "#DA0000"
+ colour = COLOR_RED
colourName = "red"
/obj/item/toy/crayon/orange
icon_state = "crayonorange"
- colour = "#FF9300"
+ colour = COLOR_ORANGE
colourName = "orange"
/obj/item/toy/crayon/yellow
icon_state = "crayonyellow"
- colour = "#FFF200"
+ colour = COLOR_YELLOW
colourName = "yellow"
/obj/item/toy/crayon/green
icon_state = "crayongreen"
- colour = "#A8E61D"
+ colour = COLOR_GREEN
colourName = "green"
/obj/item/toy/crayon/blue
icon_state = "crayonblue"
- colour = "#00B7EF"
+ colour = COLOR_BLUE
colourName = "blue"
/obj/item/toy/crayon/purple
icon_state = "crayonpurple"
- colour = "#DA00FF"
+ colour = COLOR_PURPLE
colourName = "purple"
/obj/item/toy/crayon/random/New()
icon_state = pick(list("crayonred", "crayonorange", "crayonyellow", "crayongreen", "crayonblue", "crayonpurple"))
switch(icon_state)
if("crayonred")
- colour = "#DA0000"
+ colour = COLOR_RED
colourName = "red"
if("crayonorange")
- colour = "#FF9300"
+ colour = COLOR_ORANGE
colourName = "orange"
if("crayonyellow")
- colour = "#FFF200"
+ colour = COLOR_YELLOW
colourName = "yellow"
if("crayongreen")
- colour = "#A8E61D"
+ colour =COLOR_GREEN
colourName = "green"
if("crayonblue")
- colour = "#00B7EF"
+ colour = COLOR_BLUE
colourName = "blue"
if("crayonpurple")
- colour = "#DA00FF"
+ colour = COLOR_PURPLE
colourName = "purple"
..()
@@ -197,10 +197,10 @@
if(!Adjacent(usr) || usr.incapacitated())
return
if(href_list["color"])
- if(colour != "#FFFFFF")
- colour = "#FFFFFF"
+ if(colour != COLOR_WHITE)
+ colour = COLOR_WHITE
else
- colour = "#000000"
+ colour = COLOR_BLACK
update_window(usr)
else
..()
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 20e11b60bc1..528be3c5f87 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -326,7 +326,7 @@ GLOBAL_LIST_INIT(default_medbay_channels, list(
// If we were to send to a channel we don't have, drop it.
return RADIO_CONNECTION_FAIL
-/obj/item/radio/talk_into(mob/living/M as mob, list/message_pieces, channel, var/verb = "says")
+/obj/item/radio/talk_into(mob/living/M as mob, list/message_pieces, channel, verbage = "says")
if(!on)
return 0 // the device has to be on
// Fix for permacell radios, but kinda eh about actually fixing them.
@@ -429,6 +429,7 @@ GLOBAL_LIST_INIT(default_medbay_channels, list(
tcm.connection = connection
tcm.vname = M.voice_name
tcm.sender = M
+ tcm.verbage = verbage
// Now put that through the stuff
var/handled = FALSE
if(connection)
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index f20a2cc5875..43697ac4776 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -72,7 +72,7 @@ REAGENT SCANNER
var/turf/U = O.loc
if(U && U.intact)
O.invisibility = 101
- O.alpha = 255
+ O.alpha = 255
for(var/mob/living/M in T.contents)
var/oldalpha = M.alpha
if(M.alpha < 255 && istype(M))
diff --git a/code/game/objects/items/flag.dm b/code/game/objects/items/flag.dm
index 14bb468e049..f33e504a3e6 100644
--- a/code/game/objects/items/flag.dm
+++ b/code/game/objects/items/flag.dm
@@ -251,6 +251,7 @@
message_admins("[key_name_admin(user)] has lit the [src] trapped with [boobytrap] by [key_name_admin(trapper)] at [A.name] (JMP).")
log_game("[key_name_admin(user)] has lit the [src] trapped with [boobytrap] by [key_name_admin(trapper)] at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]).")
investigate_log("[key_name_admin(user)] has lit the [src] trapped with [boobytrap] by [key_name_admin(trapper)] at [A.name] ([bombturf.x],[bombturf.y],[bombturf.z]).", INVESTIGATE_BOMB)
+ burn()
else
return ..()
@@ -267,8 +268,16 @@
/obj/item/flag/chameleon/burn()
if(boobytrap)
- boobytrap.prime()
- ..()
+ fire_act()
+ addtimer(CALLBACK(src, .proc/prime_boobytrap), boobytrap.det_time)
+ else
+ ..()
+
+/obj/item/flag/chameleon/proc/prime_boobytrap()
+ boobytrap.forceMove(get_turf(loc))
+ boobytrap.prime()
+ boobytrap = null
+ burn()
/obj/item/flag/chameleon/updateFlagIcon()
icon_state = updated_icon_state
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 75e1c6a710d..4fef7b9f6d5 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -472,7 +472,8 @@ GLOBAL_LIST_INIT(plastic_recipes, list(
new /datum/stack_recipe("cane mould", /obj/item/kitchen/mould/cane, 1, on_floor = 1), \
new /datum/stack_recipe("cash mould", /obj/item/kitchen/mould/cash, 1, on_floor = 1), \
new /datum/stack_recipe("coin mould", /obj/item/kitchen/mould/coin, 1, on_floor = 1), \
- new /datum/stack_recipe("sucker mould", /obj/item/kitchen/mould/loli, 1, on_floor = 1)))
+ new /datum/stack_recipe("sucker mould", /obj/item/kitchen/mould/loli, 1, on_floor = 1), \
+ new /datum/stack_recipe("warning cone", /obj/item/clothing/head/cone, 5, on_floor = 1)))
/obj/item/stack/sheet/plastic
name = "plastic"
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index d3d61233f97..cd1b91388d7 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -35,7 +35,7 @@
desc = "A translucent balloon. There's nothing in it."
icon = 'icons/obj/toy.dmi'
icon_state = "waterballoon-e"
- item_state = "balloon-empty"
+ item_state = "waterballoon-e"
/obj/item/toy/balloon/New()
..()
@@ -99,10 +99,10 @@
/obj/item/toy/balloon/update_icon()
if(src.reagents.total_volume >= 1)
icon_state = "waterballoon"
- item_state = "balloon"
+ item_state = "waterballoon"
else
icon_state = "waterballoon-e"
- item_state = "balloon-empty"
+ item_state = "waterballoon-e"
/obj/item/toy/syndicateballoon
name = "syndicate balloon"
diff --git a/code/game/objects/items/weapons/garrote.dm b/code/game/objects/items/weapons/garrote.dm
index 4bddaf551ea..e3c145e790b 100644
--- a/code/game/objects/items/weapons/garrote.dm
+++ b/code/game/objects/items/weapons/garrote.dm
@@ -104,7 +104,7 @@
playsound(src.loc, 'sound/weapons/cablecuff.ogg', 15, 1, -1)
M.visible_message("[U] comes from behind and begins garroting [M] with the [src]!", \
- "[U]\ begins garroting you with the [src]![improvised ? "" : " You are unable to speak!"]", \
+ "[U] begins garroting you with the [src]![improvised ? "" : " You are unable to speak!"]", \
"You hear struggling and wire strain against flesh!")
return
diff --git a/code/game/objects/items/weapons/grenades/smokebomb.dm b/code/game/objects/items/weapons/grenades/smokebomb.dm
index 6dd07485f5b..53061e5fa61 100644
--- a/code/game/objects/items/weapons/grenades/smokebomb.dm
+++ b/code/game/objects/items/weapons/grenades/smokebomb.dm
@@ -19,7 +19,7 @@
/obj/item/grenade/smokebomb/prime()
playsound(src.loc, 'sound/effects/smoke.ogg', 50, 1, -3)
- src.smoke.set_up(10, 0, usr.loc)
+ smoke.set_up(10, 0)
spawn(0)
src.smoke.start()
sleep(10)
diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm
index 1f73e5c7062..69b4abbe10d 100644
--- a/code/game/objects/items/weapons/handcuffs.dm
+++ b/code/game/objects/items/weapons/handcuffs.dm
@@ -126,13 +126,15 @@
color = pick(COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_WHITE, COLOR_PINK, COLOR_YELLOW, COLOR_CYAN)
..()
-/obj/item/restraints/handcuffs/cable/proc/cable_color(var/colorC)
- if(colorC)
- if(colorC == "rainbow")
- colorC = color_rainbow()
- color = colorC
- else
+/obj/item/restraints/handcuffs/cable/proc/cable_color(colorC)
+ if(!colorC)
color = COLOR_RED
+ else if(colorC == "rainbow")
+ color = color_rainbow()
+ else if(colorC == "orange") //byond only knows 16 colors by name, and orange isn't one of them
+ color = COLOR_ORANGE
+ else
+ color = colorC
/obj/item/restraints/handcuffs/cable/proc/color_rainbow()
color = pick(COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_PINK, COLOR_YELLOW, COLOR_CYAN)
diff --git a/code/game/objects/items/weapons/shards.dm b/code/game/objects/items/weapons/shards.dm
index 6daabffe000..f987f047f11 100644
--- a/code/game/objects/items/weapons/shards.dm
+++ b/code/game/objects/items/weapons/shards.dm
@@ -83,7 +83,7 @@
/obj/item/shard/Crossed(mob/living/L, oldloc)
if(istype(L) && has_gravity(loc))
- if(L.incorporeal_move || L.flying)
+ if(L.incorporeal_move || L.flying || L.floating)
return
playsound(loc, 'sound/effects/glass_step.ogg', 50, TRUE)
return ..()
diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm
index 6d5a192c641..121782b2e8e 100644
--- a/code/game/objects/items/weapons/storage/bags.dm
+++ b/code/game/objects/items/weapons/storage/bags.dm
@@ -380,12 +380,13 @@
w_class = WEIGHT_CLASS_BULKY
flags = CONDUCT
materials = list(MAT_METAL=3000)
+ cant_hold = list(/obj/item/disk/nuclear) // Prevents some cheesing
-/obj/item/storage/bag/tray/attack(mob/living/M as mob, mob/living/user as mob)
+/obj/item/storage/bag/tray/attack(mob/living/M, mob/living/user)
..()
// Drop all the things. All of them.
var/list/obj/item/oldContents = contents.Copy()
- quick_empty()
+ drop_inventory(user)
// Make each item scatter a bit
for(var/obj/item/I in oldContents)
diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm
index da0094bb2ef..9ef94a861a0 100644
--- a/code/game/objects/items/weapons/storage/boxes.dm
+++ b/code/game/objects/items/weapons/storage/boxes.dm
@@ -846,7 +846,7 @@
desc = "A small box of Almost But Not Quite Plasma Premium Matches."
icon = 'icons/obj/cigarettes.dmi'
icon_state = "matchbox"
- item_state = "zippo"
+ item_state = "matchbox"
storage_slots = 10
w_class = WEIGHT_CLASS_TINY
max_w_class = WEIGHT_CLASS_TINY
diff --git a/code/game/objects/items/weapons/storage/fancy.dm b/code/game/objects/items/weapons/storage/fancy.dm
index 37f568fa51a..f86ebb2f69d 100644
--- a/code/game/objects/items/weapons/storage/fancy.dm
+++ b/code/game/objects/items/weapons/storage/fancy.dm
@@ -226,14 +226,14 @@
name = "\improper DromedaryCo packet"
desc = "A packet of six imported DromedaryCo cancer sticks. A label on the packaging reads, \"Wouldn't a slow death make a change?\""
icon_state = "Dpacket"
- item_state = "cigpacket"
+ item_state = "Dpacket"
/obj/item/storage/fancy/cigarettes/syndicate
name = "\improper Syndicate Cigarettes"
desc = "A packet of six evil-looking cigarettes, A label on the packaging reads, \"Donk Co\""
icon_state = "robustpacket"
- item_state = "cigpacket"
+ item_state = "robustpacket"
/obj/item/storage/fancy/cigarettes/syndicate/New()
..()
@@ -244,14 +244,14 @@
name = "cigarette packet"
desc = "An obscure brand of cigarettes."
icon_state = "syndiepacket"
- item_state = "cigpacket"
+ item_state = "syndiepacket"
cigarette_type = /obj/item/clothing/mask/cigarette/syndicate
/obj/item/storage/fancy/cigarettes/cigpack_med
name = "Medical Marijuana Packet"
desc = "A prescription packet containing six marijuana cigarettes."
icon_state = "medpacket"
- item_state = "cigpacket"
+ item_state = "medpacket"
cigarette_type = /obj/item/clothing/mask/cigarette/medical_marijuana
@@ -259,46 +259,46 @@
name = "\improper Uplift Smooth packet"
desc = "Your favorite brand, now menthol flavored."
icon_state = "upliftpacket"
- item_state = "cigpacket"
+ item_state = "upliftpacket"
cigarette_type = /obj/item/clothing/mask/cigarette/menthol
/obj/item/storage/fancy/cigarettes/cigpack_robust
name = "\improper Robust packet"
desc = "Smoked by the robust."
icon_state = "robustpacket"
- item_state = "cigpacket"
+ item_state = "robustpacket"
/obj/item/storage/fancy/cigarettes/cigpack_robustgold
name = "\improper Robust Gold packet"
desc = "Smoked by the truly robust."
icon_state = "robustgpacket"
- item_state = "cigpacket"
+ item_state = "robustgpacket"
cigarette_type = /obj/item/clothing/mask/cigarette/robustgold
/obj/item/storage/fancy/cigarettes/cigpack_carp
name = "\improper Carp Classic packet"
desc = "Since 2313."
icon_state = "carppacket"
- item_state = "cigpacket"
+ item_state = "carppacket"
/obj/item/storage/fancy/cigarettes/cigpack_midori
name = "\improper Midori Tabako packet"
desc = "You can't understand the runes, but the packet smells funny."
icon_state = "midoripacket"
- item_state = "cigpacket"
+ item_state = "midoripacket"
/obj/item/storage/fancy/cigarettes/cigpack_shadyjims
name ="\improper Shady Jim's Super Slims"
desc = "Is your weight slowing you down? Having trouble running away from gravitational singularities? Can't stop stuffing your mouth? Smoke Shady Jim's Super Slims and watch all that fat burn away. Guaranteed results!"
icon_state = "shadyjimpacket"
- item_state = "cigpacket"
+ item_state = "shadyjimpacket"
cigarette_type = /obj/item/clothing/mask/cigarette/shadyjims
/obj/item/storage/fancy/cigarettes/cigpack_random
name ="\improper Embellished Enigma packet"
desc = "For the true connoisseur of exotic flavors."
icon_state = "shadyjimpacket"
- item_state = "cigpacket"
+ item_state = "shadyjimpacket"
cigarette_type = /obj/item/clothing/mask/cigarette/random
/obj/item/storage/fancy/rollingpapers
@@ -307,6 +307,7 @@
w_class = WEIGHT_CLASS_TINY
icon = 'icons/obj/cigarettes.dmi'
icon_state = "cig_paper_pack"
+ item_state = "cig_paper_pack"
storage_slots = 10
icon_type = "rolling paper"
can_hold = list(/obj/item/rollingpaper)
diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm
index 16bd6f4caa8..49b6c6a11ea 100644
--- a/code/game/objects/items/weapons/storage/storage.dm
+++ b/code/game/objects/items/weapons/storage/storage.dm
@@ -438,8 +438,11 @@
if((!ishuman(usr) && (src.loc != usr)) || usr.stat || usr.restrained())
return
+ drop_inventory(usr)
+
+/obj/item/storage/proc/drop_inventory(user)
var/turf/T = get_turf(src)
- hide_from(usr)
+ hide_from(user)
for(var/obj/item/I in contents)
remove_from_storage(I, T)
CHECK_TICK
@@ -499,10 +502,9 @@
/obj/item/storage/attack_self(mob/user)
- //Clicking on itself will empty it, if it has the verb to do that.
- if(user.is_in_active_hand(src))
- if(verbs.Find(/obj/item/storage/verb/quick_empty))
- quick_empty()
+ //Clicking on itself will empty it, if allow_quick_empty is TRUE
+ if(allow_quick_empty && user.is_in_active_hand(src))
+ drop_inventory(user)
//Returns the storage depth of an atom. This is the number of storage items the atom is contained in before reaching toplevel (the area).
//Returns -1 if the atom was not found on container.
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
index 763717dc270..7a648aa74e4 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
@@ -69,6 +69,11 @@
/obj/structure/closet/secure_closet/closed_item_click(mob/user)
togglelock(user)
+/obj/structure/closet/secure_closet/AltClick(mob/user)
+ ..()
+ if(Adjacent(user))
+ togglelock(user)
+
/obj/structure/closet/secure_closet/emag_act(mob/user)
if(!broken)
broken = TRUE
diff --git a/code/game/objects/structures/crates_lockers/crittercrate.dm b/code/game/objects/structures/crates_lockers/crittercrate.dm
index fd726aab6a7..7629fc62918 100644
--- a/code/game/objects/structures/crates_lockers/crittercrate.dm
+++ b/code/game/objects/structures/crates_lockers/crittercrate.dm
@@ -82,9 +82,8 @@
content_mob = /mob/living/simple_animal/pet/dog/fox
/obj/structure/closet/critter/butterfly
- name = "butterflies crate"
+ name = "butterfly crate"
content_mob = /mob/living/simple_animal/butterfly
- amount = 50
/obj/structure/closet/critter/deer
name = "deer crate"
diff --git a/code/game/objects/structures/dresser.dm b/code/game/objects/structures/dresser.dm
index 4531613610e..0c0a7f5e4dd 100644
--- a/code/game/objects/structures/dresser.dm
+++ b/code/game/objects/structures/dresser.dm
@@ -56,27 +56,20 @@
/obj/structure/dresser/crowbar_act(mob/user, obj/item/I)
. = TRUE
- if(!I.tool_start_check(src, user, 0))
+ if(!I.use_tool(src, user, 0))
return
TOOL_ATTEMPT_DISMANTLE_MESSAGE
if(I.use_tool(src, user, 50, volume = I.tool_volume))
TOOL_DISMANTLE_SUCCESS_MESSAGE
-
+ deconstruct(disassembled = TRUE)
/obj/structure/dresser/wrench_act(mob/user, obj/item/I)
. = TRUE
- if(!I.use_tool(src, user, 0, volume = I.tool_volume))
- return
- if(anchored)
- WRENCH_UNANCHOR_MESSAGE
- anchored = FALSE
- else
- if(!isfloorturf(loc))
- user.visible_message("A floor must be present to secure [src]!")
- return
- WRENCH_ANCHOR_MESSAGE
- anchored = TRUE
+ default_unfasten_wrench(user, I, time = 20)
-/obj/structure/dresser/deconstruct(disassembled = TRUE)
- new /obj/item/stack/sheet/wood(drop_location(), 30)
- qdel(src)
+obj/structure/dresser/deconstruct(disassembled = FALSE)
+ var/mat_drop = 15
+ if(disassembled)
+ mat_drop = 30
+ new /obj/item/stack/sheet/wood(drop_location(), mat_drop)
+ ..()
diff --git a/code/game/objects/structures/loom.dm b/code/game/objects/structures/loom.dm
index d0bcd07f92f..4742a2c3c0c 100644
--- a/code/game/objects/structures/loom.dm
+++ b/code/game/objects/structures/loom.dm
@@ -11,12 +11,30 @@
anchored = TRUE
/obj/structure/loom/attackby(obj/item/I, mob/user)
- if(default_unfasten_wrench(user, I, 5))
- return
if(weave(I, user))
return
return ..()
+/obj/structure/loom/crowbar_act(mob/user, obj/item/I)
+ . = TRUE
+ if(!I.use_tool(src, user, 0))
+ return
+ TOOL_ATTEMPT_DISMANTLE_MESSAGE
+ if(I.use_tool(src, user, 50, volume = I.tool_volume))
+ TOOL_DISMANTLE_SUCCESS_MESSAGE
+ deconstruct(disassembled = TRUE)
+
+/obj/structure/loom/wrench_act(mob/user, obj/item/I)
+ . = TRUE
+ default_unfasten_wrench(user, I, time = 20)
+
+/obj/structure/loom/deconstruct(disassembled = FALSE)
+ var/mat_drop = 5
+ if(disassembled)
+ mat_drop = 10
+ new /obj/item/stack/sheet/wood(drop_location(), mat_drop)
+ ..()
+
///Handles the weaving.
/obj/structure/loom/proc/weave(obj/item/stack/sheet/cotton/W, mob/user)
if(!istype(W))
diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm
index ba5258004a0..5a8a122be21 100644
--- a/code/game/objects/structures/signs.dm
+++ b/code/game/objects/structures/signs.dm
@@ -292,12 +292,12 @@
/obj/structure/sign/directions/engineering
name = "\improper Engineering Department"
- desc = "A direction sign, pointing out which way the Engineering department is."
+ desc = "A direction sign, pointing out which way the Engineering Department is."
icon_state = "direction_eng"
/obj/structure/sign/directions/security
name = "\improper Security Department"
- desc = "A direction sign, pointing out which way the Security department is."
+ desc = "A direction sign, pointing out which way the Security Department is."
icon_state = "direction_sec"
/obj/structure/sign/directions/medical
@@ -307,12 +307,12 @@
/obj/structure/sign/directions/evac
name = "\improper Escape Arm"
- desc = "A direction sign, pointing out which way escape shuttle dock is."
+ desc = "A direction sign, pointing out which way Escape Shuttle Dock is."
icon_state = "direction_evac"
/obj/structure/sign/directions/cargo
name = "\improper Cargo Department"
- desc = "A direction sign, pointing out which way the Cargo department is."
+ desc = "A direction sign, pointing out which way the Cargo Department is."
icon_state = "direction_supply"
/obj/structure/sign/explosives
diff --git a/code/game/turfs/simulated/floor/chasm.dm b/code/game/turfs/simulated/floor/chasm.dm
index d8ed888bc27..26921ba9ffd 100644
--- a/code/game/turfs/simulated/floor/chasm.dm
+++ b/code/game/turfs/simulated/floor/chasm.dm
@@ -97,8 +97,8 @@
return FALSE
//Flies right over the chasm
if(isliving(AM))
- var/mob/M = AM
- if(M.flying)
+ var/mob/living/M = AM
+ if(M.flying || M.floating)
return FALSE
if(ishuman(AM))
var/mob/living/carbon/human/H = AM
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 7fc000aa06f..2f90e4d7cc4 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -165,7 +165,6 @@
var/mob/O = M
if(!O.lastarea)
O.lastarea = get_area(O.loc)
-// O.update_gravity(O.mob_has_gravity(src))
var/loopsanity = 100
for(var/atom/A in range(1))
@@ -264,6 +263,13 @@
if(SSair && !ignore_air)
SSair.add_to_active(src)
+ //update firedoor adjacency
+ var/list/turfs_to_check = get_adjacent_open_turfs(src) | src
+ for(var/I in turfs_to_check)
+ var/turf/T = I
+ for(var/obj/machinery/door/firedoor/FD in T)
+ FD.CalculateAffectingAreas()
+
if(!keep_cabling && !can_have_cabling())
for(var/obj/structure/cable/C in contents)
qdel(C)
diff --git a/code/game/world.dm b/code/game/world.dm
index fdb0b8f63be..c279fa24b54 100644
--- a/code/game/world.dm
+++ b/code/game/world.dm
@@ -266,6 +266,13 @@ GLOBAL_VAR_INIT(world_topic_spam_protect_time, world.timeofday)
update_status()
return "Set listed status to invisible."
+
+ else if("hostannounce" in input)
+ if(!key_valid)
+ return keySpamProtect(addr)
+
+ to_chat(world, " Server Announcement: [input["message"]] ")
+
/proc/keySpamProtect(var/addr)
if(GLOB.world_topic_spam_protect_ip == addr && abs(GLOB.world_topic_spam_protect_time - world.time) < 50)
spawn(50)
@@ -333,6 +340,8 @@ GLOBAL_VAR_INIT(world_topic_spam_protect_time, world.timeofday)
#endif
for(var/client/C in GLOB.clients)
+ var/secs_before_auto_reconnect = 10 // TODO: make it higher if server is due for an update @AffectedArc07
+ C << output(list2params(list(secs_before_auto_reconnect)), "browseroutput:reboot")
if(config.server) //if you set a server location in config.txt, it sends you there instead of trying to reconnect to the same world address. -- NeoFite
C << link("byond://[config.server]")
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index e340921bef6..2390394b280 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -3576,7 +3576,7 @@
return
var/datum/outfit/O = hunter_outfits[dresscode]
message_admins("[key_name_admin(mob)] is sending a ([dresscode]) to [killthem ? "assassinate" : "protect"] [key_name_admin(H)]...")
- var/mutable_appearance/source = new('icons/obj/cardboard_cutout.dmi', "cutout_traitor")
+ var/image/source = image('icons/obj/cardboard_cutout.dmi', "cutout_traitor")
var/list/candidates = SSghost_spawns.poll_candidates("Play as a [killthem ? "murderous" : "protective"] [dresscode]?", ROLE_TRAITOR, TRUE, source = source)
if(!candidates.len)
to_chat(usr, "ERROR: Could not create eventmob. No valid candidates.")
diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm
index b3ea2924709..40af6eefe49 100644
--- a/code/modules/admin/verbs/striketeam.dm
+++ b/code/modules/admin/verbs/striketeam.dm
@@ -37,7 +37,7 @@ GLOBAL_VAR_INIT(sent_strike_team, 0)
break
// Find ghosts willing to be DS
- var/mutable_appearance/source = new('icons/obj/cardboard_cutout.dmi', "cutout_deathsquad")
+ var/image/source = image('icons/obj/cardboard_cutout.dmi', "cutout_deathsquad")
var/list/commando_ghosts = pollCandidatesWithVeto(src, usr, COMMANDOS_POSSIBLE, "Join the DeathSquad?",, 21, 60 SECONDS, TRUE, GLOB.role_playtime_requirements[ROLE_DEATHSQUAD], TRUE, FALSE, source = source)
if(!commando_ghosts.len)
to_chat(usr, "Nobody volunteered to join the DeathSquad.")
diff --git a/code/modules/alarm/alarm.dm b/code/modules/alarm/alarm.dm
deleted file mode 100644
index 752d3232d23..00000000000
--- a/code/modules/alarm/alarm.dm
+++ /dev/null
@@ -1,136 +0,0 @@
-#define ALARM_RESET_DELAY 100 // How long will the alarm/trigger remain active once origin/source has been found to be gone?
-
-/datum/alarm_source
- var/source = null // The source trigger
- var/source_name = "" // The name of the source should it be lost (for example a destroyed camera)
- var/duration = 0 // How long this source will be alarming, 0 for indefinetely.
- var/severity = 1 // How severe the alarm from this source is.
- var/start_time = 0 // When this source began alarming.
- var/end_time = 0 // Use to set when this trigger should clear, in case the source is lost.
-
-/datum/alarm_source/New(var/atom/source)
- src.source = source
- start_time = world.time
- source_name = source.get_source_name()
-
-/datum/alarm
- var/atom/origin //Used to identify the alarm area.
- var/list/sources = new() //List of sources triggering the alarm. Used to determine when the alarm should be cleared.
- var/list/sources_assoc = new() //Associative list of source triggers. Used to efficiently acquire the alarm source.
- var/list/cameras //List of cameras that can be switched to, if the player has that capability.
- var/area/last_area //The last acquired area, used should origin be lost (for example a destroyed borg containing an alarming camera).
- var/area/last_name //The last acquired name, used should origin be lost
- var/area/last_camera_area //The last area in which cameras where fetched, used to see if the camera list should be updated.
- var/end_time //Used to set when this alarm should clear, in case the origin is lost.
-
-/datum/alarm/New(var/atom/origin, var/atom/source, var/duration, var/severity)
- src.origin = origin
-
- cameras() // Sets up both cameras and last alarm area.
- set_source_data(source, duration, severity)
-
-/datum/alarm/process()
- // Has origin gone missing?
- if(!origin && !end_time)
- end_time = world.time + ALARM_RESET_DELAY
- for(var/datum/alarm_source/AS in sources)
- // Has the alarm passed its best before date?
- if((AS.end_time && world.time > AS.end_time) || (AS.duration && world.time > (AS.start_time + AS.duration)))
- sources -= AS
- // Has the source gone missing? Then reset the normal duration and set end_time
- if(!AS.source && !AS.end_time) // end_time is used instead of duration to ensure the reset doesn't remain in the future indefinetely.
- AS.duration = 0
- AS.end_time = world.time + ALARM_RESET_DELAY
-
-/datum/alarm/proc/set_source_data(var/atom/source, var/duration, var/severity)
- var/datum/alarm_source/AS = sources_assoc[source]
- if(!AS)
- AS = new/datum/alarm_source(source)
- sources += AS
- sources_assoc[source] = AS
- // Currently only non-0 durations can be altered (normal alarms VS EMP blasts)
- if(AS.duration)
- duration = duration SECONDS
- AS.duration = duration
- AS.severity = severity
-
-/datum/alarm/proc/clear(var/source)
- var/datum/alarm_source/AS = sources_assoc[source]
- sources -= AS
- sources_assoc -= source
-
-/datum/alarm/proc/alarm_area()
- if(!origin)
- return last_area
-
- last_area = origin.get_alarm_area()
- return last_area
-
-/datum/alarm/proc/alarm_name()
- if(!origin)
- return last_name
-
- last_name = origin.get_alarm_name()
- return last_name
-
-/datum/alarm/proc/cameras()
- // If the alarm origin has changed area, for example a borg containing an alarming camera, reset the list of cameras
- if(cameras && (last_camera_area != alarm_area()))
- cameras = null
-
- // The list of cameras is also reset by /proc/invalidateCameraCache()
- if(!cameras)
- cameras = origin ? origin.get_alarm_cameras() : last_area.get_alarm_cameras()
-
- last_camera_area = last_area
- return cameras
-
-/datum/alarm/proc/max_severity()
- var/max_severity = 0
- for(var/datum/alarm_source/AS in sources)
- max_severity = max(AS.severity, max_severity)
-
- return max_severity
-
-/******************
-* Assisting procs *
-******************/
-/atom/proc/get_alarm_area()
- var/area/A = get_area(src)
- return A
-
-/area/get_alarm_area()
- return src
-
-/atom/proc/get_alarm_name()
- var/area/A = get_area(src)
- return A.name
-
-/area/get_alarm_name()
- return name
-
-/mob/get_alarm_name()
- return name
-
-/atom/proc/get_source_name()
- return name
-
-/obj/machinery/camera/get_source_name()
- return c_tag
-
-/atom/proc/get_alarm_cameras()
- var/area/A = get_area(src)
- return A.get_cameras()
-
-/area/get_alarm_cameras()
- return get_cameras()
-
-/mob/living/silicon/robot/get_alarm_cameras()
- var/list/cameras = ..()
- if(camera)
- cameras += camera
-
- return cameras
-
-/mob/living/silicon/robot/syndicate/get_alarm_cameras()
- return list()
diff --git a/code/modules/alarm/alarm_handler.dm b/code/modules/alarm/alarm_handler.dm
deleted file mode 100644
index 56a673bb5b4..00000000000
--- a/code/modules/alarm/alarm_handler.dm
+++ /dev/null
@@ -1,103 +0,0 @@
-#define ALARM_RAISED 1
-#define ALARM_CLEARED 0
-
-/datum/alarm_handler
- var/category = ""
- var/list/datum/alarm/alarms = new // All alarms, to handle cases when an origin has been deleted with one or more active alarms
- var/list/datum/alarm/alarms_assoc = new // Associative list of alarms, to efficiently acquire them based on origin.
- var/list/listeners = new // A list of all objects interested in alarm changes.
-
-/datum/alarm_handler/process()
- for(var/datum/alarm/A in alarms)
- A.process()
- check_alarm_cleared(A)
-
-/datum/alarm_handler/proc/triggerAlarm(var/atom/origin, var/atom/source, var/duration = 0, var/severity = 1)
- var/new_alarm
- //Proper origin and source mandatory
- if(!(origin && source))
- return
- origin = origin.get_alarm_origin()
-
- new_alarm = 0
- //see if there is already an alarm of this origin
- var/datum/alarm/existing = alarms_assoc[origin]
- if(existing)
- existing.set_source_data(source, duration, severity)
- else
- existing = new/datum/alarm(origin, source, duration, severity)
- new_alarm = 1
-
- alarms |= existing
- alarms_assoc[origin] = existing
- if(new_alarm)
- alarms = dd_sortedObjectList(alarms)
- on_alarm_change(existing, ALARM_RAISED)
-
- return new_alarm
-
-/datum/alarm_handler/proc/clearAlarm(var/atom/origin, var/source)
- //Proper origin and source mandatory
- if(!(origin && source))
- return
- origin = origin.get_alarm_origin()
-
- var/datum/alarm/existing = alarms_assoc[origin]
- if(existing)
- existing.clear(source)
- return check_alarm_cleared(existing)
-
-/datum/alarm_handler/proc/has_major_alarms()
- if(alarms && alarms.len)
- return 1
- return 0
-
-/datum/alarm_handler/proc/major_alarms()
- return alarms
-
-/datum/alarm_handler/proc/minor_alarms()
- return alarms
-
-/datum/alarm_handler/proc/check_alarm_cleared(var/datum/alarm/alarm)
- if((alarm.end_time && world.time > alarm.end_time) || !alarm.sources.len)
- alarms -= alarm
- alarms_assoc -= alarm.origin
- on_alarm_change(alarm, ALARM_CLEARED)
- return 1
- return 0
-
-/datum/alarm_handler/proc/on_alarm_change(var/datum/alarm/alarm, var/was_raised)
- for(var/obj/machinery/camera/C in alarm.cameras())
- if(was_raised)
- C.network.Add(category)
- else
- C.network.Remove(category)
- notify_listeners(alarm, was_raised)
-
-/datum/alarm_handler/proc/get_alarm_severity_for_origin(var/atom/origin)
- if(!origin)
- return
-
- origin = origin.get_alarm_origin()
- var/datum/alarm/existing = alarms_assoc[origin]
- if(!existing)
- return
-
- return existing.max_severity()
-
-/atom/proc/get_alarm_origin()
- return src
-
-/turf/get_alarm_origin()
- var/area/area = get_area(src)
- return area // Very important to get area.master, as dynamic lightning can and will split areas.
-
-/datum/alarm_handler/proc/register(var/object, var/procName)
- listeners[object] = procName
-
-/datum/alarm_handler/proc/unregister(var/object)
- listeners -= object
-
-/datum/alarm_handler/proc/notify_listeners(var/alarm, var/was_raised)
- for(var/listener in listeners)
- call(listener, listeners[listener])(src, alarm, was_raised)
diff --git a/code/modules/alarm/atmosphere_alarm.dm b/code/modules/alarm/atmosphere_alarm.dm
deleted file mode 100644
index cc29b40ac44..00000000000
--- a/code/modules/alarm/atmosphere_alarm.dm
+++ /dev/null
@@ -1,19 +0,0 @@
-/datum/alarm_handler/atmosphere
- category = "Atmosphere Alarms"
-
-/datum/alarm_handler/atmosphere/triggerAlarm(var/atom/origin, var/atom/source, var/duration = 0, var/severity = 1)
- ..()
-
-/datum/alarm_handler/atmosphere/major_alarms()
- var/list/major_alarms = new()
- for(var/datum/alarm/A in alarms)
- if(A.max_severity() > 1)
- major_alarms.Add(A)
- return major_alarms
-
-/datum/alarm_handler/atmosphere/minor_alarms()
- var/list/minor_alarms = new()
- for(var/datum/alarm/A in alarms)
- if(A.max_severity() == 1)
- minor_alarms.Add(A)
- return minor_alarms
diff --git a/code/modules/alarm/burglar_alarm.dm b/code/modules/alarm/burglar_alarm.dm
deleted file mode 100644
index c55cb12deef..00000000000
--- a/code/modules/alarm/burglar_alarm.dm
+++ /dev/null
@@ -1,2 +0,0 @@
-/datum/alarm_handler/burglar
- category = "Burglar Alarms"
diff --git a/code/modules/alarm/camera_alarm.dm b/code/modules/alarm/camera_alarm.dm
deleted file mode 100644
index bef53ad466f..00000000000
--- a/code/modules/alarm/camera_alarm.dm
+++ /dev/null
@@ -1,2 +0,0 @@
-/datum/alarm_handler/camera
- category = "Camera Alarms"
diff --git a/code/modules/alarm/fire_alarm.dm b/code/modules/alarm/fire_alarm.dm
deleted file mode 100644
index dfae3cc8177..00000000000
--- a/code/modules/alarm/fire_alarm.dm
+++ /dev/null
@@ -1,11 +0,0 @@
-/datum/alarm_handler/fire
- category = "Fire Alarms"
-
-/datum/alarm_handler/fire/on_alarm_change(var/datum/alarm/alarm, var/was_raised)
- var/area/A = alarm.origin
- if(istype(A))
- if(was_raised)
- A.fire_alert()
- else
- A.fire_reset()
- ..()
diff --git a/code/modules/alarm/motion_alarm.dm b/code/modules/alarm/motion_alarm.dm
deleted file mode 100644
index fd7e6febe48..00000000000
--- a/code/modules/alarm/motion_alarm.dm
+++ /dev/null
@@ -1,2 +0,0 @@
-/datum/alarm_handler/motion
- category = "Motion Alarms"
diff --git a/code/modules/alarm/power_alarm.dm b/code/modules/alarm/power_alarm.dm
deleted file mode 100644
index 4a0947a8f94..00000000000
--- a/code/modules/alarm/power_alarm.dm
+++ /dev/null
@@ -1,10 +0,0 @@
-/datum/alarm_handler/power
- category = "Power Alarms"
-
-/datum/alarm_handler/power/on_alarm_change(var/datum/alarm/alarm, var/was_raised)
- var/area/A = alarm.origin
- if(istype(A))
- A.power_alert(was_raised)
- ..()
-
-/area/proc/power_alert(var/alarming)
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index bfa43b92fa3..b1efd1f0b78 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -32,6 +32,7 @@
var/cooldown = 0
var/species_disguise = null
var/magical = FALSE
+ w_class = WEIGHT_CLASS_SMALL
/obj/item/clothing/proc/weldingvisortoggle(mob/user) //proc to toggle welding visors on helmets, masks, goggles, etc.
if(!can_use(user))
@@ -590,6 +591,7 @@ BLIND // can't see anything
name = "Space helmet"
icon_state = "space"
desc = "A special helmet designed for work in a hazardous, low-pressure environment."
+ w_class = WEIGHT_CLASS_NORMAL
flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
item_state = "s_helmet"
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index 2a9abf461c9..05bd3d6f48d 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -2,6 +2,7 @@
name = "helmet"
desc = "Standard Security gear. Protects the head from impacts."
icon_state = "helmetmaterials"
+ w_class = WEIGHT_CLASS_NORMAL
flags = HEADBANGPROTECT
flags_cover = HEADCOVERSEYES
item_state = "helmetmaterials"
diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm
index 962cfed80c5..1f8cb7aaed1 100644
--- a/code/modules/clothing/shoes/miscellaneous.dm
+++ b/code/modules/clothing/shoes/miscellaneous.dm
@@ -6,6 +6,7 @@
/obj/item/clothing/shoes/combat //basic syndicate combat boots for nuke ops and mob corpses
name = "combat boots"
desc = "High speed, low drag combat boots."
+ w_class = WEIGHT_CLASS_NORMAL
can_cut_open = 1
icon_state = "jackboots"
item_state = "jackboots"
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index 6c4ace8c993..bdcd27c24e3 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -11,8 +11,10 @@
resistance_flags = NONE
armor = list("melee" = 30, "bullet" = 30, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
sprite_sheets = list(
- "Vox" = 'icons/mob/species/vox/suit.dmi'
+ "Vox" = 'icons/mob/species/vox/suit.dmi',
+ "Grey" = 'icons/mob/species/grey/suit.dmi'
)
+ w_class = WEIGHT_CLASS_NORMAL
/obj/item/clothing/suit/armor/vest
name = "armor"
diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm
index a7bd3fb2627..6ffa40fe727 100644
--- a/code/modules/clothing/suits/jobs.dm
+++ b/code/modules/clothing/suits/jobs.dm
@@ -162,7 +162,7 @@
desc = "A slick, authoritative cloak designed for the Chief Engineer."
icon_state = "cemantle"
item_state = "cemantle"
- allowed = list(/obj/item/flashlight, /obj/item/tank, /obj/item/t_scanner, /obj/item/rcd)
+ allowed = list(/obj/item/flashlight, /obj/item/tank, /obj/item/t_scanner, /obj/item/rcd, /obj/item/rpd)
//Chief Medical Officer
/obj/item/clothing/suit/mantle/labcoat/chief_medical_officer
@@ -231,7 +231,7 @@
icon_state = "hazard"
item_state = "hazard"
blood_overlay_type = "armor"
- allowed = list (/obj/item/flashlight, /obj/item/t_scanner, /obj/item/tank/emergency_oxygen)
+ allowed = list (/obj/item/flashlight, /obj/item/t_scanner, /obj/item/tank/emergency_oxygen, /obj/item/rcd, /obj/item/rpd)
resistance_flags = NONE
sprite_sheets = list(
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index 7e9e698d185..63f5cf8dca3 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -12,6 +12,7 @@
/obj/item/clothing/suit/bluetag
name = "blue laser tag armour"
desc = "Blue Pride, Station Wide."
+ w_class = WEIGHT_CLASS_NORMAL
icon_state = "bluetag"
item_state = "bluetag"
blood_overlay_type = "armor"
@@ -26,6 +27,7 @@
/obj/item/clothing/suit/redtag
name = "red laser tag armour"
desc = "Pew pew pew."
+ w_class = WEIGHT_CLASS_NORMAL
icon_state = "redtag"
item_state = "redtag"
blood_overlay_type = "armor"
@@ -71,6 +73,7 @@
/obj/item/clothing/suit/cyborg_suit
name = "cyborg suit"
desc = "Suit for a cyborg costume."
+ w_class = WEIGHT_CLASS_NORMAL
icon_state = "death"
item_state = "death"
flags = CONDUCT
@@ -371,6 +374,7 @@
/obj/item/clothing/suit/hooded/wintercoat/captain
name = "captain's winter coat"
icon_state = "wintercoat_captain"
+ w_class = WEIGHT_CLASS_NORMAL
item_state = "coatcaptain"
armor = list("melee" = 25, "bullet" = 30, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50)
allowed = list(/obj/item/gun/energy, /obj/item/reagent_containers/spray/pepper, /obj/item/gun/projectile, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/flashlight/seclite, /obj/item/melee/classic_baton/telescopic)
@@ -382,6 +386,7 @@
/obj/item/clothing/suit/hooded/wintercoat/security
name = "security winter coat"
icon_state = "wintercoat_sec"
+ w_class = WEIGHT_CLASS_NORMAL
item_state = "coatsecurity"
armor = list("melee" = 15, "bullet" = 10, "laser" = 15, "energy" = 5, "bomb" = 15, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 30)
allowed = list(/obj/item/gun/energy, /obj/item/reagent_containers/spray/pepper, /obj/item/gun/projectile, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/flashlight/seclite, /obj/item/melee/classic_baton/telescopic)
@@ -393,6 +398,7 @@
/obj/item/clothing/suit/hooded/wintercoat/medical
name = "medical winter coat"
icon_state = "wintercoat_med"
+ w_class = WEIGHT_CLASS_NORMAL
item_state = "coatmedical"
allowed = list(/obj/item/analyzer, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/reagent_containers/applicator,/obj/item/healthanalyzer,/obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic)
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 50, "rad" = 0, "fire" = 0, "acid" = 45)
@@ -404,6 +410,7 @@
/obj/item/clothing/suit/hooded/wintercoat/science
name = "science winter coat"
icon_state = "wintercoat_sci"
+ w_class = WEIGHT_CLASS_NORMAL
item_state = "coatscience"
allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/reagent_containers/applicator,/obj/item/healthanalyzer,/obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic)
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 10, bio = 0, rad = 0, fire = 0, acid = 0)
@@ -415,6 +422,7 @@
/obj/item/clothing/suit/hooded/wintercoat/engineering
name = "engineering winter coat"
icon_state = "wintercoat_engi"
+ w_class = WEIGHT_CLASS_NORMAL
item_state = "coatengineer"
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 20, "fire" = 30, "acid" = 45)
allowed = list(/obj/item/flashlight, /obj/item/tank/emergency_oxygen, /obj/item/t_scanner, /obj/item/rcd)
@@ -454,6 +462,7 @@
/obj/item/clothing/suit/hooded/wintercoat/miner
name = "mining winter coat"
icon_state = "wintercoat_miner"
+ w_class = WEIGHT_CLASS_NORMAL
item_state = "coatminer"
allowed = list(/obj/item/pickaxe, /obj/item/flashlight, /obj/item/tank/emergency_oxygen, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter)
armor = list("melee" = 10, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
@@ -767,6 +776,7 @@
/obj/item/clothing/suit/jacket/pilot
name = "security bomber jacket"
desc = "A stylish and worn-in armoured black bomber jacket emblazoned with the NT Security crest on the left breast. Looks rugged."
+ w_class = WEIGHT_CLASS_NORMAL
icon_state = "bombersec"
item_state = "bombersec"
ignore_suitadjust = 0
@@ -825,6 +835,7 @@
/obj/item/clothing/suit/toggle/owlwings
name = "owl cloak"
desc = "A soft brown cloak made of synthetic feathers. Soft to the touch, stylish, and a 2 meter wing span that will drive the ladies mad."
+ w_class = WEIGHT_CLASS_NORMAL
icon_state = "owl_wings"
item_state = "owl_wings"
body_parts_covered = ARMS
@@ -871,6 +882,7 @@
/obj/item/clothing/suit/advanced_protective_suit
name = "Advanced Protective Suit"
desc = "An incredibly advanced and complex suit; it has so many buttons and dials as to be incomprehensible."
+ w_class = WEIGHT_CLASS_BULKY
icon_state = "bomb"
item_state = "bomb"
actions_types = list(/datum/action/item_action/toggle)
@@ -924,6 +936,7 @@
//Syndicate Chaplain Robe (WOLOLO!)
/obj/item/clothing/suit/hooded/chaplain_hoodie/missionary_robe
description_antag = "This robe is made of reinforced fibers, granting it superior protection. The robes also wirelessly generate power for the neurotransmitter in the linked missionary staff while being worn."
+ w_class = WEIGHT_CLASS_NORMAL
armor = list(melee = 10, bullet = 10, laser = 5, energy = 5, bomb = 0, bio = 0, rad = 15, fire = 30, acid = 30)
var/obj/item/nullrod/missionary_staff/linked_staff = null
diff --git a/code/modules/clothing/suits/storage.dm b/code/modules/clothing/suits/storage.dm
index 9a675742b5e..1da4138fe77 100644
--- a/code/modules/clothing/suits/storage.dm
+++ b/code/modules/clothing/suits/storage.dm
@@ -1,5 +1,6 @@
/obj/item/clothing/suit/storage
var/obj/item/storage/internal/pockets
+ w_class = WEIGHT_CLASS_NORMAL //we don't want these to be able to fit in their own pockets.
/obj/item/clothing/suit/storage/New()
..()
diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm
index 308380e4c55..e77bcb7478a 100644
--- a/code/modules/clothing/suits/utility.dm
+++ b/code/modules/clothing/suits/utility.dm
@@ -64,6 +64,7 @@
/obj/item/clothing/head/bomb_hood
name = "bomb hood"
desc = "Use in case of bomb."
+ w_class = WEIGHT_CLASS_NORMAL
icon_state = "bombsuit"
flags = BLOCKHAIR | THICKMATERIAL
armor = list("melee" = 20, "bullet" = 0, "laser" = 20,"energy" = 10, "bomb" = 100, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 50)
diff --git a/code/modules/crafting/craft.dm b/code/modules/crafting/craft.dm
index a0d6823fe80..aae3b84a3c5 100644
--- a/code/modules/crafting/craft.dm
+++ b/code/modules/crafting/craft.dm
@@ -357,7 +357,7 @@
if(!fail_msg)
to_chat(usr, "[TR.name] constructed.")
if(TR.alert_admins_on_craft)
- message_admins("[usr.ckey] has created a [TR.name] at [ADMIN_COORDJMP(usr)]")
+ message_admins("[key_name_admin(usr)] has created a [TR.name] at [ADMIN_COORDJMP(usr)]")
else
to_chat(usr, "Construction failed[fail_msg]")
busy = FALSE
diff --git a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm
index 5f13f5c7a06..8313b967722 100644
--- a/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm
+++ b/code/modules/food_and_drinks/drinks/drinks/drinkingglass.dm
@@ -13,6 +13,10 @@
max_integrity = 20
resistance_flags = ACID_PROOF
+/obj/item/reagent_containers/food/drinks/set_APTFT()
+ set hidden = FALSE
+ ..()
+
/obj/item/reagent_containers/food/drinks/drinkingglass/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/reagent_containers/food/snacks/egg)) //breaking eggs
var/obj/item/reagent_containers/food/snacks/egg/E = I
diff --git a/code/modules/food_and_drinks/drinks/drinks/shotglass.dm b/code/modules/food_and_drinks/drinks/drinks/shotglass.dm
index d5d114fb43f..7b3349e4c2d 100644
--- a/code/modules/food_and_drinks/drinks/drinks/shotglass.dm
+++ b/code/modules/food_and_drinks/drinks/drinks/shotglass.dm
@@ -7,6 +7,7 @@
materials = list(MAT_GLASS=100)
var/light_intensity = 2
light_color = LIGHT_COLOR_LIGHTBLUE
+ resistance_flags = FLAMMABLE
/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass/on_reagent_change()
if(!isShotFlammable() && (resistance_flags & ON_FIRE))
@@ -30,6 +31,7 @@
overlays += filling
name = "shot glass of " + reagents.get_master_reagent_name() //No matter what, the glass will tell you the reagent's name. Might be too abusable in the future.
if(resistance_flags & ON_FIRE)
+ cut_overlay(GLOB.fire_overlay, TRUE)
overlays += "shotglass_fire"
name = "flaming [name]"
else
diff --git a/code/modules/food_and_drinks/food.dm b/code/modules/food_and_drinks/food.dm
index 2180f9a0f63..15e28cc6c62 100644
--- a/code/modules/food_and_drinks/food.dm
+++ b/code/modules/food_and_drinks/food.dm
@@ -35,6 +35,7 @@
/obj/item/reagent_containers/food/set_APTFT()
set hidden = TRUE
+ ..()
/obj/item/reagent_containers/food/proc/check_for_ants()
if(!antable)
diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm
index bdeadf2a72c..733ac4692a3 100644
--- a/code/modules/food_and_drinks/food/condiment.dm
+++ b/code/modules/food_and_drinks/food/condiment.dm
@@ -29,6 +29,10 @@
/obj/item/reagent_containers/food/condiment/attack_self(mob/user)
return
+/obj/item/reagent_containers/food/condiment/set_APTFT()
+ set hidden = FALSE
+ ..()
+
/obj/item/reagent_containers/food/condiment/attack(mob/M, mob/user, def_zone)
if(!reagents || !reagents.total_volume)
diff --git a/code/modules/food_and_drinks/food/foods/meat.dm b/code/modules/food_and_drinks/food/foods/meat.dm
index 382e2f39022..a9f0ab3d684 100644
--- a/code/modules/food_and_drinks/food/foods/meat.dm
+++ b/code/modules/food_and_drinks/food/foods/meat.dm
@@ -30,7 +30,7 @@
name = "-meat"
var/subjectname = ""
var/subjectjob = null
- tastes = list("tender meat" = 1)
+ tastes = list("salty meat" = 1)
/obj/item/reagent_containers/food/snacks/meat/slab/meatproduct
name = "meat product"
diff --git a/code/modules/hydroponics/beekeeping/beebox.dm b/code/modules/hydroponics/beekeeping/beebox.dm
index 612146e579a..5a73313601a 100644
--- a/code/modules/hydroponics/beekeeping/beebox.dm
+++ b/code/modules/hydroponics/beekeeping/beebox.dm
@@ -198,10 +198,17 @@
return
return ..()
+/obj/structure/beebox/crowbar_act(mob/user, obj/item/I)
+ . = TRUE
+ if(!I.use_tool(src, user, 0))
+ return
+ TOOL_ATTEMPT_DISMANTLE_MESSAGE
+ if(I.use_tool(src, user, 50, volume = I.tool_volume))
+ TOOL_DISMANTLE_SUCCESS_MESSAGE
+ deconstruct(disassembled = TRUE)
+
/obj/structure/beebox/wrench_act(mob/user, obj/item/I)
. = TRUE
- if(!I.tool_use_check(user, 0))
- return
default_unfasten_wrench(user, I, time = 20)
/obj/structure/beebox/attack_hand(mob/user)
@@ -261,15 +268,18 @@
visible_message("[user] removes the queen from the apiary.")
queen_bee = null
-/obj/structure/beebox/deconstruct(disassembled = TRUE)
- new /obj/item/stack/sheet/wood(loc, 20)
+/obj/structure/beebox/deconstruct(disassembled = FALSE)
+ var/mat_drop = 20
+ if(disassembled)
+ mat_drop = 40
+ new /obj/item/stack/sheet/wood(loc, mat_drop)
for(var/mob/living/simple_animal/hostile/poison/bees/B in bees)
if(B.loc == src)
B.forceMove(drop_location())
for(var/obj/item/honey_frame/HF in honey_frames)
HF.forceMove(drop_location())
honey_frames -= HF
- qdel(src)
+ ..()
/obj/structure/beebox/unwrenched
anchored = FALSE
diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm
index f194c48e019..5031ac71373 100644
--- a/code/modules/hydroponics/fermenting_barrel.dm
+++ b/code/modules/hydroponics/fermenting_barrel.dm
@@ -4,7 +4,7 @@
icon = 'icons/obj/objects.dmi'
icon_state = "barrel"
density = TRUE
- anchored = FALSE
+ anchored = TRUE
container_type = DRAINABLE | AMOUNT_VISIBLE
pressure_resistance = 2 * ONE_ATMOSPHERE
max_integrity = 300
@@ -65,6 +65,26 @@
to_chat(user, "You close [src], letting you draw from its tap.")
update_icon()
+/obj/structure/fermenting_barrel/crowbar_act(mob/living/user, obj/item/I)
+ . = TRUE
+ if(!I.use_tool(src, user, 0))
+ return
+ TOOL_ATTEMPT_DISMANTLE_MESSAGE
+ if(I.use_tool(src, user, 50, volume = I.tool_volume))
+ TOOL_DISMANTLE_SUCCESS_MESSAGE
+ deconstruct(disassembled = TRUE)
+
+/obj/structure/fermenting_barrel/wrench_act(mob/living/user, obj/item/I)
+ . = TRUE
+ default_unfasten_wrench(user, I, time = 20)
+
+/obj/structure/fermenting_barrel/deconstruct(disassembled = FALSE)
+ var/mat_drop = 15
+ if(disassembled)
+ mat_drop = 30
+ new /obj/item/stack/sheet/wood(drop_location(), mat_drop)
+ ..()
+
/obj/structure/fermenting_barrel/update_icon()
if(open)
icon_state = "barrel_open"
diff --git a/code/modules/hydroponics/grown/replicapod.dm b/code/modules/hydroponics/grown/replicapod.dm
index d6f8cae7519..0f2b54ab971 100644
--- a/code/modules/hydroponics/grown/replicapod.dm
+++ b/code/modules/hydroponics/grown/replicapod.dm
@@ -29,7 +29,8 @@
if(istype(W,/obj/item/reagent_containers/syringe))
if(!contains_sample)
for(var/datum/reagent/blood/bloodSample in W.reagents.reagent_list)
- if(bloodSample.data["mind"] && bloodSample.data["cloneable"] == 1)
+ var/datum/dna/dna = bloodSample.data["dna"]
+ if(bloodSample.data["mind"] && bloodSample.data["cloneable"] && !(NO_SCAN in dna.species.species_traits))
var/datum/mind/tempmind = bloodSample.data["mind"]
if(tempmind.is_revivable())
mind = bloodSample.data["mind"]
diff --git a/code/modules/mining/lavaland/loot/colossus_loot.dm b/code/modules/mining/lavaland/loot/colossus_loot.dm
index 0bde4d95464..e99e7132f03 100644
--- a/code/modules/mining/lavaland/loot/colossus_loot.dm
+++ b/code/modules/mining/lavaland/loot/colossus_loot.dm
@@ -349,7 +349,7 @@
harm_intent_damage = 1
friendly = "mends"
density = 0
- flying = 1
+ flying = TRUE
obj_damage = 0
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
ventcrawler = 2
diff --git a/code/modules/mob/dead/observer/say.dm b/code/modules/mob/dead/observer/say.dm
index 2f5627e8413..4d003753876 100644
--- a/code/modules/mob/dead/observer/say.dm
+++ b/code/modules/mob/dead/observer/say.dm
@@ -1,20 +1,10 @@
-/mob/dead/observer/say(var/message)
+/mob/dead/observer/say(message)
message = sanitize(copytext(message, 1, MAX_MESSAGE_LEN))
if(!message)
return
- log_ghostsay(message, src)
-
- if(src.client)
- if(src.client.prefs.muted & MUTE_DEADCHAT)
- to_chat(src, "You cannot talk in deadchat (muted).")
- return
-
- if(src.client.handle_spam_prevention(message,MUTE_DEADCHAT))
- return
-
- . = src.say_dead(message)
+ return say_dead(message)
/mob/dead/observer/emote(act, type, message, force)
diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm
index 410c485f15e..2514ce68b06 100644
--- a/code/modules/mob/hear_say.dm
+++ b/code/modules/mob/hear_say.dm
@@ -171,7 +171,14 @@
to_chat(src, heard)
-/mob/proc/hear_holopad_talk(list/message_pieces, var/verb = "says", var/mob/speaker = null)
+/mob/proc/hear_holopad_talk(list/message_pieces, verb = "says", mob/speaker = null)
+ if(sleeping || stat == UNCONSCIOUS)
+ hear_sleep(multilingual_to_message(message_pieces))
+ return
+
+ if(!can_hear())
+ return
+
var/message = combine_message(message_pieces, verb, speaker)
var/name = speaker.name
diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm
index a46268daf50..50d9b6d5fd5 100644
--- a/code/modules/mob/language.dm
+++ b/code/modules/mob/language.dm
@@ -186,7 +186,7 @@
if(prob(80))
new_name += " [pick(list("Hadii","Kaytam","Zhan-Khazan","Hharar","Njarir'Akhan"))]"
else
- new_name += ..(gender,1)
+ new_name += " [..(gender,1)]"
return new_name
/datum/language/vulpkanin
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 98585262518..b6e93dc78ff 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -538,6 +538,8 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
take_organ_damage(10)
if(iscarbon(hit_atom) && hit_atom != src)
var/mob/living/carbon/victim = hit_atom
+ if(victim.flying)
+ return
if(hurt)
victim.take_organ_damage(10)
take_organ_damage(10)
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 6141ad02f9f..c7798a51a08 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -572,41 +572,34 @@ emp_act
if(M.a_intent == INTENT_HARM)
if(w_uniform)
w_uniform.add_fingerprint(M)
- var/damage = rand(15, 30)
+ var/damage = prob(90) ? 20 : 0
if(!damage)
- playsound(loc, 'sound/weapons/slashmiss.ogg', 50, 1, -1)
+ playsound(loc, 'sound/weapons/slashmiss.ogg', 50, TRUE, -1)
visible_message("[M] has lunged at [src]!")
return 0
var/obj/item/organ/external/affecting = get_organ(ran_zone(M.zone_selected))
- var/armor_block = run_armor_check(affecting, "melee")
+ var/armor_block = run_armor_check(affecting, "melee", armour_penetration = 10)
- playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1)
+ playsound(loc, 'sound/weapons/slice.ogg', 25, TRUE, -1)
visible_message("[M] has slashed at [src]!", \
"[M] has slashed at [src]!")
apply_damage(damage, BRUTE, affecting, armor_block)
- if(damage >= 25)
- visible_message("[M] has wounded [src]!", \
- "[M] has wounded [src]!")
- apply_effect(4, WEAKEN, armor_block)
- add_attack_logs(M, src, "Alien attacked")
+ add_attack_logs(M, src, "Alien attacked")
updatehealth("alien attack")
- if(M.a_intent == INTENT_DISARM)
- if(prob(80))
+ if(M.a_intent == INTENT_DISARM) //Always drop item in hand, if no item, get stun instead.
+ var/obj/item/I = get_active_hand()
+ if(I && unEquip(I))
+ playsound(loc, 'sound/weapons/slash.ogg', 25, TRUE, -1)
+ visible_message("[M] disarms [src]!", "[M] disarms you!", "You hear aggressive shuffling!")
+ to_chat(M, "You disarm [src]!")
+ else
var/obj/item/organ/external/affecting = get_organ(ran_zone(M.zone_selected))
playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1)
apply_effect(5, WEAKEN, run_armor_check(affecting, "melee"))
add_attack_logs(M, src, "Alien tackled")
visible_message("[M] has tackled down [src]!")
- else
- if(prob(99)) //this looks fucking stupid but it was previously 'var/randn = rand(1, 100); if(randn <= 99)'
- playsound(loc, 'sound/weapons/slash.ogg', 25, 1, -1)
- drop_item()
- visible_message("[M] disarmed [src]!")
- else
- playsound(loc, 'sound/weapons/slashmiss.ogg', 50, 1, -1)
- visible_message("[M] has tried to disarm [src]!")
/mob/living/carbon/human/attack_animal(mob/living/simple_animal/M)
. = ..()
diff --git a/code/modules/mob/living/carbon/human/species/diona.dm b/code/modules/mob/living/carbon/human/species/diona.dm
index a8639a1a948..2ce011c7159 100644
--- a/code/modules/mob/living/carbon/human/species/diona.dm
+++ b/code/modules/mob/living/carbon/human/species/diona.dm
@@ -74,6 +74,10 @@
..()
H.gender = NEUTER
+/datum/species/diona/on_species_loss(mob/living/carbon/human/H)
+ . = ..()
+ H.clear_alert("nolight")
+
/datum/species/diona/handle_reagents(mob/living/carbon/human/H, datum/reagent/R)
if(R.id == "glyphosate" || R.id == "atrazine")
H.adjustToxLoss(3) //Deal aditional damage
diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm
index cb607bae294..c3d0ca679d4 100644
--- a/code/modules/mob/living/carbon/update_icons.dm
+++ b/code/modules/mob/living/carbon/update_icons.dm
@@ -29,7 +29,7 @@
if(changed)
animate(src, transform = ntransform, time = 2, pixel_y = final_pixel_y, dir = final_dir, easing = EASE_IN|EASE_OUT)
handle_transform_change()
- floating = 0 // If we were without gravity, the bouncing animation got stopped, so we make sure we restart it in next life().
+ floating = FALSE // If we were without gravity, the bouncing animation got stopped, so we make sure we restart it in next life().
/mob/living/carbon/proc/handle_transform_change()
return
diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm
index 3062ef461f9..c0341f11b47 100644
--- a/code/modules/mob/living/life.dm
+++ b/code/modules/mob/living/life.dm
@@ -2,9 +2,8 @@
set waitfor = FALSE
set invisibility = 0
- if(flying) //TODO: Better floating
- animate(src, pixel_y = pixel_y + 5 , time = 10, loop = 1, easing = SINE_EASING)
- animate(pixel_y = pixel_y - 5, time = 10, loop = 1, easing = SINE_EASING)
+ if(flying && !floating) //TODO: Better floating
+ float(TRUE)
if(client || registered_z) // This is a temporary error tracker to make sure we've caught everything
var/turf/T = get_turf(src)
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index c05aae7e664..9e9724d20ec 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -758,16 +758,17 @@
/mob/living/proc/float(on)
if(throwing)
return
- var/fixed = 0
+ var/fixed = FALSE
if(anchored || (buckled && buckled.anchored))
- fixed = 1
+ fixed = TRUE
if(on && !floating && !fixed)
animate(src, pixel_y = pixel_y + 2, time = 10, loop = -1)
- floating = 1
+ sleep(10)
+ animate(src, pixel_y = pixel_y - 2, time = 10, loop = -1)
+ floating = TRUE
else if(((!on || fixed) && floating))
- var/final_pixel_y = get_standard_pixel_y_offset(lying)
- animate(src, pixel_y = final_pixel_y, time = 10)
- floating = 0
+ animate(src, pixel_y = get_standard_pixel_y_offset(lying), time = 10)
+ floating = FALSE
/mob/living/proc/can_use_vents()
return "You can't fit into that vent."
@@ -842,15 +843,17 @@
if(!used_item)
used_item = get_active_hand()
..()
- floating = 0 // If we were without gravity, the bouncing animation got stopped, so we make sure we restart the bouncing after the next movement.
+ floating = FALSE // If we were without gravity, the bouncing animation got stopped, so we make sure we restart the bouncing after the next movement.
/mob/living/proc/do_jitter_animation(jitteriness, loop_amount = 6)
- var/amplitude = min(4, (jitteriness/100) + 1)
+ var/amplitude = min(4, (jitteriness / 100) + 1)
var/pixel_x_diff = rand(-amplitude, amplitude)
- var/pixel_y_diff = rand(-amplitude/3, amplitude/3)
+ var/pixel_y_diff = rand(-amplitude / 3, amplitude / 3)
+ var/final_pixel_x = get_standard_pixel_x_offset(lying)
+ var/final_pixel_y = get_standard_pixel_y_offset(lying)
animate(src, pixel_x = pixel_x + pixel_x_diff, pixel_y = pixel_y + pixel_y_diff , time = 2, loop = loop_amount)
- animate(pixel_x = initial(pixel_x) , pixel_y = initial(pixel_y) , time = 2)
- floating = 0 // If we were without gravity, the bouncing animation got stopped, so we make sure we restart the bouncing after the next movement.
+ animate(pixel_x = final_pixel_x , pixel_y = final_pixel_y , time = 2)
+ floating = FALSE // If we were without gravity, the bouncing animation got stopped, so we make sure we restart the bouncing after the next movement.
/mob/living/proc/get_temperature(datum/gas_mixture/environment)
diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm
index c3575f4a7b5..f8a5f08b313 100644
--- a/code/modules/mob/living/living_defines.dm
+++ b/code/modules/mob/living/living_defines.dm
@@ -33,7 +33,7 @@
var/on_fire = 0 //The "Are we on fire?" var
var/fire_stacks = 0 //Tracks how many stacks of fire we have on, max is usually 20
- var/floating = 0
+ var/floating = FALSE
var/mob_size = MOB_SIZE_HUMAN
var/metabolism_efficiency = 1 //more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature..
var/digestion_ratio = 1 //controls how quickly reagents metabolize; largely governered by species attributes.
diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm
index d4546f4f6bc..e944e692887 100644
--- a/code/modules/mob/living/say.dm
+++ b/code/modules/mob/living/say.dm
@@ -351,8 +351,6 @@ proc/get_radio_key_from_channel(var/channel)
return
if(stat)
- if(stat == DEAD)
- return say_dead(message_pieces)
return
if(is_muzzled())
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index 7f6ed094dce..a5a9269d63b 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -50,7 +50,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
var/list/connected_robots = list()
var/aiRestorePowerRoutine = 0
//var/list/laws = list()
- var/alarms = list("Motion" = list(), "Fire" = list(), "Atmosphere" = list(), "Power" = list(), "Camera" = list())
+ alarms_listend_for = list("Motion", "Fire", "Atmosphere", "Power", "Camera", "Burglar")
var/viewalerts = 0
var/icon/holo_icon//Default is assigned when AI is created.
var/obj/mecha/controlled_mech //For controlled_mech a mech, to determine whether to relaymove or use the AI eye.
@@ -173,19 +173,19 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
add_language("Galactic Common", 1)
add_language("Sol Common", 1)
add_language("Tradeband", 1)
- add_language("Neo-Russkiya", 0)
- add_language("Gutter", 0)
- add_language("Sinta'unathi", 0)
- add_language("Siik'tajr", 0)
- add_language("Canilunzt", 0)
- add_language("Skrellian", 0)
- add_language("Vox-pidgin", 0)
- add_language("Orluum", 0)
- add_language("Rootspeak", 0)
+ add_language("Neo-Russkiya", 1)
+ add_language("Gutter", 1)
+ add_language("Sinta'unathi", 1)
+ add_language("Siik'tajr", 1)
+ add_language("Canilunzt", 1)
+ add_language("Skrellian", 1)
+ add_language("Vox-pidgin", 1)
+ add_language("Orluum", 1)
+ add_language("Rootspeak", 1)
add_language("Trinary", 1)
- add_language("Chittin", 0)
- add_language("Bubblish", 0)
- add_language("Clownish", 0)
+ add_language("Chittin", 1)
+ add_language("Bubblish", 1)
+ add_language("Clownish", 1)
if(!safety)//Only used by AIize() to successfully spawn an AI.
if(!B)//If there is no player/brain inside.
@@ -242,6 +242,46 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
return
show_borg_info()
+/mob/living/silicon/ai/proc/ai_alerts()
+ var/list/dat = list("Current Station Alerts\n")
+ dat += "Close
"
+ var/list/list/temp_alarm_list = SSalarm.alarms.Copy()
+ for(var/cat in temp_alarm_list)
+ if(!(cat in alarms_listend_for))
+ continue
+ dat += text("[] \n", cat)
+ var/list/list/L = temp_alarm_list[cat].Copy()
+ for(var/alarm in L)
+ var/list/list/alm = L[alarm].Copy()
+ var/area_name = alm[1]
+ var/C = alm[2]
+ var/list/list/sources = alm[3].Copy()
+ for(var/thing in sources)
+ var/atom/A = locateUID(thing)
+ if(A && A.z != z)
+ L -= alarm
+ continue
+ dat += ""
+ if(C && islist(C))
+ var/dat2 = ""
+ for(var/cam in C)
+ var/obj/machinery/camera/I = locateUID(cam)
+ if(!QDELETED(I))
+ dat2 += text("[][]", (dat2 == "") ? "" : " | ", I.c_tag)
+ dat += text("-- [] ([])", area_name, (dat2 != "") ? dat2 : "No Camera")
+ else
+ dat += text("-- [] (No Camera)", area_name)
+ if(sources.len > 1)
+ dat += text("- [] sources", sources.len)
+ dat += " \n"
+ if(!L.len)
+ dat += "-- All Systems Nominal \n"
+ dat += " \n"
+
+ viewalerts = TRUE
+ var/dat_text = dat.Join("")
+ src << browse(dat_text, "window=aialerts&can_close=0")
+
/mob/living/silicon/ai/proc/show_borg_info()
stat(null, text("Connected cyborgs: [connected_robots.len]"))
for(var/thing in connected_robots)
@@ -612,7 +652,7 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
if(href_list["switchcamera"])
switchCamera(locate(href_list["switchcamera"])) in GLOB.cameranet.cameras
if(href_list["showalerts"])
- subsystem_alarm_monitor()
+ ai_alerts()
if(href_list["show_paper"])
if(last_paper_seen)
src << browse(last_paper_seen, "window=show_paper")
@@ -787,12 +827,49 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
Bot.call_bot(src, waypoint)
+/mob/living/silicon/ai/alarm_triggered(src, class, area/A, list/O, obj/alarmsource)
+ if(!(class in alarms_listend_for))
+ return
+ if(alarmsource.z != z)
+ return
+ if(stat == DEAD)
+ return TRUE
+ if(O)
+ var/obj/machinery/camera/C = locateUID(O[1])
+ if(O.len == 1 && !QDELETED(C) && C.can_use())
+ queueAlarm("--- [class] alarm detected in [A.name]! ([C.c_tag])", class)
+ else if(O && O.len)
+ var/foo = 0
+ var/dat2 = ""
+ for(var/thing in O)
+ var/obj/machinery/camera/I = locateUID(thing)
+ if(!QDELETED(I))
+ dat2 += text("[][]", (!foo) ? "" : " | ", I.c_tag) //I'm not fixing this shit...
+ foo = 1
+ queueAlarm(text ("--- [] alarm detected in []! ([])", class, A.name, dat2), class)
+ else
+ queueAlarm(text("--- [] alarm detected in []! (No Camera)", class, A.name), class)
+ else
+ queueAlarm(text("--- [] alarm detected in []! (No Camera)", class, A.name), class)
+ if(viewalerts)
+ ai_alerts()
+
+/mob/living/silicon/ai/alarm_cancelled(src, class, area/A, obj/origin, cleared)
+ if(cleared)
+ if(!(class in alarms_listend_for))
+ return
+ if(origin.z != z)
+ return
+ queueAlarm("--- [class] alarm in [A.name] has been cleared.", class, 0)
+ if(viewalerts)
+ ai_alerts()
+
/mob/living/silicon/ai/proc/switchCamera(obj/machinery/camera/C)
if(!tracking)
cameraFollow = null
- if(!C || stat == DEAD) //C.can_use())
+ if(QDELETED(C) || stat == DEAD) //C.can_use())
return FALSE
if(!eyeobj)
diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm
index 61151e35c92..106eaf86d37 100644
--- a/code/modules/mob/living/silicon/ai/life.dm
+++ b/code/modules/mob/living/silicon/ai/life.dm
@@ -132,8 +132,6 @@
sleep(50)
theAPC = null
- process_queued_alarms()
-
/mob/living/silicon/ai/updatehealth(reason = "none given")
if(status_flags & GODMODE)
health = 100
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index db95f18c210..0a4e4cee898 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -563,6 +563,10 @@
var/obj/item/holder/H = ..()
if(!istype(H))
return
+ if(stat == DEAD)
+ H.icon = 'icons/mob/pai.dmi'
+ H.icon_state = "[chassis]_dead"
+ return
if(resting)
icon_state = "[chassis]"
resting = 0
diff --git a/code/modules/mob/living/silicon/robot/death.dm b/code/modules/mob/living/silicon/robot/death.dm
index 72d9b210712..65847c3a9b1 100644
--- a/code/modules/mob/living/silicon/robot/death.dm
+++ b/code/modules/mob/living/silicon/robot/death.dm
@@ -53,7 +53,7 @@
emote("deathgasp", force = TRUE)
if(module)
- module.handle_death(gibbed)
+ module.handle_death(src, gibbed)
// Only execute the below if we successfully died
. = ..(gibbed)
diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm
index 57d12294951..a183a8fc455 100644
--- a/code/modules/mob/living/silicon/robot/life.dm
+++ b/code/modules/mob/living/silicon/robot/life.dm
@@ -13,7 +13,6 @@
handle_robot_cell()
process_locks()
update_items()
- process_queued_alarms()
/mob/living/silicon/robot/proc/handle_robot_cell()
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index f6952bd06d2..7d0645d159b 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -59,7 +59,6 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
var/ear_protection = 0
var/damage_protection = 0
var/emp_protection = FALSE
- var/xeno_disarm_chance = 85
var/list/force_modules = list()
var/allow_rename = TRUE
@@ -72,7 +71,6 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
var/list/req_access
var/ident = 0
//var/list/laws = list()
- var/alarms = list("Motion"=list(), "Fire"=list(), "Atmosphere"=list(), "Power"=list(), "Camera"=list())
var/viewalerts = 0
var/modtype = "Default"
var/lower_mod = 0
@@ -112,7 +110,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
/mob/living/silicon/robot/get_cell()
return cell
-/mob/living/silicon/robot/New(loc, syndie = FALSE, unfinished = FALSE, alien = FALSE, mob/living/silicon/ai/ai_to_sync_to = null)
+/mob/living/silicon/robot/New(loc, syndie = FALSE, unfinished = FALSE, alien = FALSE, connect_to_AI = TRUE, mob/living/silicon/ai/ai_to_sync_to = null)
spark_system = new /datum/effect_system/spark_spread()
spark_system.set_up(5, 0, src)
spark_system.attach(src)
@@ -134,7 +132,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
radio = new /obj/item/radio/borg(src)
common_radio = radio
- init(ai_to_sync_to = ai_to_sync_to)
+ init(alien, connect_to_AI, ai_to_sync_to)
if(has_camera && !camera)
camera = new /obj/machinery/camera(src)
@@ -172,18 +170,20 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
scanner = new(src)
scanner.Grant(src)
-/mob/living/silicon/robot/proc/init(alien = FALSE, mob/living/silicon/ai/ai_to_sync_to = null)
+/mob/living/silicon/robot/proc/init(alien, connect_to_AI = TRUE, mob/living/silicon/ai/ai_to_sync_to = null)
aiCamera = new/obj/item/camera/siliconcam/robot_camera(src)
make_laws()
additional_law_channels["Binary"] = ":b "
+ if(!connect_to_AI)
+ return
var/found_ai = ai_to_sync_to
if(!found_ai)
found_ai = select_active_ai_with_fewest_borgs()
if(found_ai)
- lawupdate = 1
+ lawupdate = TRUE
connect_to_ai(found_ai)
else
- lawupdate = 0
+ lawupdate = FALSE
playsound(loc, 'sound/voice/liveagain.ogg', 75, 1)
@@ -544,6 +544,43 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
src.verbs -= GLOB.robot_verbs_default
src.verbs -= silicon_subsystems
+/mob/living/silicon/robot/verb/cmd_robot_alerts()
+ set category = "Robot Commands"
+ set name = "Show Alerts"
+ if(usr.stat == DEAD)
+ to_chat(src, "Alert: You are dead.")
+ return //won't work if dead
+ robot_alerts()
+
+/mob/living/silicon/robot/proc/robot_alerts()
+ var/list/dat = list()
+ var/list/list/temp_alarm_list = SSalarm.alarms.Copy()
+ for(var/cat in temp_alarm_list)
+ if(!(cat in alarms_listend_for))
+ continue
+ dat += text("[cat] \n")
+ var/list/list/L = temp_alarm_list[cat].Copy()
+ for(var/alarm in L)
+ var/list/list/alm = L[alarm].Copy()
+ var/list/list/sources = alm[3].Copy()
+ var/area_name = alm[1]
+ for(var/thing in sources)
+ var/atom/A = locateUID(thing)
+ if(A && A.z != z)
+ L -= alarm
+ continue
+ dat += ""
+ dat += text("-- [area_name]")
+ dat += " \n"
+ if(!L.len)
+ dat += "-- All Systems Nominal \n"
+ dat += " \n"
+
+ var/datum/browser/alerts = new(usr, "robotalerts", "Current Station Alerts", 400, 410)
+ var/dat_text = dat.Join("")
+ alerts.set_content(dat_text)
+ alerts.open()
+
/mob/living/silicon/robot/proc/ionpulse()
if(!ionpulse_on)
return
@@ -605,6 +642,23 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
/mob/living/silicon/robot/InCritical()
return low_power_mode
+/mob/living/silicon/robot/alarm_triggered(src, class, area/A, list/O, obj/alarmsource)
+ if(!(class in alarms_listend_for))
+ return
+ if(alarmsource.z != z)
+ return
+ if(stat == DEAD)
+ return
+ queueAlarm(text("--- [class] alarm detected in [A.name]!"), class)
+
+/mob/living/silicon/robot/alarm_cancelled(src, class, area/A, obj/origin, cleared)
+ if(cleared)
+ if(!(class in alarms_listend_for))
+ return
+ if(origin.z != z)
+ return
+ queueAlarm("--- [class] alarm in [A.name] has been cleared.", class, 0)
+
/mob/living/silicon/robot/ex_act(severity)
switch(severity)
if(1.0)
@@ -1024,10 +1078,6 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
src << browse(null, t1)
return 1
- if(href_list["showalerts"])
- subsystem_alarm_monitor()
- return 1
-
if(href_list["mod"])
var/obj/item/O = locate(href_list["mod"])
if(istype(O) && (O.loc == src))
@@ -1042,6 +1092,11 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
activate_module(O)
installed_modules()
+ //Show alerts window if user clicked on "Show alerts" in chat
+ if(href_list["showalerts"])
+ robot_alerts()
+ return TRUE
+
if(href_list["deact"])
var/obj/item/O = locate(href_list["deact"])
if(activated(O))
@@ -1344,14 +1399,13 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
eye_protection = 2 // Immunity to flashes and the visual part of flashbangs
ear_protection = 1 // Immunity to the audio part of flashbangs
damage_protection = 10 // Reduce all incoming damage by this number
- xeno_disarm_chance = 20
allow_rename = FALSE
modtype = "Commando"
faction = list("nanotrasen")
is_emaggable = FALSE
default_cell_type = /obj/item/stock_parts/cell/bluespace
-/mob/living/silicon/robot/deathsquad/init(alien = FALSE, mob/living/silicon/ai/ai_to_sync_to = null)
+/mob/living/silicon/robot/deathsquad/init(alien = FALSE, connect_to_AI = TRUE, mob/living/silicon/ai/ai_to_sync_to = null)
laws = new /datum/ai_laws/deathsquad
module = new /obj/item/robot_module/deathsquad(src)
aiCamera = new/obj/item/camera/siliconcam/robot_camera(src)
@@ -1381,7 +1435,7 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
var/eprefix = "Amber"
-/mob/living/silicon/robot/ert/init(alien = FALSE, mob/living/silicon/ai/ai_to_sync_to = null)
+/mob/living/silicon/robot/ert/init(alien = FALSE, connect_to_AI = TRUE, mob/living/silicon/ai/ai_to_sync_to = null)
laws = new /datum/ai_laws/ert_override
radio = new /obj/item/radio/borg/ert(src)
radio.recalculateChannels()
@@ -1414,7 +1468,6 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
damage_protection = 5 // Reduce all incoming damage by this number
eprefix = "Gamma"
magpulse = 1
- xeno_disarm_chance = 40
/mob/living/silicon/robot/destroyer
@@ -1434,10 +1487,9 @@ GLOBAL_LIST_INIT(robot_verbs_default, list(
ear_protection = 1 // Immunity to the audio part of flashbangs
emp_protection = TRUE // Immunity to EMP, due to heavy shielding
damage_protection = 20 // Reduce all incoming damage by this number. Very high in the case of /destroyer borgs, since it is an admin-only borg.
- xeno_disarm_chance = 10
default_cell_type = /obj/item/stock_parts/cell/bluespace
-/mob/living/silicon/robot/destroyer/init(alien = FALSE, mob/living/silicon/ai/ai_to_sync_to = null)
+/mob/living/silicon/robot/destroyer/init(alien = FALSE, connect_to_AI = TRUE, mob/living/silicon/ai/ai_to_sync_to = null)
aiCamera = new/obj/item/camera/siliconcam/robot_camera(src)
additional_law_channels["Binary"] = ":b "
laws = new /datum/ai_laws/deathsquad
diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm
index 8445a399582..84eb782833b 100644
--- a/code/modules/mob/living/silicon/robot/robot_defense.dm
+++ b/code/modules/mob/living/silicon/robot/robot_defense.dm
@@ -2,19 +2,17 @@
if(M.a_intent == INTENT_DISARM)
if(!lying)
M.do_attack_animation(src, ATTACK_EFFECT_DISARM)
- if(prob(xeno_disarm_chance))
- Stun(7)
- step(src, get_dir(M,src))
- spawn(5)
- step(src, get_dir(M,src))
- add_attack_logs(M, src, "Alien pushed over")
- playsound(loc, 'sound/weapons/pierce.ogg', 50, 1, -1)
- visible_message("[M] has forced back [src]!",\
- "[M] has forced back [src]!")
+ var/obj/item/I = get_active_hand()
+ if(I)
+ uneq_active()
+ visible_message("[M] disarmed [src]!", "[M] has disabled [src]'s active module!")
+ add_attack_logs(M, src, "alien disarmed")
else
- playsound(loc, 'sound/weapons/slashmiss.ogg', 25, 1, -1)
- visible_message("[M] took a swipe at [src]!",\
- "[M] took a swipe at [src]!")
+ Stun(2)
+ step(src, get_dir(M,src))
+ add_attack_logs(M, src, "Alien pushed over")
+ visible_message("[M] forces back [src]!", "[M] forces back [src]!")
+ playsound(loc, 'sound/weapons/pierce.ogg', 50, TRUE, -1)
else
..()
return
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 8e8c67693c5..ff967354131 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -114,7 +114,7 @@
/obj/item/robot_module/proc/handle_custom_removal(component_id, mob/living/user, obj/item/W)
return FALSE
-/obj/item/robot_module/proc/handle_death(gibbed)
+/obj/item/robot_module/proc/handle_death(mob/living/silicon/robot/R, gibbed)
return
/obj/item/robot_module/standard
@@ -255,7 +255,7 @@
fix_modules()
-/obj/item/robot_module/engineering/handle_death()
+/obj/item/robot_module/engineering/handle_death(mob/living/silicon/robot/R, gibbed)
var/obj/item/gripper/G = locate(/obj/item/gripper) in modules
if(G)
G.drop_gripped_item(silent = TRUE)
@@ -368,6 +368,11 @@
R.add_language("Clownish",1)
R.add_language("Neo-Russkiya", 1)
+/obj/item/robot_module/butler/handle_death(mob/living/silicon/robot/R, gibbed)
+ var/obj/item/storage/bag/tray/cyborg/T = locate(/obj/item/storage/bag/tray/cyborg) in modules
+ if(istype(T))
+ T.drop_inventory(R)
+
/obj/item/robot_module/miner
name = "miner robot module"
@@ -623,7 +628,7 @@
..()
-/obj/item/robot_module/drone/handle_death()
+/obj/item/robot_module/drone/handle_death(mob/living/silicon/robot/R, gibbed)
var/obj/item/gripper/G = locate(/obj/item/gripper) in modules
if(G)
G.drop_gripped_item(silent = TRUE)
diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm
index c923e0912b7..7f9c0849d9c 100644
--- a/code/modules/mob/living/silicon/silicon.dm
+++ b/code/modules/mob/living/silicon/silicon.dm
@@ -11,9 +11,11 @@
var/list/stating_laws = list()// Channels laws are currently being stated on
var/list/alarms_to_show = list()
var/list/alarms_to_clear = list()
+ var/list/alarm_types_show = list("Motion" = 0, "Fire" = 0, "Atmosphere" = 0, "Power" = 0, "Camera" = 0)
+ var/list/alarm_types_clear = list("Motion" = 0, "Fire" = 0, "Atmosphere" = 0, "Power" = 0, "Camera" = 0)
+ var/list/alarms_listend_for = list("Motion", "Fire", "Atmosphere", "Power", "Camera")
//var/list/hud_list[10]
var/list/speech_synthesizer_langs = list() //which languages can be vocalized by the speech synthesizer
- var/list/alarm_handlers = list() // List of alarm handlers this silicon is registered to
var/designation = ""
var/obj/item/camera/siliconcam/aiCamera = null //photography
//Used in say.dm, allows for pAIs to have different say flavor text, as well as silicons, although the latter is not implemented.
@@ -25,9 +27,6 @@
//var/sensor_mode = 0 //Determines the current HUD.
- var/next_alarm_notice
- var/list/datum/alarm/queued_alarms = new()
-
hud_possible = list(SPECIALROLE_HUD, DIAG_STAT_HUD, DIAG_HUD)
@@ -46,6 +45,8 @@
diag_hud_set_health()
add_language("Galactic Common")
init_subsystems()
+ RegisterSignal(SSalarm, COMSIG_TRIGGERED_ALARM, .proc/alarm_triggered)
+ RegisterSignal(SSalarm, COMSIG_CANCELLED_ALARM, .proc/alarm_cancelled)
/mob/living/silicon/med_hud_set_health()
return //we use a different hud
@@ -55,10 +56,93 @@
/mob/living/silicon/Destroy()
GLOB.silicon_mob_list -= src
- for(var/datum/alarm_handler/AH in alarm_handlers)
- AH.unregister(src)
return ..()
+/mob/living/silicon/proc/alarm_triggered(src, class, area/A, list/O, obj/alarmsource)
+ return
+
+/mob/living/silicon/proc/alarm_cancelled(src, class, area/A, obj/origin, cleared)
+ return
+
+/mob/living/silicon/proc/queueAlarm(message, type, incoming = TRUE)
+ var/in_cooldown = (alarms_to_show.len > 0 || alarms_to_clear.len > 0)
+ if(incoming)
+ alarms_to_show += message
+ alarm_types_show[type] += 1
+ else
+ alarms_to_clear += message
+ alarm_types_clear[type] += 1
+
+ if(in_cooldown)
+ return
+
+ addtimer(CALLBACK(src, .proc/show_alarms), 3 SECONDS)
+
+/mob/living/silicon/proc/show_alarms()
+ if(alarms_to_show.len < 5)
+ for(var/msg in alarms_to_show)
+ to_chat(src, msg)
+ else if(length(alarms_to_show))
+
+ var/list/msg = list("--- ")
+
+ if(alarm_types_show["Burglar"])
+ msg += "BURGLAR: [alarm_types_show["Burglar"]] alarms detected. - "
+
+ if(alarm_types_show["Motion"])
+ msg += "MOTION: [alarm_types_show["Motion"]] alarms detected. - "
+
+ if(alarm_types_show["Fire"])
+ msg += "FIRE: [alarm_types_show["Fire"]] alarms detected. - "
+
+ if(alarm_types_show["Atmosphere"])
+ msg += "ATMOSPHERE: [alarm_types_show["Atmosphere"]] alarms detected. - "
+
+ if(alarm_types_show["Power"])
+ msg += "POWER: [alarm_types_show["Power"]] alarms detected. - "
+
+ if(alarm_types_show["Camera"])
+ msg += "CAMERA: [alarm_types_show["Camera"]] alarms detected. - "
+
+ msg += "\[Show Alerts\]"
+ var/msg_text = msg.Join("")
+ to_chat(src, msg_text)
+
+ if(alarms_to_clear.len < 3)
+ for(var/msg in alarms_to_clear)
+ to_chat(src, msg)
+
+ else if(alarms_to_clear.len)
+ var/list/msg = list("--- ")
+
+ if(alarm_types_clear["Motion"])
+ msg += "MOTION: [alarm_types_clear["Motion"]] alarms cleared. - "
+
+ if(alarm_types_clear["Fire"])
+ msg += "FIRE: [alarm_types_clear["Fire"]] alarms cleared. - "
+
+ if(alarm_types_clear["Atmosphere"])
+ msg += "ATMOSPHERE: [alarm_types_clear["Atmosphere"]] alarms cleared. - "
+
+ if(alarm_types_clear["Power"])
+ msg += "POWER: [alarm_types_clear["Power"]] alarms cleared. - "
+
+ if(alarm_types_show["Camera"])
+ msg += "CAMERA: [alarm_types_clear["Camera"]] alarms cleared. - "
+
+ msg += "\[Show Alerts\]"
+
+ var/msg_text = msg.Join("")
+ to_chat(src, msg_text)
+
+
+ alarms_to_show.Cut()
+ alarms_to_clear.Cut()
+ for(var/key in alarm_types_show)
+ alarm_types_show[key] = 0
+ for(var/key in alarm_types_clear)
+ alarm_types_clear[key] = 0
+
/mob/living/silicon/rename_character(oldname, newname)
// we actually don't want it changing minds and stuff
if(!newname)
@@ -283,63 +367,6 @@
if("Disable")
to_chat(src, "Sensor augmentations disabled.")
-/mob/living/silicon/proc/receive_alarm(var/datum/alarm_handler/alarm_handler, var/datum/alarm/alarm, was_raised)
- if(!next_alarm_notice)
- next_alarm_notice = world.time + 10 SECONDS
-
- var/list/alarms = queued_alarms[alarm_handler]
- if(was_raised)
- // Raised alarms are always set
- alarms[alarm] = 1
- else
- // Alarms that were raised but then cleared before the next notice are instead removed
- if(alarm in alarms)
- alarms -= alarm
- // And alarms that have only been cleared thus far are set as such
- else
- alarms[alarm] = -1
-
-/mob/living/silicon/proc/process_queued_alarms()
- if(next_alarm_notice && (world.time > next_alarm_notice))
- next_alarm_notice = 0
-
- var/alarm_raised = 0
- for(var/datum/alarm_handler/AH in queued_alarms)
- var/list/alarms = queued_alarms[AH]
- var/reported = 0
- for(var/datum/alarm/A in alarms)
- if(alarms[A] == 1)
- if(!reported)
- reported = 1
- to_chat(src, "--- [AH.category] Detected ---")
- raised_alarm(A)
-
- for(var/datum/alarm_handler/AH in queued_alarms)
- var/list/alarms = queued_alarms[AH]
- var/reported = 0
- for(var/datum/alarm/A in alarms)
- if(alarms[A] == -1)
- if(!reported)
- reported = 1
- to_chat(src, "--- [AH.category] Cleared ---")
- to_chat(src, "\The [A.alarm_name()].")
-
- if(alarm_raised)
- to_chat(src, "\[Show Alerts\]")
-
- for(var/datum/alarm_handler/AH in queued_alarms)
- var/list/alarms = queued_alarms[AH]
- alarms.Cut()
-
-/mob/living/silicon/proc/raised_alarm(var/datum/alarm/A)
- to_chat(src, "[A.alarm_name()]!")
-
-/mob/living/silicon/ai/raised_alarm(var/datum/alarm/A)
- var/cameratext = ""
- for(var/obj/machinery/camera/C in A.cameras())
- cameratext += "[(cameratext == "")? "" : "|"][C.c_tag]"
- to_chat(src, "[A.alarm_name()]! ([(cameratext)? cameratext : "No Camera"])")
-
/mob/living/silicon/adjustToxLoss(var/amount)
return STATUS_UPDATE_NONE
diff --git a/code/modules/mob/living/silicon/silicon_defense.dm b/code/modules/mob/living/silicon/silicon_defense.dm
index e720400abd5..6ac5f8cded2 100644
--- a/code/modules/mob/living/silicon/silicon_defense.dm
+++ b/code/modules/mob/living/silicon/silicon_defense.dm
@@ -3,11 +3,10 @@
/mob/living/silicon/attack_alien(mob/living/carbon/alien/humanoid/M)
if(..()) //if harm or disarm intent
- var/damage = rand(10, 20)
+ var/damage = 20
if(prob(90))
playsound(loc, 'sound/weapons/slash.ogg', 25, 1, -1)
- visible_message("[M] has slashed at [src]!", \
- "[M] has slashed at [src]!")
+ visible_message("[M] has slashed at [src]!", "[M] has slashed at [src]!")
if(prob(8))
flash_eyes(affect_silicon = 1)
add_attack_logs(M, src, "Alien attacked")
@@ -64,6 +63,6 @@
else
M.do_attack_animation(src, ATTACK_EFFECT_PUNCH)
playsound(loc, 'sound/effects/bang.ogg', 10, 1)
- visible_message("[M] punches [src], but doesn't leave a dent.", \
- "[M] punches [src], but doesn't leave a dent.!")
+ visible_message("[M] punches [src], but doesn't leave a dent.", \
+ "[M] punches [src], but doesn't leave a dent.")
return FALSE
diff --git a/code/modules/mob/living/silicon/subsystems.dm b/code/modules/mob/living/silicon/subsystems.dm
index d18d41a40cf..65a92d07008 100644
--- a/code/modules/mob/living/silicon/subsystems.dm
+++ b/code/modules/mob/living/silicon/subsystems.dm
@@ -8,13 +8,11 @@
/mob/living/silicon
var/list/silicon_subsystems = list(
- /mob/living/silicon/proc/subsystem_alarm_monitor,
/mob/living/silicon/proc/subsystem_law_manager
)
/mob/living/silicon/ai
silicon_subsystems = list(
- /mob/living/silicon/proc/subsystem_alarm_monitor,
/mob/living/silicon/proc/subsystem_atmos_control,
/mob/living/silicon/proc/subsystem_crew_monitor,
/mob/living/silicon/proc/subsystem_law_manager,
@@ -23,7 +21,6 @@
/mob/living/silicon/robot/drone
silicon_subsystems = list(
- /mob/living/silicon/proc/subsystem_alarm_monitor,
/mob/living/silicon/proc/subsystem_law_manager,
/mob/living/silicon/proc/subsystem_power_monitor
)
@@ -32,30 +29,11 @@
register_alarms = 0
/mob/living/silicon/proc/init_subsystems()
- alarm_monitor = new(src)
atmos_control = new(src)
crew_monitor = new(src)
law_manager = new(src)
power_monitor = new(src)
- if(!register_alarms)
- return
-
- var/list/register_to = list(SSalarms.atmosphere_alarm, SSalarms.burglar_alarm, SSalarms.camera_alarm, SSalarms.fire_alarm, SSalarms.motion_alarm, SSalarms.power_alarm)
- for(var/datum/alarm_handler/AH in register_to)
- AH.register(src, /mob/living/silicon/proc/receive_alarm)
- queued_alarms[AH] = list() // Makes sure alarms remain listed in consistent order
- alarm_handlers |= AH
-
-/********************
-* Alarm Monitor *
-********************/
-/mob/living/silicon/proc/subsystem_alarm_monitor()
- set name = "Alarm Monitor"
- set category = "Subsystems"
-
- alarm_monitor.ui_interact(usr, state = GLOB.self_state)
-
/********************
* Atmos Control *
********************/
diff --git a/code/modules/mob/living/simple_animal/animal_defense.dm b/code/modules/mob/living/simple_animal/animal_defense.dm
index b42f3275997..28fff50a124 100644
--- a/code/modules/mob/living/simple_animal/animal_defense.dm
+++ b/code/modules/mob/living/simple_animal/animal_defense.dm
@@ -42,13 +42,18 @@
/mob/living/simple_animal/attack_alien(mob/living/carbon/alien/humanoid/M)
if(..()) //if harm or disarm intent.
- var/damage = rand(15, 30)
- visible_message("[M] has slashed at [src]!", \
- "[M] has slashed at [src]!")
- playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1)
- add_attack_logs(M, src, "Alien attacked")
- attack_threshold_check(damage)
- return
+ if(M.a_intent == INTENT_DISARM)
+ playsound(loc, 'sound/weapons/pierce.ogg', 25, TRUE, -1)
+ visible_message("[M] [response_disarm] [name]!", "[M] [response_disarm] you!")
+ add_attack_logs(M, src, "Alien disarmed")
+ else
+ var/damage = rand(15, 30)
+ visible_message("[M] has slashed at [src]!", \
+ "[M] has slashed at [src]!")
+ playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1)
+ add_attack_logs(M, src, "Alien attacked")
+ attack_threshold_check(damage)
+ return TRUE
/mob/living/simple_animal/attack_larva(mob/living/carbon/alien/larva/L)
if(..()) //successful larva bite
diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm
index f150005116e..4c2c2332924 100644
--- a/code/modules/mob/living/simple_animal/constructs.dm
+++ b/code/modules/mob/living/simple_animal/constructs.dm
@@ -17,7 +17,7 @@
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
minbodytemp = 0
faction = list("cult")
- flying = 1
+ flying = TRUE
pressure_resistance = 100
universal_speak = 1
AIStatus = AI_OFF //normal constructs don't have AI
diff --git a/code/modules/mob/living/simple_animal/friendly/butterfly.dm b/code/modules/mob/living/simple_animal/friendly/butterfly.dm
index 9aaffc6ef8f..ebf068ff130 100644
--- a/code/modules/mob/living/simple_animal/friendly/butterfly.dm
+++ b/code/modules/mob/living/simple_animal/friendly/butterfly.dm
@@ -15,6 +15,7 @@
harm_intent_damage = 1
friendly = "nudges"
density = 0
+ flying = TRUE
pass_flags = PASSTABLE | PASSGRILLE | PASSMOB
ventcrawler = 2
mob_size = MOB_SIZE_TINY
diff --git a/code/modules/mob/living/simple_animal/hostile/bat.dm b/code/modules/mob/living/simple_animal/hostile/bat.dm
index be04fc217e9..b47b0eb1f23 100644
--- a/code/modules/mob/living/simple_animal/hostile/bat.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bat.dm
@@ -16,6 +16,7 @@
maxHealth = 20
health = 20
mob_size = MOB_SIZE_TINY
+ flying = TRUE
harm_intent_damage = 8
melee_damage_lower = 10
melee_damage_upper = 10
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
index b8c72d7cf84..2f97001d3ae 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -241,6 +241,14 @@ Difficulty: Very Hard
AT.pixel_y += random_y
return ..()
+/mob/living/simple_animal/hostile/megafauna/colossus/float(on) //we don't want this guy to float, messes up his animations
+ if(throwing)
+ return
+ if(on && !floating)
+ floating = TRUE
+ else if(!on && floating)
+ floating = FALSE
+
/obj/item/projectile/colossus
name ="death bolt"
icon_state= "chronobolt"
diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm
index a3e32e9d35e..5d946662854 100644
--- a/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm
+++ b/code/modules/mob/living/simple_animal/hostile/retaliate/undead.dm
@@ -46,6 +46,7 @@
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
minbodytemp = 0
+ flying = TRUE
pressure_resistance = 300
gold_core_spawnable = NO_SPAWN //too spooky for science
faction = list("undead") // did I mention ghost
diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm
index decfc7146cf..f992bb3cc10 100644
--- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm
+++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm
@@ -362,7 +362,7 @@
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
minbodytemp = 0
mob_size = MOB_SIZE_TINY
- flying = 1
+ flying = TRUE
bubble_icon = "syndibot"
gold_core_spawnable = HOSTILE_SPAWN
del_on_death = 1
diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm
index 97dbd831dd0..8d6db8ade3c 100644
--- a/code/modules/mob/living/simple_animal/parrot.dm
+++ b/code/modules/mob/living/simple_animal/parrot.dm
@@ -86,6 +86,7 @@
//Parrots are kleptomaniacs. This variable ... stores the item a parrot is holding.
var/obj/item/held_item = null
+ flying = TRUE
gold_core_spawnable = FRIENDLY_SPAWN
diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm
index 663838d3a45..1e3c723b278 100644
--- a/code/modules/mob/living/simple_animal/shade.dm
+++ b/code/modules/mob/living/simple_animal/shade.dm
@@ -24,6 +24,7 @@
status_flags = 0
faction = list("cult")
status_flags = CANPUSH
+ flying = TRUE
loot = list(/obj/item/reagent_containers/food/snacks/ectoplasm)
del_on_death = 1
deathmessage = "lets out a contented sigh as their form unwinds."
diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm
index 7cd2b4414f7..ce266ba5b8f 100644
--- a/code/modules/mob/living/status_procs.dm
+++ b/code/modules/mob/living/status_procs.dm
@@ -141,18 +141,6 @@
if(updating && val_change)
update_canmove()
-/mob/living/proc/StartFlying()
- var/val_change = !flying
- flying = TRUE
- if(val_change)
- update_animations()
-
-/mob/living/proc/StopFlying()
- var/val_change = !!flying
- flying = FALSE
- if(val_change)
- update_animations()
-
// SCALAR STATUS EFFECTS
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index 4797c685fe1..0325d13faf0 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -369,8 +369,9 @@
step(pulling, get_dir(pulling.loc, A))
return
-/mob/proc/update_gravity()
+/mob/proc/update_gravity(has_gravity)
return
+
/client/proc/check_has_body_select()
return mob && mob.hud_used && mob.hud_used.zone_select && istype(mob.hud_used.zone_select, /obj/screen/zone_sel)
diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm
index 41032185c3b..7a26de718b6 100644
--- a/code/modules/mob/say.dm
+++ b/code/modules/mob/say.dm
@@ -44,18 +44,27 @@
usr.emote(message)
-/mob/proc/say_dead(var/message)
- if(!(client && client.holder))
- if(!config.dsay_allowed)
- to_chat(src, "Deadchat is globally muted.")
+/mob/proc/say_dead(message)
+ if(client)
+ if(!client.holder)
+ if(!config.dsay_allowed)
+ to_chat(src, "Deadchat is globally muted.")
+ return
+
+ if(client.prefs.muted & MUTE_DEADCHAT)
+ to_chat(src, "You cannot talk in deadchat (muted).")
return
- if(client && !(client.prefs.toggles & CHAT_DEAD))
- to_chat(usr, "You have deadchat muted.")
- return
+ if(!(client.prefs.toggles & CHAT_DEAD))
+ to_chat(src, "You have deadchat muted.")
+ return
+
+ if(client.handle_spam_prevention(message, MUTE_DEADCHAT))
+ return
say_dead_direct("[pick("complains", "moans", "whines", "laments", "blubbers", "salts")], \"[message]\"", src)
create_log(DEADCHAT_LOG, message)
+ log_ghostsay(message, src)
/mob/proc/say_understands(var/mob/other, var/datum/language/speaking = null)
if(stat == DEAD)
diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm
index 8e7adea666b..d151a98309f 100644
--- a/code/modules/mob/transform_procs.dm
+++ b/code/modules/mob/transform_procs.dm
@@ -44,26 +44,37 @@
-//human -> robot
-/mob/living/carbon/human/proc/Robotize()
+/**
+ For transforming humans into robots (cyborgs).
+
+ Arguments:
+ * cell_type: A type path of the cell the new borg should receive.
+ * connect_to_default_AI: TRUE if you want /robot/New() to handle connecting the borg to the AI with the least borgs.
+ * AI: A reference to the AI we want to connect to.
+*/
+/mob/living/carbon/human/proc/Robotize(cell_type = null, connect_to_default_AI = TRUE, mob/living/silicon/ai/AI = null)
if(notransform)
return
for(var/obj/item/W in src)
unEquip(W)
- regenerate_icons()
+
notransform = 1
canmove = 0
icon = null
invisibility = 101
- for(var/t in bodyparts)
- qdel(t)
- for(var/i in internal_organs)
- qdel(i)
- var/mob/living/silicon/robot/O = new /mob/living/silicon/robot( loc )
+ // Creating a new borg here will connect them to a default AI and notify that AI, if `connect_to_default_AI` is TRUE.
+ var/mob/living/silicon/robot/O = new /mob/living/silicon/robot(loc, connect_to_AI = connect_to_default_AI)
- // cyborgs produced by Robotize get an automatic power cell
- O.cell = new /obj/item/stock_parts/cell/high(O)
+ // If `AI` is passed in, we want to connect to that AI specifically.
+ if(AI)
+ O.lawupdate = TRUE
+ O.connect_to_ai(AI)
+
+ if(!cell_type)
+ O.cell = new /obj/item/stock_parts/cell/high(O)
+ else
+ O.cell = new cell_type(O)
O.gender = gender
O.invisibility = 0
@@ -77,9 +88,8 @@
else
O.key = key
- O.loc = loc
+ O.forceMove(loc)
O.job = "Cyborg"
- O.notify_ai(1)
if(O.mind && O.mind.assigned_role == "Cyborg")
if(O.mind.role_alt_title == "Robot")
diff --git a/code/modules/mob/update_status.dm b/code/modules/mob/update_status.dm
index 1708bcfb7a2..b603fc5974e 100644
--- a/code/modules/mob/update_status.dm
+++ b/code/modules/mob/update_status.dm
@@ -55,12 +55,6 @@
// Procs that update other things about the mob
-// Does various animations - Jitter, Flying, Spinning
-/mob/proc/update_animations()
- if(flying)
- animate(src, pixel_y = pixel_y + 5 , time = 10, loop = 1, easing = SINE_EASING)
- animate(pixel_y = pixel_y - 5, time = 10, loop = 1, easing = SINE_EASING)
-
/mob/proc/update_stat()
return
diff --git a/code/modules/modular_computers/computers/machinery/console_presets.dm b/code/modules/modular_computers/computers/machinery/console_presets.dm
index 4f1bd269337..a2357fd9ebe 100644
--- a/code/modules/modular_computers/computers/machinery/console_presets.dm
+++ b/code/modules/modular_computers/computers/machinery/console_presets.dm
@@ -35,7 +35,7 @@
/obj/machinery/modular_computer/console/preset/engineering/install_programs()
var/obj/item/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD]
hard_drive.store_file(new/datum/computer_file/program/power_monitor())
- hard_drive.store_file(new/datum/computer_file/program/alarm_monitor())
+// hard_drive.store_file(new/datum/computer_file/program/alarm_monitor()) //TO-DO:TGUI--Uncomment Modular computers
hard_drive.store_file(new/datum/computer_file/program/supermatter_monitor())
// ===== RESEARCH CONSOLE =====
diff --git a/code/modules/modular_computers/file_system/programs/engineering/alarm.dm b/code/modules/modular_computers/file_system/programs/engineering/alarm.dm
index 8cb47337a6d..2f2f4a08232 100644
--- a/code/modules/modular_computers/file_system/programs/engineering/alarm.dm
+++ b/code/modules/modular_computers/file_system/programs/engineering/alarm.dm
@@ -7,65 +7,71 @@
requires_ntnet = 1
network_destination = "alarm monitoring network"
size = 5
- var/list/datum/alarm_handler/alarm_handlers
+ var/tgui_id = "NtosStationAlertConsole"
+ var/ui_x = 315
+ var/ui_y = 500
+ var/has_alert = 0
+ var/list/alarms_listend_for = list("Fire", "Atmosphere", "Power")
-/datum/computer_file/program/alarm_monitor/New()
+/datum/computer_file/program/alarm_monitor/process_tick()
..()
- alarm_handlers = list(SSalarms.atmosphere_alarm, SSalarms.fire_alarm, SSalarms.power_alarm)
- for(var/datum/alarm_handler/AH in alarm_handlers)
- AH.register(src, /datum/computer_file/program/alarm_monitor/proc/update_icon)
-/datum/computer_file/program/alarm_monitor/Destroy()
- for(var/datum/alarm_handler/AH in alarm_handlers)
- AH.unregister(src)
- QDEL_NULL(alarm_handlers)
- return ..()
+ if(has_alert)
+ program_icon_state = "alert-red"
+ ui_header = "alarm_red.gif"
+ update_computer_icon()
+ else
+ program_icon_state = "alert-green"
+ ui_header = "alarm_green.gif"
+ update_computer_icon()
+ return TRUE
-/datum/computer_file/program/alarm_monitor/proc/update_icon()
- for(var/datum/alarm_handler/AH in alarm_handlers)
- if(AH.has_major_alarms())
- program_icon_state = "alert-red"
- ui_header = "alarm_red.gif"
- update_computer_icon()
- return 1
- program_icon_state = "alert-green"
- ui_header = "alarm_green.gif"
- update_computer_icon()
- return 0
-
-/datum/computer_file/program/alarm_monitor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
- ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open)
- if(!ui)
- var/datum/asset/assets = get_asset_datum(/datum/asset/simple/headers)
- assets.send(user)
- ui = new(user, src, ui_key, "alarm_monitor.tmpl", "Alarm Monitoring", 575, 700)
- ui.set_auto_update(1)
- ui.set_layout_key("program")
- ui.open()
-
-/datum/computer_file/program/alarm_monitor/ui_data(mob/user)
+/datum/computer_file/program/alarm_monitor/tgui_data(mob/user)
var/list/data = get_header_data()
- var/categories[0]
- for(var/datum/alarm_handler/AH in alarm_handlers)
- categories[++categories.len] = list("category" = AH.category, "alarms" = list())
- for(var/datum/alarm/A in AH.major_alarms())
- var/cameras[0]
- var/lost_sources[0]
-
- if(isAI(user))
- for(var/obj/machinery/camera/C in A.cameras())
- cameras[++cameras.len] = C.nano_structure()
- for(var/datum/alarm_source/AS in A.sources)
- if(!AS.source)
- lost_sources[++lost_sources.len] = AS.source_name
-
- categories[categories.len]["alarms"] += list(list(
- "name" = sanitize(A.alarm_name()),
- "origin_lost" = A.origin == null,
- "has_cameras" = cameras.len,
- "cameras" = cameras,
- "lost_sources" = lost_sources.len ? sanitize(english_list(lost_sources, nothing_text = "", and_text = ", ")) : ""))
- data["categories"] = categories
+ data["alarms"] = list()
+ for(var/class in SSalarm.alarms)
+ if(!(class in alarms_listend_for))
+ continue
+ data["alarms"][class] = list()
+ for(var/area in alarms[class])
+ data["alarms"][class] += area
return data
+
+/datum/computer_file/program/alarm_monitor/proc/alarm_triggered(src, class, area/A, list/O, obj/alarmsource)
+ if(is_station_level(alarmsource.z))
+ if(!(A.type in GLOB.the_station_areas))
+ return
+ else if(!is_mining_level(alarmsource.z) || istype(A, /area/ruin))
+ return
+ update_alarm_display()
+
+/datum/computer_file/program/alarm_monitor/proc/alarm_cancelled(src, class, area/A, obj/origin, cleared)
+ if(is_station_level(origin.z))
+ if(!(A.type in GLOB.the_station_areas))
+ return
+ else if(!is_mining_level(origin.z) || istype(A, /area/ruin))
+ return
+ update_alarm_display()
+
+/datum/computer_file/program/alarm_monitor/proc/update_alarm_display()
+ has_alert = FALSE
+ for(var/cat in alarms)
+ if(!(cat in alarms_listend_for))
+ continue
+ var/list/L = alarms[cat]
+ if(length(L))
+ has_alert = TRUE
+
+/datum/computer_file/program/alarm_monitor/run_program(mob/user)
+ . = ..(user)
+ GLOB.alarmdisplay += src
+ RegisterSignal(SSalarm, COMSIG_TRIGGERED_ALARM, .proc/alarm_triggered)
+ RegisterSignal(SSalarm, COMSIG_CANCELLED_ALARM, .proc/alarm_cancelled)
+
+/datum/computer_file/program/alarm_monitor/kill_program(forced = FALSE)
+ GLOB.alarmdisplay -= src
+ UnregisterSignal(SSalarm, COMSIG_TRIGGERED_ALARM)
+ UnregisterSignal(SSalarm, COMSIG_CANCELLED_ALARM)
+ ..()
diff --git a/code/modules/nano/modules/alarm_monitor.dm b/code/modules/nano/modules/alarm_monitor.dm
deleted file mode 100644
index cee3820b102..00000000000
--- a/code/modules/nano/modules/alarm_monitor.dm
+++ /dev/null
@@ -1,90 +0,0 @@
-/datum/nano_module/alarm_monitor
- name = "Alarm monitor"
- var/list_cameras = 0 // Whether or not to list camera references. A future goal would be to merge this with the enginering/security camera console. Currently really only for AI-use.
- var/list/datum/alarm_handler/alarm_handlers // The particular list of alarm handlers this alarm monitor should present to the user.
-
-/datum/nano_module/alarm_monitor/all/New()
- ..()
- alarm_handlers = list(SSalarms.atmosphere_alarm, SSalarms.burglar_alarm, SSalarms.camera_alarm, SSalarms.fire_alarm, SSalarms.motion_alarm, SSalarms.power_alarm)
-
-/datum/nano_module/alarm_monitor/engineering/New()
- ..()
- alarm_handlers = list(SSalarms.atmosphere_alarm, SSalarms.fire_alarm, SSalarms.power_alarm)
-
-/datum/nano_module/alarm_monitor/security/New()
- ..()
- alarm_handlers = list(SSalarms.burglar_alarm, SSalarms.camera_alarm, SSalarms.motion_alarm)
-
-/datum/nano_module/alarm_monitor/proc/register(var/object, var/procName)
- for(var/datum/alarm_handler/AH in alarm_handlers)
- AH.register(object, procName)
-
-/datum/nano_module/alarm_monitor/proc/unregister(var/object)
- for(var/datum/alarm_handler/AH in alarm_handlers)
- AH.unregister(object)
-
-/datum/nano_module/alarm_monitor/proc/all_alarms()
- var/list/all_alarms = new()
- for(var/datum/alarm_handler/AH in alarm_handlers)
- all_alarms += AH.alarms
-
- return all_alarms
-
-/datum/nano_module/alarm_monitor/proc/major_alarms()
- var/list/all_alarms = new()
- for(var/datum/alarm_handler/AH in alarm_handlers)
- all_alarms += AH.major_alarms()
-
- return all_alarms
-
-/datum/nano_module/alarm_monitor/proc/minor_alarms()
- var/list/all_alarms = new()
- for(var/datum/alarm_handler/AH in alarm_handlers)
- all_alarms += AH.minor_alarms()
-
- return all_alarms
-
-/datum/nano_module/alarm_monitor/Topic(ref, href_list)
- if(..())
- return 1
- if(href_list["switchTo"])
- var/obj/machinery/camera/C = locate(href_list["switchTo"]) in GLOB.cameranet.cameras
- if(!C || !isAI(usr))
- return
-
- usr.switch_to_camera(C)
- return 1
-
-/datum/nano_module/alarm_monitor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = GLOB.default_state)
- ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open)
- if(!ui)
- ui = new(user, src, ui_key, "alarm_monitor.tmpl", "Alarm Monitoring Console", 800, 800, state = state)
- ui.open()
- ui.set_auto_update(1)
-
-/datum/nano_module/alarm_monitor/ui_data(mob/user, ui_key = "main", datum/topic_state/state = GLOB.default_state)
- var/data[0]
-
- var/categories[0]
- for(var/datum/alarm_handler/AH in alarm_handlers)
- categories[++categories.len] = list("category" = AH.category, "alarms" = list())
- for(var/datum/alarm/A in AH.major_alarms())
- var/cameras[0]
- var/lost_sources[0]
-
- if(isAI(user))
- for(var/obj/machinery/camera/C in A.cameras())
- cameras[++cameras.len] = C.nano_structure()
- for(var/datum/alarm_source/AS in A.sources)
- if(!AS.source)
- lost_sources[++lost_sources.len] = AS.source_name
-
- categories[categories.len]["alarms"] += list(list(
- "name" = sanitize(A.alarm_name()),
- "origin_lost" = A.origin == null,
- "has_cameras" = cameras.len,
- "cameras" = cameras,
- "lost_sources" = lost_sources.len ? sanitize(english_list(lost_sources, nothing_text = "", and_text = ", ")) : ""))
- data["categories"] = categories
-
- return data
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index 40c08672ab2..2d5e75d6a2b 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -217,8 +217,7 @@
area = A
name = "\improper [area.name] APC"
else
- area = get_area_name(areastring)
- name = "\improper [area.name] APC"
+ name = "\improper [get_area_name(area, TRUE)] APC"
area.apc |= src
update_icon()
@@ -1189,31 +1188,31 @@
lighting = autoset(lighting, 1)
environ = autoset(environ, 1)
autoflag = 3
- if(report_power_alarm && is_station_contact(z))
- SSalarms.power_alarm.clearAlarm(loc, src)
+ if(report_power_alarm)
+ area.poweralert(TRUE, src)
else if(cell.charge < 1250 && cell.charge > 750 && longtermpower < 0) // <30%, turn off equipment
if(autoflag != 2)
equipment = autoset(equipment, 2)
lighting = autoset(lighting, 1)
environ = autoset(environ, 1)
- if(report_power_alarm && is_station_contact(z))
- SSalarms.power_alarm.triggerAlarm(loc, src)
+ if(report_power_alarm)
+ area.poweralert(FALSE, src)
autoflag = 2
else if(cell.charge < 750 && cell.charge > 10) // <15%, turn off lighting & equipment
if((autoflag > 1 && longtermpower < 0) || (autoflag > 1 && longtermpower >= 0))
equipment = autoset(equipment, 2)
lighting = autoset(lighting, 2)
environ = autoset(environ, 1)
- if(report_power_alarm && is_station_contact(z))
- SSalarms.power_alarm.triggerAlarm(loc, src)
+ if(report_power_alarm)
+ area.poweralert(FALSE, src)
autoflag = 1
else if(cell.charge <= 0) // zero charge, turn all off
if(autoflag != 0)
equipment = autoset(equipment, 0)
lighting = autoset(lighting, 0)
environ = autoset(environ, 0)
- if(report_power_alarm && is_station_contact(z))
- SSalarms.power_alarm.triggerAlarm(loc, src)
+ if(report_power_alarm)
+ area.poweralert(FALSE, src)
autoflag = 0
// now trickle-charge the cell
@@ -1268,8 +1267,8 @@
equipment = autoset(equipment, 0)
lighting = autoset(lighting, 0)
environ = autoset(environ, 0)
- if(report_power_alarm && is_station_contact(z))
- SSalarms.power_alarm.triggerAlarm(loc, src)
+ if(report_power_alarm)
+ area.poweralert(FALSE, src)
autoflag = 0
// update icon & area power if anything changed
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index b6c65d979cf..992020e7090 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -229,14 +229,15 @@ By design, d1 is the smallest direction and d2 is the highest
if(current_size >= STAGE_FIVE)
deconstruct()
-obj/structure/cable/proc/cable_color(var/colorC)
- if(colorC)
- if(colorC == "rainbow")
- color = color_rainbow()
- else
- color = colorC
+obj/structure/cable/proc/cable_color(colorC)
+ if(!colorC)
+ color = COLOR_RED
+ else if(colorC == "rainbow")
+ color = color_rainbow()
+ else if(colorC == "orange") //byond only knows 16 colors by name, and orange isn't one of them
+ color = COLOR_ORANGE
else
- color = "#DD0000"
+ color = colorC
/obj/structure/cable/proc/color_rainbow()
color = pick(COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_PINK, COLOR_YELLOW, COLOR_CYAN)
@@ -845,13 +846,15 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe("cable restrai
color = pick(COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_WHITE, COLOR_PINK, COLOR_YELLOW, COLOR_CYAN)
..()
-/obj/item/stack/cable_coil/proc/cable_color(var/colorC)
- if(colorC)
- if(colorC == "rainbow")
- colorC = color_rainbow()
- color = colorC
- else
+/obj/item/stack/cable_coil/proc/cable_color(colorC)
+ if(!colorC)
color = COLOR_RED
+ else if(colorC == "rainbow")
+ color = color_rainbow()
+ else if(colorC == "orange") //byond only knows 16 colors by name, and orange isn't one of them
+ color = COLOR_ORANGE
+ else
+ color = colorC
/obj/item/stack/cable_coil/proc/color_rainbow()
color = pick(COLOR_RED, COLOR_BLUE, COLOR_GREEN, COLOR_PINK, COLOR_YELLOW, COLOR_CYAN)
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index 3e8d71b3280..9305faf6637 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -177,6 +177,8 @@
var/nightshift_light_power = 0.45
var/nightshift_light_color = "#FFDDCC"
+ var/bulb_emergency_colour = "#FF3232" // determines the colour of the light while it's in emergency mode
+
// the smaller bulb light fixture
/obj/machinery/light/small
@@ -238,7 +240,11 @@
switch(status) // set icon_states
if(LIGHT_OK)
- icon_state = "[base_state][on]"
+ var/area/A = get_area(src)
+ if(A && A.fire)
+ icon_state = "[base_state]_emergency"
+ else
+ icon_state = "[base_state][on]"
if(LIGHT_EMPTY)
icon_state = "[base_state]-empty"
on = FALSE
@@ -260,10 +266,20 @@
on = FALSE
update_icon()
if(on)
- var/BR = nightshift_enabled ? nightshift_light_range : brightness_range
- var/PO = nightshift_enabled ? nightshift_light_power : brightness_power
- var/CO = nightshift_enabled ? nightshift_light_color : brightness_color
- var/matching = light_range == BR && light_power == PO && light_color == CO
+ var/BR = brightness_range
+ var/PO = brightness_power
+ var/CO = brightness_color
+ if(color)
+ CO = color
+ var/area/A = get_area(src)
+ if(A && A.fire)
+ CO = bulb_emergency_colour
+ else if(nightshift_enabled)
+ BR = nightshift_light_range
+ PO = nightshift_light_power
+ if(!color)
+ CO = nightshift_light_color
+ var/matching = light && BR == light.light_range && PO == light.light_power && CO == light.light_color
if(!matching)
switchcount++
if(rigged)
@@ -627,7 +643,7 @@
/obj/item/light/Crossed(mob/living/L)
if(istype(L) && has_gravity(loc))
- if(L.incorporeal_move || L.flying)
+ if(L.incorporeal_move || L.flying || L.floating)
return
playsound(loc, 'sound/effects/glass_step.ogg', 50, TRUE)
if(status == LIGHT_BURNED || status == LIGHT_OK)
diff --git a/code/modules/power/singularity/investigate.dm b/code/modules/power/singularity/investigate.dm
index 43e8c9f8a8b..4835e09411c 100644
--- a/code/modules/power/singularity/investigate.dm
+++ b/code/modules/power/singularity/investigate.dm
@@ -1,4 +1,4 @@
-/area/engine/engineering/power_alert(var/alarming)
- if(alarming)
- investigate_log("has a power alarm!","singulo")
+/area/engine/engineering/poweralert(state, source)
+ if(state != poweralm)
+ investigate_log("has a power alarm!", "singulo")
..()
diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm
index 8cb48f8e36a..c59e5890331 100644
--- a/code/modules/projectiles/ammunition/magazines.dm
+++ b/code/modules/projectiles/ammunition/magazines.dm
@@ -133,6 +133,9 @@
/obj/item/ammo_box/magazine/internal/shot/riot/short
max_ammo = 3
+/obj/item/ammo_box/magazine/internal/shot/riot/buckshot
+ ammo_type = /obj/item/ammo_casing/shotgun/buckshot
+
/obj/item/ammo_box/magazine/internal/grenadelauncher
name = "grenade launcher internal magazine"
ammo_type = /obj/item/ammo_casing/a40mm
diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm
index 25db1f10dcb..ca4499c8832 100644
--- a/code/modules/projectiles/guns/projectile.dm
+++ b/code/modules/projectiles/guns/projectile.dm
@@ -95,6 +95,7 @@
if(!user.unEquip(A))
return
to_chat(user, "You screw [S] onto [src].")
+ playsound(src, 'sound/items/screwdriver.ogg', 40, 1)
suppressed = A
S.oldsound = fire_sound
S.initial_w_class = w_class
@@ -120,6 +121,7 @@
..()
return
to_chat(user, "You unscrew [suppressed] from [src].")
+ playsound(src, 'sound/items/screwdriver.ogg', 40, 1)
user.put_in_hands(suppressed)
fire_sound = S.oldsound
w_class = S.initial_w_class
diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm
index 17a55722d2c..6c11fda5fd7 100644
--- a/code/modules/projectiles/guns/projectile/shotgun.dm
+++ b/code/modules/projectiles/guns/projectile/shotgun.dm
@@ -197,6 +197,8 @@
..()
post_sawoff()
+/obj/item/gun/projectile/shotgun/riot/buckshot //comes pre-loaded with buckshot rather than rubber
+ mag_type = /obj/item/ammo_box/magazine/internal/shot/riot/buckshot
///////////////////////
diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm
index ecf6b9887fc..e678ec43398 100755
--- a/code/modules/recycling/sortingmachinery.dm
+++ b/code/modules/recycling/sortingmachinery.dm
@@ -161,13 +161,13 @@
amount = 25
max_amount = 25
resistance_flags = FLAMMABLE
+ var/static/list/no_wrap = list(/obj/item/smallDelivery, /obj/structure/bigDelivery, /obj/item/evidencebag, /obj/structure/closet/body_bag, /obj/item/twohanded/required)
/obj/item/stack/packageWrap/afterattack(var/obj/target as obj, mob/user as mob, proximity)
if(!proximity) return
if(!istype(target)) //this really shouldn't be necessary (but it is). -Pete
return
- if(istype(target, /obj/item/smallDelivery) || istype(target,/obj/structure/bigDelivery) \
- || istype(target, /obj/item/evidencebag) || istype(target, /obj/structure/closet/body_bag))
+ if(is_type_in_list(target, no_wrap))
return
if(target.anchored)
return
diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm
index b843b2d17a2..e813597c4d8 100644
--- a/code/modules/research/designs/autolathe_designs.dm
+++ b/code/modules/research/designs/autolathe_designs.dm
@@ -543,6 +543,14 @@
build_path = /obj/item/assembly/health
category = list("initial", "Medical")
+/datum/design/stethoscope
+ name = "Stethoscope"
+ id = "stethoscope"
+ build_type = AUTOLATHE
+ materials = list(MAT_METAL = 500)
+ build_path = /obj/item/clothing/accessory/stethoscope
+ category = list("initial", "Medical")
+
/datum/design/timer
name = "Timer"
id = "timer"
diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm
index a1ea27b0592..75e64a43215 100644
--- a/code/modules/research/designs/mechfabricator_designs.dm
+++ b/code/modules/research/designs/mechfabricator_designs.dm
@@ -751,7 +751,7 @@
category = list("Exosuit Equipment")
/datum/design/mech_mining_scanner
- name = "Exosuit Engineering Equipement (Mining Scanner)"
+ name = "Exosuit Engineering Equipment (Mining Scanner)"
id = "mech_mscanner"
build_type = MECHFAB
build_path = /obj/item/mecha_parts/mecha_equipment/mining_scanner
diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm
index caa273594de..43cc010ac1c 100644
--- a/code/modules/research/experimentor.dm
+++ b/code/modules/research/experimentor.dm
@@ -291,8 +291,7 @@
for(var/turf/T in oview(1, src))
if(!T.density)
if(prob(EFFECT_PROB_VERYHIGH))
- var/obj/effect/decal/cleanable/reagentdecal = new/obj/effect/decal/cleanable/greenglow(T)
- reagentdecal.reagents.add_reagent("radium", 7)
+ new /obj/effect/decal/cleanable/greenglow(T)
if(prob(EFFECT_PROB_MEDIUM-badThingCoeff))
var/savedName = "[exp_on]"
ejectItem(TRUE)
diff --git a/code/modules/station_goals/dna_vault.dm b/code/modules/station_goals/dna_vault.dm
index db801fa5d0f..033cd9fdf94 100644
--- a/code/modules/station_goals/dna_vault.dm
+++ b/code/modules/station_goals/dna_vault.dm
@@ -7,7 +7,7 @@
#define VAULT_NOBREATH "Lung Enhancement"
#define VAULT_FIREPROOF "Thermal Regulation"
#define VAULT_STUNTIME "Neural Repathing"
-#define VAULT_ARMOUR "Bone Reinforcement"
+#define VAULT_ARMOUR "Hardened Skin"
#define VAULT_SPEED "Leg Muscle Stimulus"
#define VAULT_QUICK "Arm Muscle Stimulus"
diff --git a/code/modules/surgery/organs/helpers.dm b/code/modules/surgery/organs/helpers.dm
index ca2698f2ad4..4102319a3fe 100644
--- a/code/modules/surgery/organs/helpers.dm
+++ b/code/modules/surgery/organs/helpers.dm
@@ -104,7 +104,7 @@
/mob/living/carbon/human/get_leg_ignore()
- if(flying == 1)
+ if(flying || floating)
return TRUE
var/obj/item/tank/jetpack/J
diff --git a/goon/browserassets/css/browserOutput-dark.css b/goon/browserassets/css/browserOutput-dark.css
index 8c177840a1b..529827ad369 100644
--- a/goon/browserassets/css/browserOutput-dark.css
+++ b/goon/browserassets/css/browserOutput-dark.css
@@ -401,6 +401,10 @@ h1.alert, h2.alert {color: #FFF;}
.connectionClosed.restored {background: green;}
.internal.boldnshit {color: #6685f5; font-weight: bold;}
+.rebooting {background: #2979AF; color: white; padding: 5px;}
+.rebooting a {color: white !important; text-decoration-color: white !important;}
+#reconnectTimer {font-weight: bold;}
+
/* HELPER CLASSES */
.text-normal {font-weight: normal; font-style: normal;}
.hidden {display: none; visibility: hidden;}
diff --git a/goon/browserassets/css/browserOutput.css b/goon/browserassets/css/browserOutput.css
index 0d7d987b0e7..31da7aa96f5 100644
--- a/goon/browserassets/css/browserOutput.css
+++ b/goon/browserassets/css/browserOutput.css
@@ -400,6 +400,10 @@ h1.alert, h2.alert {color: #000000;}
.connectionClosed.restored {background: green;}
.internal.boldnshit {color: blue; font-weight: bold;}
+.rebooting {background: #2979AF; color: white; padding: 5px;}
+.rebooting a {color: white !important; text-decoration-color: white !important;}
+#reconnectTimer {font-weight: bold;}
+
/* HELPER CLASSES */
.text-normal {font-weight: normal; font-style: normal;}
.hidden {display: none; visibility: hidden;}
diff --git a/goon/browserassets/js/browserOutput.js b/goon/browserassets/js/browserOutput.js
index 3cac81ca8e2..414a5d644b6 100644
--- a/goon/browserassets/js/browserOutput.js
+++ b/goon/browserassets/js/browserOutput.js
@@ -69,10 +69,13 @@ var opts = {
'macros': {},
// Emoji toggle
- 'enableEmoji': true
+ 'enableEmoji': true,
+
+ // Reboot message stuff
+ 'rebootIntervalHandler': null
};
-var regexHasError = false; //variable to check if regex has excepted
+var regexHasError = false; //variable to check if regex has excepted
function outerHTML(el) {
var wrap = document.createElement('div');
@@ -97,10 +100,10 @@ if (typeof String.prototype.trim !== 'function') {
if (!String.prototype.includes) {
String.prototype.includes = function(search, start) {
'use strict';
-
+
if (search instanceof RegExp) {
throw TypeError('first argument must not be a RegExp');
- }
+ }
if (start === undefined) { start = 0; }
return this.indexOf(search, start) !== -1;
};
@@ -124,7 +127,7 @@ function byondDecode(message) {
// The replace for + is because FOR SOME REASON, BYOND replaces spaces with a + instead of %20, and a plus with %2b.
// Marvelous.
message = message.replace(/\+/g, "%20");
- try {
+ try {
// This is a workaround for the above not always working when BYOND's shitty url encoding breaks.
// Basically, sometimes BYOND's double encoding trick just arbitrarily produces something that makes decodeURIComponent
// throw an "Invalid Encoding URI" URIError... the simplest way to work around this is to just ignore it and use unescape instead
@@ -217,10 +220,10 @@ function highlightTerms(el) {
ind = next_tag;
}
}
-
+
element.innerHTML = s;
}
-
+
for (var i = 0; i < opts.highlightTerms.length; i++) { //Each highlight term
if(opts.highlightTerms[i]) {
if(!opts.highlightRegexEnable){
@@ -573,6 +576,34 @@ function toggleWasd(state) {
opts.wasd = (state == 'on' ? true : false);
}
+function reboot(timeRaw) {
+ var timeLeftSecs = parseInt(timeRaw);
+ const intervalSecs = 1; // tick every 1 second
+
+ rebootFinished();
+ internalOutput('', 'internal');
+
+ opts.rebootIntervalHandler = setInterval(function() {
+ timeLeftSecs -= intervalSecs;
+ if (timeLeftSecs <= 0) {
+ $("#reconnectTimer").text('Reconnecting...');
+ window.location.href = 'byond://winset?command=.reconnect';
+ clearInterval(opts.rebootIntervalHandler)
+ opts.rebootIntervalHandler = null;
+ } else {
+ $("#reconnectTimer").text('Reconnect (' + timeLeftSecs + ')');
+ }
+ }, intervalSecs * 1000);
+}
+
+function rebootFinished() {
+ if (opts.rebootIntervalHandler != null) {
+ clearInterval(opts.rebootIntervalHandler)
+ }
+ $(" Reconnected automatically!").insertBefore("#reconnectTimer");
+ $("#reconnectTimer").remove();
+}
+
/*****************************************
*
* MAKE MACRO DICTIONARY
@@ -652,7 +683,7 @@ $(function() {
'shideSpam': getCookie('hidespam'),
'darkChat': getCookie('darkChat'),
};
-
+
if (savedConfig.sfontSize) {
$messages.css('font-size', savedConfig.sfontSize);
internalOutput('Loaded font size setting of: '+savedConfig.sfontSize+'', 'internal');
@@ -1010,18 +1041,18 @@ $(function() {
} else {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
-
+
// synchronous requests are depricated in modern browsers
- xmlHttp.open('GET', 'browserOutput.css', true);
+ xmlHttp.open('GET', 'browserOutput.css', true);
xmlHttp.onload = function (e) {
if (xmlHttp.status === 200) { // request successful
-
+
// Generate Log
var saved = '';
saved += $messages.html();
saved = saved.replace(/&/g, '&');
saved = saved.replace(/Chat Log \
'+
@@ -1031,7 +1062,7 @@ $(function() {
openWindow('Style Doc Retrieve Error: '+xmlHttp.statusText);
}
}
-
+
// timeout and request errors
xmlHttp.timeout = 300;
xmlHttp.ontimeout = function (e) {
diff --git a/goon/code/datums/browserOutput.dm b/goon/code/datums/browserOutput.dm
index 74c9d844728..b073bece409 100644
--- a/goon/code/datums/browserOutput.dm
+++ b/goon/code/datums/browserOutput.dm
@@ -109,6 +109,7 @@ var/list/chatResources = list(
loaded = TRUE
winset(owner, "browseroutput", "is-disabled=false")
+ owner << output(null, "browseroutput:rebootFinished")
if(owner.holder)
loadAdmin()
for(var/message in messageQueue)
@@ -245,8 +246,8 @@ var/list/chatResources = list(
var/to_chat_filename
var/to_chat_line
var/to_chat_src
-// Call using macro: to_chat(target, message, flag)
-/proc/to_chat_immediate(target, message, flag)
+
+/proc/to_chat(target, message, flag)
if(!is_valid_tochat_message(message) || !is_valid_tochat_target(target))
target << message
@@ -304,17 +305,4 @@ var/to_chat_src
target << output(output_message, "browseroutput:output")
-/proc/to_chat(target, message, flag)
- /*
- If any of the following conditions are met, do NOT use SSchat. These conditions include:
- - Is the MC still initializing?
- - Has SSchat initialized?
- - Has SSchat been offlined due to MC crashes?
- If any of these are met, use the old chat system, otherwise people wont see messages
- */
- if(Master.current_runlevel == RUNLEVEL_INIT || !SSchat?.initialized || SSchat?.flags & SS_NO_FIRE)
- to_chat_immediate(target, message, flag)
- return
- SSchat.queue(target, message, flag)
-
#undef MAX_COOKIE_LENGTH
diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi
index 5200ad72e5a..1bd516110e5 100644
Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ
diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi
index a378d2e5b04..b2f1bfa90c6 100644
Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ
diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi
index 0a8847d7e4a..a7772c3ebf4 100644
Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ
diff --git a/icons/mob/species/drask/head.dmi b/icons/mob/species/drask/head.dmi
index b9f0604c960..f0c888e9f68 100644
Binary files a/icons/mob/species/drask/head.dmi and b/icons/mob/species/drask/head.dmi differ
diff --git a/icons/mob/species/drask/suit.dmi b/icons/mob/species/drask/suit.dmi
index d75a28f2bee..cef6dbdf836 100644
Binary files a/icons/mob/species/drask/suit.dmi and b/icons/mob/species/drask/suit.dmi differ
diff --git a/icons/mob/species/grey/head.dmi b/icons/mob/species/grey/head.dmi
index 4ff783bbb74..c059a3bff9d 100644
Binary files a/icons/mob/species/grey/head.dmi and b/icons/mob/species/grey/head.dmi differ
diff --git a/icons/mob/species/grey/mask.dmi b/icons/mob/species/grey/mask.dmi
index cbbd722ae69..348a39c0f03 100644
Binary files a/icons/mob/species/grey/mask.dmi and b/icons/mob/species/grey/mask.dmi differ
diff --git a/icons/mob/species/grey/suit.dmi b/icons/mob/species/grey/suit.dmi
index 3070f6627ea..c22c9daf3dd 100644
Binary files a/icons/mob/species/grey/suit.dmi and b/icons/mob/species/grey/suit.dmi differ
diff --git a/icons/mob/species/grey/uniform.dmi b/icons/mob/species/grey/uniform.dmi
index c956187ffa1..7a74f930598 100644
Binary files a/icons/mob/species/grey/uniform.dmi and b/icons/mob/species/grey/uniform.dmi differ
diff --git a/icons/mob/species/skrell/helmet.dmi b/icons/mob/species/skrell/helmet.dmi
index ef05daf5115..e54cdb52d0f 100644
Binary files a/icons/mob/species/skrell/helmet.dmi and b/icons/mob/species/skrell/helmet.dmi differ
diff --git a/icons/mob/species/vox/head.dmi b/icons/mob/species/vox/head.dmi
index 6c4b2b43f6a..fb5d153d30d 100644
Binary files a/icons/mob/species/vox/head.dmi and b/icons/mob/species/vox/head.dmi differ
diff --git a/icons/mob/species/vox/suit.dmi b/icons/mob/species/vox/suit.dmi
index 827b67b4332..4161227ac79 100644
Binary files a/icons/mob/species/vox/suit.dmi and b/icons/mob/species/vox/suit.dmi differ
diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi
index 26c2a7ea734..12a0a371a94 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ
diff --git a/icons/obj/atmospherics/blue_pipe_tank.dmi b/icons/obj/atmospherics/blue_pipe_tank.dmi
deleted file mode 100644
index 3d2ee4c9d69..00000000000
Binary files a/icons/obj/atmospherics/blue_pipe_tank.dmi and /dev/null differ
diff --git a/icons/obj/atmospherics/digital_valve.dmi b/icons/obj/atmospherics/digital_valve.dmi
deleted file mode 100644
index 136523b7223..00000000000
Binary files a/icons/obj/atmospherics/digital_valve.dmi and /dev/null differ
diff --git a/icons/obj/atmospherics/dp_vent_pump.dmi b/icons/obj/atmospherics/dp_vent_pump.dmi
deleted file mode 100644
index 86dae2cf435..00000000000
Binary files a/icons/obj/atmospherics/dp_vent_pump.dmi and /dev/null differ
diff --git a/icons/obj/atmospherics/filter.dmi b/icons/obj/atmospherics/filter.dmi
deleted file mode 100644
index 99afb55d22b..00000000000
Binary files a/icons/obj/atmospherics/filter.dmi and /dev/null differ
diff --git a/icons/obj/atmospherics/mainspipe.dmi b/icons/obj/atmospherics/mainspipe.dmi
deleted file mode 100644
index df6c2bc0d3a..00000000000
Binary files a/icons/obj/atmospherics/mainspipe.dmi and /dev/null differ
diff --git a/icons/obj/atmospherics/n2o_pipe_tank.dmi b/icons/obj/atmospherics/n2o_pipe_tank.dmi
deleted file mode 100644
index 40efbd9f15d..00000000000
Binary files a/icons/obj/atmospherics/n2o_pipe_tank.dmi and /dev/null differ
diff --git a/icons/obj/atmospherics/omni_devices.dmi b/icons/obj/atmospherics/omni_devices.dmi
deleted file mode 100644
index 44497310026..00000000000
Binary files a/icons/obj/atmospherics/omni_devices.dmi and /dev/null differ
diff --git a/icons/obj/atmospherics/orange_pipe_tank.dmi b/icons/obj/atmospherics/orange_pipe_tank.dmi
deleted file mode 100644
index cc9442b8033..00000000000
Binary files a/icons/obj/atmospherics/orange_pipe_tank.dmi and /dev/null differ
diff --git a/icons/obj/atmospherics/passive_gate.dmi b/icons/obj/atmospherics/passive_gate.dmi
deleted file mode 100644
index 42e8c9dc74f..00000000000
Binary files a/icons/obj/atmospherics/passive_gate.dmi and /dev/null differ
diff --git a/icons/obj/atmospherics/pipe_manifold.dmi b/icons/obj/atmospherics/pipe_manifold.dmi
deleted file mode 100644
index 1e6f5750d1b..00000000000
Binary files a/icons/obj/atmospherics/pipe_manifold.dmi and /dev/null differ
diff --git a/icons/obj/atmospherics/pipe_tank.dmi b/icons/obj/atmospherics/pipe_tank.dmi
deleted file mode 100644
index 72310a2657d..00000000000
Binary files a/icons/obj/atmospherics/pipe_tank.dmi and /dev/null differ
diff --git a/icons/obj/atmospherics/pipe_vent.dmi b/icons/obj/atmospherics/pipe_vent.dmi
deleted file mode 100644
index e40f5946cf8..00000000000
Binary files a/icons/obj/atmospherics/pipe_vent.dmi and /dev/null differ
diff --git a/icons/obj/atmospherics/portables_connector.dmi b/icons/obj/atmospherics/portables_connector.dmi
deleted file mode 100644
index c651b959990..00000000000
Binary files a/icons/obj/atmospherics/portables_connector.dmi and /dev/null differ
diff --git a/icons/obj/atmospherics/pump.dmi b/icons/obj/atmospherics/pump.dmi
deleted file mode 100644
index e44a21991ba..00000000000
Binary files a/icons/obj/atmospherics/pump.dmi and /dev/null differ
diff --git a/icons/obj/atmospherics/red_orange_pipe_tank.dmi b/icons/obj/atmospherics/red_orange_pipe_tank.dmi
deleted file mode 100644
index 1770c46312a..00000000000
Binary files a/icons/obj/atmospherics/red_orange_pipe_tank.dmi and /dev/null differ
diff --git a/icons/obj/atmospherics/red_pipe_tank.dmi b/icons/obj/atmospherics/red_pipe_tank.dmi
deleted file mode 100644
index 3fedc659e03..00000000000
Binary files a/icons/obj/atmospherics/red_pipe_tank.dmi and /dev/null differ
diff --git a/icons/obj/atmospherics/relief_valve.dmi b/icons/obj/atmospherics/relief_valve.dmi
deleted file mode 100644
index 485bf792b19..00000000000
Binary files a/icons/obj/atmospherics/relief_valve.dmi and /dev/null differ
diff --git a/icons/obj/atmospherics/valve.dmi b/icons/obj/atmospherics/valve.dmi
deleted file mode 100644
index 9ce45199bd7..00000000000
Binary files a/icons/obj/atmospherics/valve.dmi and /dev/null differ
diff --git a/icons/obj/atmospherics/vent_pump.dmi b/icons/obj/atmospherics/vent_pump.dmi
deleted file mode 100644
index 6b1f57baa44..00000000000
Binary files a/icons/obj/atmospherics/vent_pump.dmi and /dev/null differ
diff --git a/icons/obj/atmospherics/vent_scrubber.dmi b/icons/obj/atmospherics/vent_scrubber.dmi
deleted file mode 100644
index 7133072cd79..00000000000
Binary files a/icons/obj/atmospherics/vent_scrubber.dmi and /dev/null differ
diff --git a/icons/obj/atmospherics/volume_pump.dmi b/icons/obj/atmospherics/volume_pump.dmi
deleted file mode 100644
index e3ff3cf9854..00000000000
Binary files a/icons/obj/atmospherics/volume_pump.dmi and /dev/null differ
diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi
index 1847e985d89..3f66fa90cd6 100644
Binary files a/icons/obj/bureaucracy.dmi and b/icons/obj/bureaucracy.dmi differ
diff --git a/icons/obj/cigarettes.dmi b/icons/obj/cigarettes.dmi
index a0133e5b383..97710ac4805 100644
Binary files a/icons/obj/cigarettes.dmi and b/icons/obj/cigarettes.dmi differ
diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi
index c9ebceba369..30f34f01b4f 100644
Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index acb6af50d18..62fc0a6120c 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ
diff --git a/icons/obj/decals.dmi b/icons/obj/decals.dmi
index 7351c8c7483..35ce076db6c 100644
Binary files a/icons/obj/decals.dmi and b/icons/obj/decals.dmi differ
diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi
index a82f3fa10a2..e30f3e44392 100644
Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ
diff --git a/icons/obj/lighting.dmi b/icons/obj/lighting.dmi
index f8943c2c39b..49b594c1656 100644
Binary files a/icons/obj/lighting.dmi and b/icons/obj/lighting.dmi differ
diff --git a/icons/obj/paper.dmi b/icons/obj/paper.dmi
deleted file mode 100644
index 55781076833..00000000000
Binary files a/icons/obj/paper.dmi and /dev/null differ
diff --git a/icons/obj/reagentfillings.dmi b/icons/obj/reagentfillings.dmi
index 60eb897b2b1..51e9b66ee30 100644
Binary files a/icons/obj/reagentfillings.dmi and b/icons/obj/reagentfillings.dmi differ
diff --git a/icons/obj/recycling.dmi b/icons/obj/recycling.dmi
index 2a47e6817bb..c30eb425dda 100644
Binary files a/icons/obj/recycling.dmi and b/icons/obj/recycling.dmi differ
diff --git a/icons/obj/toy.dmi b/icons/obj/toy.dmi
index 1ef7016307d..c51d2903b14 100644
Binary files a/icons/obj/toy.dmi and b/icons/obj/toy.dmi differ
diff --git a/nano/templates/alarm_monitor.tmpl b/nano/templates/alarm_monitor.tmpl
deleted file mode 100644
index 5dae051a576..00000000000
--- a/nano/templates/alarm_monitor.tmpl
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-{{for data.categories}}
- {{:value.category}}
- {{for value.alarms :alarmValue:alarmIndex}}
- {{if alarmValue.origin_lost}}
- {{:alarmValue.name}} Alarm Origin Lost
- {{else}}
- {{:alarmValue.name}}
- {{/if}}
- {{if alarmValue.has_cameras || alarmValue.lost_sources != ""}}
-
- {{if alarmValue.has_cameras}}
-
- {{for alarmValue.cameras :cameraValue:cameraIndex}}
- {{if cameraValue.deact}}
- {{:helper.link(cameraValue.name + " (deactivated)", '', {}, 'inactive')}}
- {{else}}
- {{:helper.link(cameraValue.name, '', {'switchTo' : cameraValue.camera})}}
- {{/if}}
- {{/for}}
-
- {{else}}
- No cameras found.
- {{/if}}
- {{if alarmValue.lost_sources != ""}}
-
- Lost Alarm Sources: {{:alarmValue.lost_sources}}
-
- {{/if}}
-
- {{/if}}
- {{empty}}
- --All Systems Nominal
- {{/for}}
-{{/for}}
\ No newline at end of file
diff --git a/nano/templates/atmos_alert.tmpl b/nano/templates/atmos_alert.tmpl
deleted file mode 100644
index bdb6c2c872b..00000000000
--- a/nano/templates/atmos_alert.tmpl
+++ /dev/null
@@ -1,18 +0,0 @@
-Priority Alerts
-{{for data.priority_alarms}}
-
- {{:value.name}} {{:helper.link('Reset', null, {'clear_alarm' : value.ref})}}
-
-{{empty}}
- No priority alerts detected.
-{{/for}}
-
-Minor Alerts
-{{for data.minor_alarms}}
-
- {{:value.name}} {{:helper.link('Reset', null, {'clear_alarm' : value.ref})}}
-
-{{empty}}
- No minor alerts detected.
-{{/for}}
-
diff --git a/paradise.dme b/paradise.dme
index 215328b0b81..644b3583414 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -216,7 +216,6 @@
#include "code\controllers\subsystem\assets.dm"
#include "code\controllers\subsystem\atoms.dm"
#include "code\controllers\subsystem\changelog.dm"
-#include "code\controllers\subsystem\chat.dm"
#include "code\controllers\subsystem\events.dm"
#include "code\controllers\subsystem\fires.dm"
#include "code\controllers\subsystem\garbage.dm"
@@ -1244,14 +1243,6 @@
#include "code\modules\admin\verbs\SDQL2\SDQL_2.dm"
#include "code\modules\admin\verbs\SDQL2\SDQL_2_parser.dm"
#include "code\modules\admin\verbs\SDQL2\useful_procs.dm"
-#include "code\modules\alarm\alarm.dm"
-#include "code\modules\alarm\alarm_handler.dm"
-#include "code\modules\alarm\atmosphere_alarm.dm"
-#include "code\modules\alarm\burglar_alarm.dm"
-#include "code\modules\alarm\camera_alarm.dm"
-#include "code\modules\alarm\fire_alarm.dm"
-#include "code\modules\alarm\motion_alarm.dm"
-#include "code\modules\alarm\power_alarm.dm"
#include "code\modules\antagonists\_common\antag_datum.dm"
#include "code\modules\antagonists\_common\antag_helpers.dm"
#include "code\modules\antagonists\_common\antag_hud.dm"
@@ -2069,7 +2060,6 @@
#include "code\modules\modular_computers\file_system\programs\antagonist\revelation.dm"
#include "code\modules\modular_computers\file_system\programs\command\card.dm"
#include "code\modules\modular_computers\file_system\programs\command\comms.dm"
-#include "code\modules\modular_computers\file_system\programs\engineering\alarm.dm"
#include "code\modules\modular_computers\file_system\programs\engineering\power_monitor.dm"
#include "code\modules\modular_computers\file_system\programs\engineering\sm_monitor.dm"
#include "code\modules\modular_computers\file_system\programs\generic\configurator.dm"
@@ -2107,7 +2097,6 @@
#include "code\modules\nano\interaction\physical.dm"
#include "code\modules\nano\interaction\self.dm"
#include "code\modules\nano\interaction\zlevel.dm"
-#include "code\modules\nano\modules\alarm_monitor.dm"
#include "code\modules\nano\modules\atmos_control.dm"
#include "code\modules\nano\modules\ert_manager.dm"
#include "code\modules\nano\modules\human_appearance.dm"
diff --git a/sound/music/thunderdome.ogg b/sound/music/thunderdome.ogg
index 26b18df5e05..82780e416d4 100644
Binary files a/sound/music/thunderdome.ogg and b/sound/music/thunderdome.ogg differ
diff --git a/tgui/packages/tgui/interfaces/AtmosAlertConsole.js b/tgui/packages/tgui/interfaces/AtmosAlertConsole.js
new file mode 100644
index 00000000000..8db992f61b5
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/AtmosAlertConsole.js
@@ -0,0 +1,47 @@
+import { useBackend } from '../backend';
+import { Button, Section } from '../components';
+import { Window } from '../layouts';
+
+export const AtmosAlertConsole = (props, context) => {
+ const { act, data } = useBackend(context);
+ const priorityAlerts = data.priority || [];
+ const minorAlerts = data.minor || [];
+ return (
+
+
+
+
+ {priorityAlerts.length === 0 && (
+ -
+ No Priority Alerts
+
+ )}
+ {priorityAlerts.map(alert => (
+ -
+
+ ))}
+ {minorAlerts.length === 0 && (
+ -
+ No Minor Alerts
+
+ )}
+ {minorAlerts.map(alert => (
+ -
+
+ ))}
+
+
+
+
+ );
+};
diff --git a/tgui/packages/tgui/interfaces/NtosStationAlertConsole.js b/tgui/packages/tgui/interfaces/NtosStationAlertConsole.js
new file mode 100644
index 00000000000..67fdbcc9361
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/NtosStationAlertConsole.js
@@ -0,0 +1,12 @@
+import { NtosWindow } from '../layouts';
+import { StationAlertConsoleContent } from './StationAlertConsole';
+
+export const NtosStationAlertConsole = () => {
+ return (
+
+
+
+
+
+ );
+};
diff --git a/tgui/packages/tgui/interfaces/StationAlertConsole.js b/tgui/packages/tgui/interfaces/StationAlertConsole.js
new file mode 100644
index 00000000000..504467f9850
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/StationAlertConsole.js
@@ -0,0 +1,68 @@
+import { Fragment } from 'inferno';
+import { useBackend } from '../backend';
+import { Section } from '../components';
+import { Window } from '../layouts';
+
+export const StationAlertConsole = () => {
+ return (
+
+
+
+
+
+ );
+};
+
+export const StationAlertConsoleContent = (props, context) => {
+ const { data } = useBackend(context);
+ const categories = data.alarms || [];
+ const fire = categories['Fire'] || [];
+ const atmos = categories['Atmosphere'] || [];
+ const power = categories['Power'] || [];
+ return (
+
+
+
+ {fire.length === 0 && (
+ -
+ Systems Nominal
+
+ )}
+ {fire.map(alert => (
+ -
+ {alert}
+
+ ))}
+
+
+
+
+ {atmos.length === 0 && (
+ -
+ Systems Nominal
+
+ )}
+ {atmos.map(alert => (
+ -
+ {alert}
+
+ ))}
+
+
+
+
+ {power.length === 0 && (
+ -
+ Systems Nominal
+
+ )}
+ {power.map(alert => (
+ -
+ {alert}
+
+ ))}
+
+
+
+ );
+};
diff --git a/tgui/packages/tgui/public/tgui.bundle.js b/tgui/packages/tgui/public/tgui.bundle.js
index f01e7c45296..9a1a4bdf420 100644
--- a/tgui/packages/tgui/public/tgui.bundle.js
+++ b/tgui/packages/tgui/public/tgui.bundle.js
@@ -1,5 +1,5 @@
-!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=167)}([function(e,t,n){"use strict";var r=n(2),o=n(16).f,i=n(25),a=n(18),u=n(85),c=n(125),s=n(59);e.exports=function(e,t){var n,l,f,d,p,h=e.target,v=e.global,g=e.stat;if(n=v?r:g?r[h]||u(h,{}):(r[h]||{}).prototype)for(l in t){if(d=t[l],f=e.noTargetGet?(p=o(n,l))&&p.value:n[l],!s(v?l:h+(g?".":"#")+l,e.forced)&&f!==undefined){if(typeof d==typeof f)continue;c(d,f)}(e.sham||f&&f.sham)&&i(d,"sham",!0),a(n,l,d,e)}}},function(e,t,n){"use strict";e.exports=function(e){try{return!!e()}catch(t){return!0}}},function(e,t,n){"use strict";(function(t){var n=function(e){return e&&e.Math==Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof t&&t)||Function("return this")()}).call(this,n(121))},function(e,t,n){"use strict";t.__esModule=!0;var r=n(382);Object.keys(r).forEach((function(e){"default"!==e&&"__esModule"!==e&&(t[e]=r[e])}))},function(e,t,n){"use strict";e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){"use strict";var r=n(1);e.exports=!r((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},function(e,t,n){"use strict";var r=n(4);e.exports=function(e){if(!r(e))throw TypeError(String(e)+" is not an object");return e}},function(e,t,n){"use strict";var r,o=n(99),i=n(5),a=n(2),u=n(4),c=n(14),s=n(71),l=n(25),f=n(18),d=n(11).f,p=n(31),h=n(46),v=n(10),g=n(56),m=a.Int8Array,y=m&&m.prototype,b=a.Uint8ClampedArray,_=b&&b.prototype,w=m&&p(m),x=y&&p(y),E=Object.prototype,C=E.isPrototypeOf,S=v("toStringTag"),N=g("TYPED_ARRAY_TAG"),k=o&&!!h&&"Opera"!==s(a.opera),O=!1,A={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},I=function(e){var t=s(e);return"DataView"===t||c(A,t)},T=function(e){return u(e)&&c(A,s(e))};for(r in A)a[r]||(k=!1);if((!k||"function"!=typeof w||w===Function.prototype)&&(w=function(){throw TypeError("Incorrect invocation")},k))for(r in A)a[r]&&h(a[r],w);if((!k||!x||x===E)&&(x=w.prototype,k))for(r in A)a[r]&&h(a[r].prototype,x);if(k&&p(_)!==x&&h(_,x),i&&!c(x,S))for(r in O=!0,d(x,S,{get:function(){return u(this)?this[N]:undefined}}),A)a[r]&&l(a[r],N,r);e.exports={NATIVE_ARRAY_BUFFER_VIEWS:k,TYPED_ARRAY_TAG:O&&N,aTypedArray:function(e){if(T(e))return e;throw TypeError("Target is not a typed array")},aTypedArrayConstructor:function(e){if(h){if(C.call(w,e))return e}else for(var t in A)if(c(A,r)){var n=a[t];if(n&&(e===n||C.call(n,e)))return e}throw TypeError("Target is not a typed array constructor")},exportTypedArrayMethod:function(e,t,n){if(i){if(n)for(var r in A){var o=a[r];o&&c(o.prototype,e)&&delete o.prototype[e]}x[e]&&!n||f(x,e,n?t:k&&y[e]||t)}},exportTypedArrayStaticMethod:function(e,t,n){var r,o;if(i){if(h){if(n)for(r in A)(o=a[r])&&c(o,e)&&delete o[e];if(w[e]&&!n)return;try{return f(w,e,n?t:k&&m[e]||t)}catch(u){}}for(r in A)!(o=a[r])||o[e]&&!n||f(o,e,t)}},isView:I,isTypedArray:T,TypedArray:w,TypedArrayPrototype:x}},function(e,t,n){"use strict";var r=n(26),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t,n){"use strict";t.__esModule=!0,t.isFalsy=t.pureComponentHooks=t.shallowDiffers=t.normalizeChildren=t.classes=void 0;t.classes=function(e){for(var t="",n=0;n0&&(t.style=c),t};t.computeBoxProps=g;var m=function(e){var t=e.textColor||e.color,n=e.backgroundColor;return(0,r.classes)([s(t)&&"color-"+t,s(n)&&"color-bg-"+n])};t.computeBoxClassName=m;var y=function(e){var t=e.as,n=void 0===t?"div":t,r=e.className,a=e.children,u=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["as","className","children"]);if("function"==typeof a)return a(g(e));var c="string"==typeof r?r+" "+m(u):m(u),s=g(u);return(0,o.createVNode)(i.VNodeFlags.HtmlElement,n,c,a,i.ChildFlags.UnknownChildren,s)};t.Box=y,y.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";var r={}.hasOwnProperty;e.exports=function(e,t){return r.call(e,t)}},function(e,t,n){"use strict";var r=n(44),o=n(55),i=n(12),a=n(8),u=n(61),c=[].push,s=function(e){var t=1==e,n=2==e,s=3==e,l=4==e,f=6==e,d=5==e||f;return function(p,h,v,g){for(var m,y,b=i(p),_=o(b),w=r(h,v,3),x=a(_.length),E=0,C=g||u,S=t?C(p,x):n?C(p,0):undefined;x>E;E++)if((d||E in _)&&(y=w(m=_[E],E,b),e))if(t)S[E]=y;else if(y)switch(e){case 3:return!0;case 5:return m;case 6:return E;case 2:c.call(S,m)}else if(l)return!1;return f?-1:s||l?l:S}};e.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6)}},function(e,t,n){"use strict";var r=n(5),o=n(68),i=n(42),a=n(21),u=n(29),c=n(14),s=n(122),l=Object.getOwnPropertyDescriptor;t.f=r?l:function(e,t){if(e=a(e),t=u(t,!0),s)try{return l(e,t)}catch(n){}if(c(e,t))return i(!o.f.call(e,t),e[t])}},function(e,t,n){"use strict";e.exports=function(e){if(e==undefined)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){"use strict";var r=n(2),o=n(25),i=n(14),a=n(85),u=n(86),c=n(30),s=c.get,l=c.enforce,f=String(String).split("String");(e.exports=function(e,t,n,u){var c=!!u&&!!u.unsafe,s=!!u&&!!u.enumerable,d=!!u&&!!u.noTargetGet;"function"==typeof n&&("string"!=typeof t||i(n,"name")||o(n,"name",t),l(n).source=f.join("string"==typeof t?t:"")),e!==r?(c?!d&&e[t]&&(s=!0):delete e[t],s?e[t]=n:o(e,t,n)):s?e[t]=n:a(t,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&s(this).source||u(this)}))},function(e,t,n){"use strict";var r=n(5),o=n(1),i=n(14),a=Object.defineProperty,u={},c=function(e){throw e};e.exports=function(e,t){if(i(u,e))return u[e];t||(t={});var n=[][e],s=!!i(t,"ACCESSORS")&&t.ACCESSORS,l=i(t,0)?t[0]:c,f=i(t,1)?t[1]:undefined;return u[e]=!!n&&!o((function(){if(s&&!r)return!0;var e={length:-1};s?a(e,1,{enumerable:!0,get:c}):e[1]=1,n.call(e,l,f)}))}},function(e,t,n){"use strict";function r(e,t,n,r,o,i,a){try{var u=e[i](a),c=u.value}catch(s){return void n(s)}u.done?t(c):Promise.resolve(c).then(r,o)}t.__esModule=!0,t.winset=t.winget=t.runCommand=t.callByondAsync=t.callByond=t.IS_IE8=void 0;var o=window.Byond,i=function(){var e=navigator.userAgent.match(/Trident\/(\d+).+?;/i);if(!e)return null;var t=e[1];return t?parseInt(t,10):null}(),a=null!==i&&i<=6;t.IS_IE8=a;var u=function(e,t){void 0===t&&(t={}),o.call(e,t)};t.callByond=u;var c=function(e,t){void 0===t&&(t={}),window.__callbacks__=window.__callbacks__||[];var n=window.__callbacks__.length,r=new Promise((function(e){window.__callbacks__.push(e)}));return o.call(e,Object.assign({},t,{callback:"__callbacks__["+n+"]"})),r};t.callByondAsync=c;t.runCommand=function(e){return u("winset",{command:e})};var s=function(){var e,t=(e=regeneratorRuntime.mark((function n(e,t){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,c("winget",{id:e,property:t});case 2:return r=n.sent,n.abrupt("return",r[t]);case 4:case"end":return n.stop()}}),n)})),function(){var t=this,n=arguments;return new Promise((function(o,i){var a=e.apply(t,n);function u(e){r(a,o,i,u,c,"next",e)}function c(e){r(a,o,i,u,c,"throw",e)}u(undefined)}))});return function(e,n){return t.apply(this,arguments)}}();t.winget=s;t.winset=function(e,t,n){var r;return u("winset",((r={})[e+"."+t]=n,r))}},function(e,t,n){"use strict";var r=n(55),o=n(17);e.exports=function(e){return r(o(e))}},function(e,t,n){"use strict";var r=n(126),o=n(14),i=n(132),a=n(11).f;e.exports=function(e){var t=r.Symbol||(r.Symbol={});o(t,e)||a(t,e,{value:i.f(e)})}},function(e,t,n){"use strict";var r=n(17),o=/"/g;e.exports=function(e,t,n,i){var a=String(r(e)),u="<"+t;return""!==n&&(u+=" "+n+'="'+String(i).replace(o,""")+'"'),u+">"+a+""+t+">"}},function(e,t,n){"use strict";var r=n(1);e.exports=function(e){return r((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}))}},function(e,t,n){"use strict";var r=n(5),o=n(11),i=n(42);e.exports=r?function(e,t,n){return o.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){"use strict";var r=Math.ceil,o=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?o:r)(e)}},function(e,t,n){"use strict";e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},function(e,t,n){"use strict";var r={}.toString;e.exports=function(e){return r.call(e).slice(8,-1)}},function(e,t,n){"use strict";var r=n(4);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){"use strict";var r,o,i,a=n(124),u=n(2),c=n(4),s=n(25),l=n(14),f=n(69),d=n(57),p=u.WeakMap;if(a){var h=new p,v=h.get,g=h.has,m=h.set;r=function(e,t){return m.call(h,e,t),t},o=function(e){return v.call(h,e)||{}},i=function(e){return g.call(h,e)}}else{var y=f("state");d[y]=!0,r=function(e,t){return s(e,y,t),t},o=function(e){return l(e,y)?e[y]:{}},i=function(e){return l(e,y)}}e.exports={set:r,get:o,has:i,enforce:function(e){return i(e)?o(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!c(t)||(n=o(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},function(e,t,n){"use strict";var r=n(14),o=n(12),i=n(69),a=n(98),u=i("IE_PROTO"),c=Object.prototype;e.exports=a?Object.getPrototypeOf:function(e){return e=o(e),r(e,u)?e[u]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?c:null}},function(e,t,n){"use strict";var r=n(126),o=n(2),i=function(e){return"function"==typeof e?e:undefined};e.exports=function(e,t){return arguments.length<2?i(r[e])||i(o[e]):r[e]&&r[e][t]||o[e]&&o[e][t]}},function(e,t,n){"use strict";e.exports=!1},function(e,t,n){"use strict";var r=n(1);e.exports=function(e,t){var n=[][e];return!!n&&r((function(){n.call(null,t||function(){throw 1},1)}))}},function(e,t,n){"use strict";var r=n(0),o=n(2),i=n(5),a=n(111),u=n(7),c=n(74),s=n(50),l=n(42),f=n(25),d=n(8),p=n(140),h=n(155),v=n(29),g=n(14),m=n(71),y=n(4),b=n(37),_=n(46),w=n(43).f,x=n(156),E=n(15).forEach,C=n(49),S=n(11),N=n(16),k=n(30),O=n(76),A=k.get,I=k.set,T=S.f,M=N.f,V=Math.round,L=o.RangeError,P=c.ArrayBuffer,j=c.DataView,B=u.NATIVE_ARRAY_BUFFER_VIEWS,R=u.TYPED_ARRAY_TAG,F=u.TypedArray,D=u.TypedArrayPrototype,K=u.aTypedArrayConstructor,z=u.isTypedArray,U=function(e,t){for(var n=0,r=t.length,o=new(K(e))(r);r>n;)o[n]=t[n++];return o},Y=function(e,t){T(e,t,{get:function(){return A(this)[t]}})},H=function(e){var t;return e instanceof P||"ArrayBuffer"==(t=m(e))||"SharedArrayBuffer"==t},W=function(e,t){return z(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},$=function(e,t){return W(e,t=v(t,!0))?l(2,e[t]):M(e,t)},G=function(e,t,n){return!(W(e,t=v(t,!0))&&y(n)&&g(n,"value"))||g(n,"get")||g(n,"set")||n.configurable||g(n,"writable")&&!n.writable||g(n,"enumerable")&&!n.enumerable?T(e,t,n):(e[t]=n.value,e)};i?(B||(N.f=$,S.f=G,Y(D,"buffer"),Y(D,"byteOffset"),Y(D,"byteLength"),Y(D,"length")),r({target:"Object",stat:!0,forced:!B},{getOwnPropertyDescriptor:$,defineProperty:G}),e.exports=function(e,t,n){var i=e.match(/\d+$/)[0]/8,u=e+(n?"Clamped":"")+"Array",c="get"+e,l="set"+e,v=o[u],g=v,m=g&&g.prototype,S={},N=function(e,t){T(e,t,{get:function(){return function(e,t){var n=A(e);return n.view[c](t*i+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var o=A(e);n&&(r=(r=V(r))<0?0:r>255?255:255&r),o.view[l](t*i+o.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};B?a&&(g=t((function(e,t,n,r){return s(e,g,u),O(y(t)?H(t)?r!==undefined?new v(t,h(n,i),r):n!==undefined?new v(t,h(n,i)):new v(t):z(t)?U(g,t):x.call(g,t):new v(p(t)),e,g)})),_&&_(g,F),E(w(v),(function(e){e in g||f(g,e,v[e])})),g.prototype=m):(g=t((function(e,t,n,r){s(e,g,u);var o,a,c,l=0,f=0;if(y(t)){if(!H(t))return z(t)?U(g,t):x.call(g,t);o=t,f=h(n,i);var v=t.byteLength;if(r===undefined){if(v%i)throw L("Wrong length");if((a=v-f)<0)throw L("Wrong length")}else if((a=d(r)*i)+f>v)throw L("Wrong length");c=a/i}else c=p(t),o=new P(a=c*i);for(I(e,{buffer:o,byteOffset:f,byteLength:a,length:c,view:new j(o)});l"+e+"<\/script>"},h=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(o){}var e,t;h=r?function(e){e.write(p("")),e.close();var t=e.parentWindow.Object;return e=null,t}(r):((t=s("iframe")).style.display="none",c.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(p("document.F=Object")),e.close(),e.F);for(var n=a.length;n--;)delete h.prototype[a[n]];return h()};u[f]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(d.prototype=o(e),n=new d,d.prototype=null,n[f]=e):n=h(),t===undefined?n:i(n,t)}},function(e,t,n){"use strict";var r=n(11).f,o=n(14),i=n(10)("toStringTag");e.exports=function(e,t,n){e&&!o(e=n?e:e.prototype,i)&&r(e,i,{configurable:!0,value:t})}},function(e,t,n){"use strict";var r=n(10),o=n(37),i=n(11),a=r("unscopables"),u=Array.prototype;u[a]==undefined&&i.f(u,a,{configurable:!0,value:o(null)}),e.exports=function(e){u[a][e]=!0}},function(e,t,n){"use strict";var r=n(6),o=n(27),i=n(10)("species");e.exports=function(e,t){var n,a=r(e).constructor;return a===undefined||(n=r(a)[i])==undefined?t:o(n)}},function(e,t,n){"use strict";t.__esModule=!0,t.useSharedState=t.useLocalState=t.useBackend=t.backendReducer=t.backendSetSharedState=t.backendUpdate=void 0;var r=n(112),o=n(20);t.backendUpdate=function(e){return{type:"backend/update",payload:e}};var i=function(e,t){return{type:"backend/setSharedState",payload:{key:e,nextState:t}}};t.backendSetSharedState=i;t.backendReducer=function(e,t){var n=t.type,o=t.payload;if("backend/update"===n){var i=Object.assign({},e.config,{},o.config),a=Object.assign({},e.data,{},o.static_data,{},o.data),u=Object.assign({},e.shared);if(o.shared)for(var c=0,s=Object.keys(o.shared);c2?n-2:0),i=2;i=a){var u=[t].concat(o).map((function(e){return"string"==typeof e?e:e instanceof Error?e.stack||String(e):JSON.stringify(e)})).filter((function(e){return e})).join(" ")+"\nUser Agent: "+navigator.userAgent;(0,r.callByond)("",{src:window.__ref__,action:"tgui:log",log:u})}},l=function(e){return{debug:function(){for(var t=arguments.length,n=new Array(t),r=0;rn?n:e};t.clamp01=function(e){return e<0?0:e>1?1:e};t.scale=function(e,t,n){return(e-t)/(n-t)};t.round=function(e,t){return!e||isNaN(e)?e:(t|=0,i=(e*=n=Math.pow(10,t))>0|-(e<0),o=Math.abs(e%1)>=.4999999999854481,r=Math.floor(e),o&&(e=r+(i>0)),(o?e:Math.round(e))/n);var n,r,o,i};t.toFixed=function(e,t){return void 0===t&&(t=0),Number(e).toFixed(Math.max(t,0))};var r=function(e,t){return t&&e>=t[0]&&e<=t[1]};t.inRange=r;t.keyOfMatchingRange=function(e,t){for(var n=0,o=Object.keys(t);nl;)if((u=c[l++])!=u)return!0}else for(;s>l;l++)if((e||l in c)&&c[l]===n)return e||l||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},function(e,t,n){"use strict";var r=n(1),o=/#|\.prototype\./,i=function(e,t){var n=u[a(e)];return n==s||n!=c&&("function"==typeof t?r(t):!!t)},a=i.normalize=function(e){return String(e).replace(o,".").toLowerCase()},u=i.data={},c=i.NATIVE="N",s=i.POLYFILL="P";e.exports=i},function(e,t,n){"use strict";var r=n(127),o=n(89);e.exports=Object.keys||function(e){return r(e,o)}},function(e,t,n){"use strict";var r=n(4),o=n(48),i=n(10)("species");e.exports=function(e,t){var n;return o(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!o(n.prototype)?r(n)&&null===(n=n[i])&&(n=undefined):n=undefined),new(n===undefined?Array:n)(0===t?0:t)}},function(e,t,n){"use strict";var r=n(1),o=n(10),i=n(92),a=o("species");e.exports=function(e){return i>=51||!r((function(){var t=[];return(t.constructor={})[a]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";var r=n(18);e.exports=function(e,t,n){for(var o in t)r(e,o,t[o],n);return e}},function(e,t,n){"use strict";var r=n(1);e.exports=!r((function(){return Object.isExtensible(Object.preventExtensions({}))}))},function(e,t,n){"use strict";var r=n(6),o=n(94),i=n(8),a=n(44),u=n(95),c=n(135),s=function(e,t){this.stopped=e,this.result=t};(e.exports=function(e,t,n,l,f){var d,p,h,v,g,m,y,b=a(t,n,l?2:1);if(f)d=e;else{if("function"!=typeof(p=u(e)))throw TypeError("Target is not iterable");if(o(p)){for(h=0,v=i(e.length);v>h;h++)if((g=l?b(r(y=e[h])[0],y[1]):b(e[h]))&&g instanceof s)return g;return new s(!1)}d=p.call(e)}for(m=d.next;!(y=m.call(d)).done;)if("object"==typeof(g=c(d,b,y.value,l))&&g&&g instanceof s)return g;return new s(!1)}).stop=function(e){return new s(!0,e)}},function(e,t,n){"use strict";t.__esModule=!0,t.Window=t.NtosWindow=t.refocusLayout=t.Layout=void 0;var r=n(115);t.Layout=r.Layout,t.refocusLayout=r.refocusLayout;var o=n(401);t.NtosWindow=o.NtosWindow;var i=n(166);t.Window=i.Window},function(e,t,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);t.f=i?function(e){var t=o(this,e);return!!t&&t.enumerable}:r},function(e,t,n){"use strict";var r=n(87),o=n(56),i=r("keys");e.exports=function(e){return i[e]||(i[e]=o(e))}},function(e,t,n){"use strict";var r=n(32);e.exports=r("navigator","userAgent")||""},function(e,t,n){"use strict";var r=n(96),o=n(28),i=n(10)("toStringTag"),a="Arguments"==o(function(){return arguments}());e.exports=r?o:function(e){var t,n,r;return e===undefined?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(n){}}(t=Object(e),i))?n:a?o(t):"Object"==(r=o(t))&&"function"==typeof t.callee?"Arguments":r}},function(e,t,n){"use strict";var r=n(10)("iterator"),o=!1;try{var i=0,a={next:function(){return{done:!!i++}},"return":function(){o=!0}};a[r]=function(){return this},Array.from(a,(function(){throw 2}))}catch(u){}e.exports=function(e,t){if(!t&&!o)return!1;var n=!1;try{var i={};i[r]=function(){return{next:function(){return{done:n=!0}}}},e(i)}catch(u){}return n}},function(e,t,n){"use strict";var r=n(27),o=n(12),i=n(55),a=n(8),u=function(e){return function(t,n,u,c){r(n);var s=o(t),l=i(s),f=a(s.length),d=e?f-1:0,p=e?-1:1;if(u<2)for(;;){if(d in l){c=l[d],d+=p;break}if(d+=p,e?d<0:f<=d)throw TypeError("Reduce of empty array with no initial value")}for(;e?d>=0:f>d;d+=p)d in l&&(c=n(c,l[d],d,s));return c}};e.exports={left:u(!1),right:u(!0)}},function(e,t,n){"use strict";var r=n(2),o=n(5),i=n(99),a=n(25),u=n(64),c=n(1),s=n(50),l=n(26),f=n(8),d=n(140),p=n(214),h=n(31),v=n(46),g=n(43).f,m=n(11).f,y=n(93),b=n(38),_=n(30),w=_.get,x=_.set,E=r.ArrayBuffer,C=E,S=r.DataView,N=S&&S.prototype,k=Object.prototype,O=r.RangeError,A=p.pack,I=p.unpack,T=function(e){return[255&e]},M=function(e){return[255&e,e>>8&255]},V=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},L=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},P=function(e){return A(e,23,4)},j=function(e){return A(e,52,8)},B=function(e,t){m(e.prototype,t,{get:function(){return w(this)[t]}})},R=function(e,t,n,r){var o=d(n),i=w(e);if(o+t>i.byteLength)throw O("Wrong index");var a=w(i.buffer).bytes,u=o+i.byteOffset,c=a.slice(u,u+t);return r?c:c.reverse()},F=function(e,t,n,r,o,i){var a=d(n),u=w(e);if(a+t>u.byteLength)throw O("Wrong index");for(var c=w(u.buffer).bytes,s=a+u.byteOffset,l=r(+o),f=0;fU;)(D=z[U++])in C||a(C,D,E[D]);K.constructor=C}v&&h(N)!==k&&v(N,k);var Y=new S(new C(2)),H=N.setInt8;Y.setInt8(0,2147483648),Y.setInt8(1,2147483649),!Y.getInt8(0)&&Y.getInt8(1)||u(N,{setInt8:function(e,t){H.call(this,e,t<<24>>24)},setUint8:function(e,t){H.call(this,e,t<<24>>24)}},{unsafe:!0})}else C=function(e){s(this,C,"ArrayBuffer");var t=d(e);x(this,{bytes:y.call(new Array(t),0),byteLength:t}),o||(this.byteLength=t)},S=function(e,t,n){s(this,S,"DataView"),s(e,C,"DataView");var r=w(e).byteLength,i=l(t);if(i<0||i>r)throw O("Wrong offset");if(i+(n=n===undefined?r-i:f(n))>r)throw O("Wrong length");x(this,{buffer:e,byteLength:n,byteOffset:i}),o||(this.buffer=e,this.byteLength=n,this.byteOffset=i)},o&&(B(C,"byteLength"),B(S,"buffer"),B(S,"byteLength"),B(S,"byteOffset")),u(S.prototype,{getInt8:function(e){return R(this,1,e)[0]<<24>>24},getUint8:function(e){return R(this,1,e)[0]},getInt16:function(e){var t=R(this,2,e,arguments.length>1?arguments[1]:undefined);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=R(this,2,e,arguments.length>1?arguments[1]:undefined);return t[1]<<8|t[0]},getInt32:function(e){return L(R(this,4,e,arguments.length>1?arguments[1]:undefined))},getUint32:function(e){return L(R(this,4,e,arguments.length>1?arguments[1]:undefined))>>>0},getFloat32:function(e){return I(R(this,4,e,arguments.length>1?arguments[1]:undefined),23)},getFloat64:function(e){return I(R(this,8,e,arguments.length>1?arguments[1]:undefined),52)},setInt8:function(e,t){F(this,1,e,T,t)},setUint8:function(e,t){F(this,1,e,T,t)},setInt16:function(e,t){F(this,2,e,M,t,arguments.length>2?arguments[2]:undefined)},setUint16:function(e,t){F(this,2,e,M,t,arguments.length>2?arguments[2]:undefined)},setInt32:function(e,t){F(this,4,e,V,t,arguments.length>2?arguments[2]:undefined)},setUint32:function(e,t){F(this,4,e,V,t,arguments.length>2?arguments[2]:undefined)},setFloat32:function(e,t){F(this,4,e,P,t,arguments.length>2?arguments[2]:undefined)},setFloat64:function(e,t){F(this,8,e,j,t,arguments.length>2?arguments[2]:undefined)}});b(C,"ArrayBuffer"),b(S,"DataView"),e.exports={ArrayBuffer:C,DataView:S}},function(e,t,n){"use strict";var r=n(0),o=n(2),i=n(59),a=n(18),u=n(47),c=n(66),s=n(50),l=n(4),f=n(1),d=n(72),p=n(38),h=n(76);e.exports=function(e,t,n){var v=-1!==e.indexOf("Map"),g=-1!==e.indexOf("Weak"),m=v?"set":"add",y=o[e],b=y&&y.prototype,_=y,w={},x=function(e){var t=b[e];a(b,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(g&&!l(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return g&&!l(e)?undefined:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(g&&!l(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(i(e,"function"!=typeof y||!(g||b.forEach&&!f((function(){(new y).entries().next()})))))_=n.getConstructor(t,e,v,m),u.REQUIRED=!0;else if(i(e,!0)){var E=new _,C=E[m](g?{}:-0,1)!=E,S=f((function(){E.has(1)})),N=d((function(e){new y(e)})),k=!g&&f((function(){for(var e=new y,t=5;t--;)e[m](t,t);return!e.has(-0)}));N||((_=t((function(t,n){s(t,_,e);var r=h(new y,t,_);return n!=undefined&&c(n,r[m],r,v),r}))).prototype=b,b.constructor=_),(S||k)&&(x("delete"),x("has"),v&&x("get")),(k||C)&&x(m),g&&b.clear&&delete b.clear}return w[e]=_,r({global:!0,forced:_!=y},w),p(_,e),g||n.setStrong(_,e,v),_}},function(e,t,n){"use strict";var r=n(4),o=n(46);e.exports=function(e,t,n){var i,a;return o&&"function"==typeof(i=t.constructor)&&i!==n&&r(a=i.prototype)&&a!==n.prototype&&o(e,a),e}},function(e,t,n){"use strict";var r=Math.expm1,o=Math.exp;e.exports=!r||r(10)>22025.465794806718||r(10)<22025.465794806718||-2e-17!=r(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:o(e)-1}:r},function(e,t,n){"use strict";e.exports="\t\n\x0B\f\r \xa0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff"},function(e,t,n){"use strict";var r=n(33),o=n(2),i=n(1);e.exports=r||!i((function(){var e=Math.random();__defineSetter__.call(null,e,(function(){})),delete o[e]}))},function(e,t,n){"use strict";var r=n(6);e.exports=function(){var e=r(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},function(e,t,n){"use strict";var r,o,i=n(80),a=n(105),u=RegExp.prototype.exec,c=String.prototype.replace,s=u,l=(r=/a/,o=/b*/g,u.call(r,"a"),u.call(o,"a"),0!==r.lastIndex||0!==o.lastIndex),f=a.UNSUPPORTED_Y||a.BROKEN_CARET,d=/()??/.exec("")[1]!==undefined;(l||d||f)&&(s=function(e){var t,n,r,o,a=this,s=f&&a.sticky,p=i.call(a),h=a.source,v=0,g=e;return s&&(-1===(p=p.replace("y","")).indexOf("g")&&(p+="g"),g=String(e).slice(a.lastIndex),a.lastIndex>0&&(!a.multiline||a.multiline&&"\n"!==e[a.lastIndex-1])&&(h="(?: "+h+")",g=" "+g,v++),n=new RegExp("^(?:"+h+")",p)),d&&(n=new RegExp("^"+h+"$(?!\\s)",p)),l&&(t=a.lastIndex),r=u.call(s?n:a,g),s?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=a.lastIndex,a.lastIndex+=r[0].length):a.lastIndex=0:l&&r&&(a.lastIndex=a.global?r.index+r[0].length:t),d&&r&&r.length>1&&c.call(r[0],n,(function(){for(o=1;o")})),l="$0"==="a".replace(/./,"$0"),f=i("replace"),d=!!/./[f]&&""===/./[f]("a","$0"),p=!o((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));e.exports=function(e,t,n,f){var h=i(e),v=!o((function(){var t={};return t[h]=function(){return 7},7!=""[e](t)})),g=v&&!o((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[c]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return t=!0,null},n[h](""),!t}));if(!v||!g||"replace"===e&&(!s||!l||d)||"split"===e&&!p){var m=/./[h],y=n(h,""[e],(function(e,t,n,r,o){return t.exec===a?v&&!o?{done:!0,value:m.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),{REPLACE_KEEPS_$0:l,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:d}),b=y[0],_=y[1];r(String.prototype,e,b),r(RegExp.prototype,h,2==t?function(e,t){return _.call(e,this,t)}:function(e){return _.call(e,this)})}f&&u(RegExp.prototype[h],"sham",!0)}},function(e,t,n){"use strict";var r=n(28),o=n(81);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var i=n.call(e,t);if("object"!=typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return o.call(e,t)}},function(e,t,n){"use strict";var r=n(2),o=n(4),i=r.document,a=o(i)&&o(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},function(e,t,n){"use strict";var r=n(2),o=n(25);e.exports=function(e,t){try{o(r,e,t)}catch(n){r[e]=t}return t}},function(e,t,n){"use strict";var r=n(123),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return o.call(e)}),e.exports=r.inspectSource},function(e,t,n){"use strict";var r=n(33),o=n(123);(e.exports=function(e,t){return o[e]||(o[e]=t!==undefined?t:{})})("versions",[]).push({version:"3.6.5",mode:r?"pure":"global",copyright:"\xa9 2020 Denis Pushkarev (zloirock.ru)"})},function(e,t,n){"use strict";var r=n(32),o=n(43),i=n(90),a=n(6);e.exports=r("Reflect","ownKeys")||function(e){var t=o.f(a(e)),n=i.f;return n?t.concat(n(e)):t}},function(e,t,n){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,t,n){"use strict";t.f=Object.getOwnPropertySymbols},function(e,t,n){"use strict";var r=n(1);e.exports=!!Object.getOwnPropertySymbols&&!r((function(){return!String(Symbol())}))},function(e,t,n){"use strict";var r,o,i=n(2),a=n(70),u=i.process,c=u&&u.versions,s=c&&c.v8;s?o=(r=s.split("."))[0]+r[1]:a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=r[1]),e.exports=o&&+o},function(e,t,n){"use strict";var r=n(12),o=n(36),i=n(8);e.exports=function(e){for(var t=r(this),n=i(t.length),a=arguments.length,u=o(a>1?arguments[1]:undefined,n),c=a>2?arguments[2]:undefined,s=c===undefined?n:o(c,n);s>u;)t[u++]=e;return t}},function(e,t,n){"use strict";var r=n(10),o=n(63),i=r("iterator"),a=Array.prototype;e.exports=function(e){return e!==undefined&&(o.Array===e||a[i]===e)}},function(e,t,n){"use strict";var r=n(71),o=n(63),i=n(10)("iterator");e.exports=function(e){if(e!=undefined)return e[i]||e["@@iterator"]||o[r(e)]}},function(e,t,n){"use strict";var r={};r[n(10)("toStringTag")]="z",e.exports="[object z]"===String(r)},function(e,t,n){"use strict";var r=n(0),o=n(199),i=n(31),a=n(46),u=n(38),c=n(25),s=n(18),l=n(10),f=n(33),d=n(63),p=n(137),h=p.IteratorPrototype,v=p.BUGGY_SAFARI_ITERATORS,g=l("iterator"),m=function(){return this};e.exports=function(e,t,n,l,p,y,b){o(n,t,l);var _,w,x,E=function(e){if(e===p&&O)return O;if(!v&&e in N)return N[e];switch(e){case"keys":case"values":case"entries":return function(){return new n(this,e)}}return function(){return new n(this)}},C=t+" Iterator",S=!1,N=e.prototype,k=N[g]||N["@@iterator"]||p&&N[p],O=!v&&k||E(p),A="Array"==t&&N.entries||k;if(A&&(_=i(A.call(new e)),h!==Object.prototype&&_.next&&(f||i(_)===h||(a?a(_,h):"function"!=typeof _[g]&&c(_,g,m)),u(_,C,!0,!0),f&&(d[C]=m))),"values"==p&&k&&"values"!==k.name&&(S=!0,O=function(){return k.call(this)}),f&&!b||N[g]===O||c(N,g,O),d[t]=O,p)if(w={values:E("values"),keys:y?O:E("keys"),entries:E("entries")},b)for(x in w)(v||S||!(x in N))&&s(N,x,w[x]);else r({target:t,proto:!0,forced:v||S},w);return w}},function(e,t,n){"use strict";var r=n(1);e.exports=!r((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},function(e,t,n){"use strict";e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},function(e,t,n){"use strict";var r=n(8),o=n(101),i=n(17),a=Math.ceil,u=function(e){return function(t,n,u){var c,s,l=String(i(t)),f=l.length,d=u===undefined?" ":String(u),p=r(n);return p<=f||""==d?l:(c=p-f,(s=o.call(d,a(c/d.length))).length>c&&(s=s.slice(0,c)),e?l+s:s+l)}};e.exports={start:u(!1),end:u(!0)}},function(e,t,n){"use strict";var r=n(26),o=n(17);e.exports="".repeat||function(e){var t=String(o(this)),n="",i=r(e);if(i<0||i==Infinity)throw RangeError("Wrong number of repetitions");for(;i>0;(i>>>=1)&&(t+=t))1&i&&(n+=t);return n}},function(e,t,n){"use strict";e.exports=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1}},function(e,t,n){"use strict";var r,o,i,a=n(2),u=n(1),c=n(28),s=n(44),l=n(130),f=n(84),d=n(149),p=a.location,h=a.setImmediate,v=a.clearImmediate,g=a.process,m=a.MessageChannel,y=a.Dispatch,b=0,_={},w=function(e){if(_.hasOwnProperty(e)){var t=_[e];delete _[e],t()}},x=function(e){return function(){w(e)}},E=function(e){w(e.data)},C=function(e){a.postMessage(e+"",p.protocol+"//"+p.host)};h&&v||(h=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return _[++b]=function(){("function"==typeof e?e:Function(e)).apply(undefined,t)},r(b),b},v=function(e){delete _[e]},"process"==c(g)?r=function(e){g.nextTick(x(e))}:y&&y.now?r=function(e){y.now(x(e))}:m&&!d?(i=(o=new m).port2,o.port1.onmessage=E,r=s(i.postMessage,i,1)):!a.addEventListener||"function"!=typeof postMessage||a.importScripts||u(C)||"file:"===p.protocol?r="onreadystatechange"in f("script")?function(e){l.appendChild(f("script")).onreadystatechange=function(){l.removeChild(this),w(e)}}:function(e){setTimeout(x(e),0)}:(r=C,a.addEventListener("message",E,!1))),e.exports={set:h,clear:v}},function(e,t,n){"use strict";var r=n(4),o=n(28),i=n(10)("match");e.exports=function(e){var t;return r(e)&&((t=e[i])!==undefined?!!t:"RegExp"==o(e))}},function(e,t,n){"use strict";var r=n(1);function o(e,t){return RegExp(e,t)}t.UNSUPPORTED_Y=r((function(){var e=o("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),t.BROKEN_CARET=r((function(){var e=o("^r","gy");return e.lastIndex=2,null!=e.exec("str")}))},function(e,t,n){"use strict";var r=n(26),o=n(17),i=function(e){return function(t,n){var i,a,u=String(o(t)),c=r(n),s=u.length;return c<0||c>=s?e?"":undefined:(i=u.charCodeAt(c))<55296||i>56319||c+1===s||(a=u.charCodeAt(c+1))<56320||a>57343?e?u.charAt(c):i:e?u.slice(c,c+2):a-56320+(i-55296<<10)+65536}};e.exports={codeAt:i(!1),charAt:i(!0)}},function(e,t,n){"use strict";var r=n(104);e.exports=function(e){if(r(e))throw TypeError("The method doesn't accept regular expressions");return e}},function(e,t,n){"use strict";var r=n(10)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[r]=!1,"/./"[e](t)}catch(o){}}return!1}},function(e,t,n){"use strict";var r=n(106).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},function(e,t,n){"use strict";var r=n(1),o=n(78);e.exports=function(e){return r((function(){return!!o[e]()||"\u200b\x85\u180e"!="\u200b\x85\u180e"[e]()||o[e].name!==e}))}},function(e,t,n){"use strict";var r=n(2),o=n(1),i=n(72),a=n(7).NATIVE_ARRAY_BUFFER_VIEWS,u=r.ArrayBuffer,c=r.Int8Array;e.exports=!a||!o((function(){c(1)}))||!o((function(){new c(-1)}))||!i((function(e){new c,new c(null),new c(1.5),new c(e)}),!0)||o((function(){return 1!==new c(new u(2),1,undefined).length}))},function(e,t,n){"use strict";t.__esModule=!0,t.getGasColor=t.getGasLabel=t.RADIO_CHANNELS=t.CSS_COLORS=t.COLORS=t.UI_CLOSE=t.UI_DISABLED=t.UI_UPDATE=t.UI_INTERACTIVE=void 0;t.UI_INTERACTIVE=2;t.UI_UPDATE=1;t.UI_DISABLED=0;t.UI_CLOSE=-1;t.COLORS={department:{captain:"#c06616",security:"#e74c3c",medbay:"#3498db",science:"#9b59b6",engineering:"#f1c40f",cargo:"#f39c12",centcom:"#00c100",other:"#c38312"},damageType:{oxy:"#3498db",toxin:"#2ecc71",burn:"#e67e22",brute:"#e74c3c"}};t.CSS_COLORS=["black","white","red","orange","yellow","olive","green","teal","blue","violet","purple","pink","brown","grey","good","average","bad","label"];t.RADIO_CHANNELS=[{name:"Syndicate",freq:1213,color:"#a52a2a"},{name:"Red Team",freq:1215,color:"#ff4444"},{name:"Blue Team",freq:1217,color:"#3434fd"},{name:"CentCom",freq:1337,color:"#2681a5"},{name:"Supply",freq:1347,color:"#b88646"},{name:"Service",freq:1349,color:"#6ca729"},{name:"Science",freq:1351,color:"#c68cfa"},{name:"Command",freq:1353,color:"#5177ff"},{name:"Medical",freq:1355,color:"#57b8f0"},{name:"Engineering",freq:1357,color:"#f37746"},{name:"Security",freq:1359,color:"#dd3535"},{name:"AI Private",freq:1447,color:"#d65d95"},{name:"Common",freq:1459,color:"#1ecc43"}];var r=[{id:"o2",name:"Oxygen",label:"O\u2082",color:"blue"},{id:"n2",name:"Nitrogen",label:"N\u2082",color:"red"},{id:"co2",name:"Carbon Dioxide",label:"CO\u2082",color:"grey"},{id:"plasma",name:"Plasma",label:"Plasma",color:"pink"},{id:"water_vapor",name:"Water Vapor",label:"H\u2082O",color:"grey"},{id:"nob",name:"Hyper-noblium",label:"Hyper-nob",color:"teal"},{id:"n2o",name:"Nitrous Oxide",label:"N\u2082O",color:"red"},{id:"no2",name:"Nitryl",label:"NO\u2082",color:"brown"},{id:"tritium",name:"Tritium",label:"Tritium",color:"green"},{id:"bz",name:"BZ",label:"BZ",color:"purple"},{id:"stim",name:"Stimulum",label:"Stimulum",color:"purple"},{id:"pluox",name:"Pluoxium",label:"Pluoxium",color:"blue"},{id:"miasma",name:"Miasma",label:"Miasma",color:"olive"},{id:"hydrogen",name:"Hydrogen",label:"H\u2082",color:"white"}];t.getGasLabel=function(e,t){var n=String(e).toLowerCase(),o=r.find((function(e){return e.id===n||e.name.toLowerCase()===n}));return o&&o.label||t||e};t.getGasColor=function(e){var t=String(e).toLowerCase(),n=r.find((function(e){return e.id===t||e.name.toLowerCase()===t}));return n&&n.color}},function(e,t,n){"use strict";t.__esModule=!0,t.zipWith=t.zip=t.uniqBy=t.reduce=t.sortBy=t.map=t.filter=t.toKeyedArray=t.toArray=void 0;t.toArray=function(e){if(Array.isArray(e))return e;if("object"==typeof e){var t=Object.prototype.hasOwnProperty,n=[];for(var r in e)t.call(e,r)&&n.push(e[r]);return n}return[]};t.toKeyedArray=function(e,t){return void 0===t&&(t="key"),r((function(e,n){var r;return Object.assign(((r={})[t]=n,r),e)}))(e)};t.filter=function(e){return function(t){if(null===t&&t===undefined)return t;if(Array.isArray(t)){for(var n=[],r=0;ru)return 1}return 0};t.sortBy=function(){for(var e=arguments.length,t=new Array(e),n=0;n=48&&r<=90?String.fromCharCode(r):"["+r+"]"},s=function(e){var t=window.event?e.which:e.keyCode,n=e.ctrlKey,r=e.altKey,o=e.shiftKey;return{keyCode:t,ctrlKey:n,altKey:r,shiftKey:o,hasModifierKeys:n||r||o,keyString:c(n,r,o,t)}},l=function(){for(var e=0,t=Object.keys(u);e=0||(o[n]=e[n]);return o}var h=(0,c.createLogger)("Button"),v=function(e){var t=e.className,n=e.fluid,c=e.icon,d=e.color,v=e.disabled,g=e.selected,m=e.tooltip,y=e.tooltipPosition,b=e.ellipsis,_=e.content,w=e.iconRotation,x=e.iconSpin,E=e.children,C=e.onclick,S=e.onClick,N=p(e,["className","fluid","icon","color","disabled","selected","tooltip","tooltipPosition","ellipsis","content","iconRotation","iconSpin","children","onclick","onClick"]),k=!(!_&&!E);return C&&h.warn("Lowercase 'onclick' is not supported on Button and lowercase prop names are discouraged in general. Please use a camelCase'onClick' instead and read: https://infernojs.org/docs/guides/event-handling"),(0,r.normalizeProps)((0,r.createComponentVNode)(2,s.Box,Object.assign({className:(0,o.classes)(["Button",n&&"Button--fluid",v&&"Button--disabled",g&&"Button--selected",k&&"Button--hasContent",b&&"Button--ellipsis",d&&"string"==typeof d?"Button--color--"+d:"Button--color--default",t]),tabIndex:!v&&"0",unselectable:i.IS_IE8,onclick:function(e){(0,u.refocusLayout)(),!v&&S&&S(e)},onKeyDown:function(e){var t=window.event?e.which:e.keyCode;return t===a.KEY_SPACE||t===a.KEY_ENTER?(e.preventDefault(),void(!v&&S&&S(e))):t===a.KEY_ESCAPE?(e.preventDefault(),void(0,u.refocusLayout)()):void 0}},N,{children:[c&&(0,r.createComponentVNode)(2,l.Icon,{name:c,rotation:w,spin:x}),_,E,m&&(0,r.createComponentVNode)(2,f.Tooltip,{content:m,position:y})]})))};t.Button=v,v.defaultHooks=o.pureComponentHooks;var g=function(e){var t=e.checked,n=p(e,["checked"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,v,Object.assign({color:"transparent",icon:t?"check-square-o":"square-o",selected:t},n)))};t.ButtonCheckbox=g,v.Checkbox=g;var m=function(e){function t(){var t;return(t=e.call(this)||this).state={clickedOnce:!1},t.handleClick=function(){t.state.clickedOnce&&t.setClickedOnce(!1)},t}d(t,e);var n=t.prototype;return n.setClickedOnce=function(e){var t=this;this.setState({clickedOnce:e}),e?setTimeout((function(){return window.addEventListener("click",t.handleClick)})):window.removeEventListener("click",this.handleClick)},n.render=function(){var e=this,t=this.props,n=t.confirmContent,o=void 0===n?"Confirm?":n,i=t.confirmColor,a=void 0===i?"bad":i,u=t.confirmIcon,c=t.icon,s=t.color,l=t.content,f=t.onClick,d=p(t,["confirmContent","confirmColor","confirmIcon","icon","color","content","onClick"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,v,Object.assign({content:this.state.clickedOnce?o:l,icon:this.state.clickedOnce?u:c,color:this.state.clickedOnce?a:s,onClick:function(){return e.state.clickedOnce?f():e.setClickedOnce(!0)}},d)))},t}(r.Component);t.ButtonConfirm=m,v.Confirm=m;var y=function(e){function t(){var t;return(t=e.call(this)||this).inputRef=(0,r.createRef)(),t.state={inInput:!1},t}d(t,e);var n=t.prototype;return n.setInInput=function(e){if(this.setState({inInput:e}),this.inputRef){var t=this.inputRef.current;if(e){t.value=this.props.currentValue||"";try{t.focus(),t.select()}catch(n){}}}},n.commitResult=function(e){if(this.inputRef){var t=this.inputRef.current;if(""!==t.value)return void this.props.onCommit(e,t.value);if(!this.props.defaultValue)return;this.props.onCommit(e,this.props.defaultValue)}},n.render=function(){var e=this,t=this.props,n=t.fluid,i=t.content,u=t.icon,c=t.iconRotation,d=t.iconSpin,h=t.tooltip,v=t.tooltipPosition,g=t.color,m=void 0===g?"default":g,y=(t.placeholder,t.maxLength,p(t,["fluid","content","icon","iconRotation","iconSpin","tooltip","tooltipPosition","color","placeholder","maxLength"]));return(0,r.normalizeProps)((0,r.createComponentVNode)(2,s.Box,Object.assign({className:(0,o.classes)(["Button",n&&"Button--fluid","Button--color--"+m])},y,{onClick:function(){return e.setInInput(!0)},children:[u&&(0,r.createComponentVNode)(2,l.Icon,{name:u,rotation:c,spin:d}),(0,r.createVNode)(1,"div",null,i,0),(0,r.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:this.state.inInput?undefined:"none","text-align":"left"},onBlur:function(t){e.state.inInput&&(e.setInInput(!1),e.commitResult(t))},onKeyDown:function(t){if(t.keyCode===a.KEY_ENTER)return e.setInInput(!1),void e.commitResult(t);t.keyCode===a.KEY_ESCAPE&&e.setInInput(!1)}},null,this.inputRef),h&&(0,r.createComponentVNode)(2,f.Tooltip,{content:h,position:v})]})))},t}(r.Component);t.ButtonInput=y,v.Input=y},function(e,t,n){"use strict";t.__esModule=!0,t.Icon=void 0;var r=n(3),o=n(9),i=n(13);var a=/-o$/,u=function(e){var t=e.name,n=e.size,u=e.spin,c=e.className,s=e.style,l=void 0===s?{}:s,f=e.rotation,d=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["name","size","spin","className","style","rotation"]);n&&(l["font-size"]=100*n+"%"),"number"==typeof f&&(l.transform="rotate("+f+"deg)");var p=a.test(t),h=t.replace(a,"");return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({as:"i",className:(0,o.classes)([c,p?"far":"fas","fa-"+h,u&&"fa-spin"]),style:l},d)))};t.Icon=u,u.defaultHooks=o.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.TableCell=t.TableRow=t.Table=void 0;var r=n(3),o=n(9),i=n(13);function a(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var u=function(e){var t=e.className,n=e.collapsing,u=e.children,c=a(e,["className","collapsing","children"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"table",(0,o.classes)(["Table",n&&"Table--collapsing",t,(0,i.computeBoxClassName)(c)]),(0,r.createVNode)(1,"tbody",null,u,0),2,Object.assign({},(0,i.computeBoxProps)(c))))};t.Table=u,u.defaultHooks=o.pureComponentHooks;var c=function(e){var t=e.className,n=e.header,u=a(e,["className","header"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"tr",(0,o.classes)(["Table__row",n&&"Table__row--header",t,(0,i.computeBoxClassName)(e)]),null,1,Object.assign({},(0,i.computeBoxProps)(u))))};t.TableRow=c,c.defaultHooks=o.pureComponentHooks;var s=function(e){var t=e.className,n=e.collapsing,u=e.header,c=a(e,["className","collapsing","header"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"td",(0,o.classes)(["Table__cell",n&&"Table__cell--collapsing",u&&"Table__cell--header",t,(0,i.computeBoxClassName)(e)]),null,1,Object.assign({},(0,i.computeBoxProps)(c))))};t.TableCell=s,s.defaultHooks=o.pureComponentHooks,u.Row=c,u.Cell=s},function(e,t,n){"use strict";t.__esModule=!0,t.NumberInput=void 0;var r=n(3),o=n(54),i=n(9),a=n(20),u=n(116),c=n(13);var s=function(e){var t,n;function s(t){var n;n=e.call(this,t)||this;var i=t.value;return n.inputRef=(0,r.createRef)(),n.state={value:i,dragging:!1,editing:!1,internalValue:null,origin:null,suppressingFlicker:!1},n.flickerTimer=null,n.suppressFlicker=function(){var e=n.props.suppressFlicker;e>0&&(n.setState({suppressingFlicker:!0}),clearTimeout(n.flickerTimer),n.flickerTimer=setTimeout((function(){return n.setState({suppressingFlicker:!1})}),e))},n.handleDragStart=function(e){var t=n.props.value;n.state.editing||(document.body.style["pointer-events"]="none",n.ref=e.target,n.setState({dragging:!1,origin:e.screenY,value:t,internalValue:t}),n.timer=setTimeout((function(){n.setState({dragging:!0})}),250),n.dragInterval=setInterval((function(){var t=n.state,r=t.dragging,o=t.value,i=n.props.onDrag;r&&i&&i(e,o)}),500),document.addEventListener("mousemove",n.handleDragMove),document.addEventListener("mouseup",n.handleDragEnd))},n.handleDragMove=function(e){var t=n.props,r=t.minValue,i=t.maxValue,a=t.step,u=t.stepPixelSize;n.setState((function(t){var n=Object.assign({},t),c=n.origin-e.screenY;if(t.dragging){var s=Number.isFinite(r)?r%a:0;n.internalValue=(0,o.clamp)(n.internalValue+c*a/u,r-a,i+a),n.value=(0,o.clamp)(n.internalValue-n.internalValue%a+s,r,i),n.origin=e.screenY}else Math.abs(c)>4&&(n.dragging=!0);return n}))},n.handleDragEnd=function(e){var t=n.props,r=t.onChange,o=t.onDrag,i=n.state,a=i.dragging,u=i.value,c=i.internalValue;if(document.body.style["pointer-events"]="auto",clearTimeout(n.timer),clearInterval(n.dragInterval),n.setState({dragging:!1,editing:!a,origin:null}),document.removeEventListener("mousemove",n.handleDragMove),document.removeEventListener("mouseup",n.handleDragEnd),a)n.suppressFlicker(),r&&r(e,u),o&&o(e,u);else if(n.inputRef){var s=n.inputRef.current;s.value=c;try{s.focus(),s.select()}catch(l){}}},n}return n=e,(t=s).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,s.prototype.render=function(){var e=this,t=this.state,n=t.dragging,s=t.editing,l=t.value,f=t.suppressingFlicker,d=this.props,p=d.className,h=d.fluid,v=d.animated,g=d.value,m=d.unit,y=d.minValue,b=d.maxValue,_=d.height,w=d.width,x=d.lineHeight,E=d.fontSize,C=d.format,S=d.onChange,N=d.onDrag,k=g;(n||f)&&(k=l);var O=function(e){return(0,r.createVNode)(1,"div","NumberInput__content",e+(m?" "+m:""),0,{unselectable:a.IS_IE8})},A=v&&!n&&!f&&(0,r.createComponentVNode)(2,u.AnimatedNumber,{value:k,format:C,children:O})||O(C?C(k):k);return(0,r.createComponentVNode)(2,c.Box,{className:(0,i.classes)(["NumberInput",h&&"NumberInput--fluid",p]),minWidth:w,minHeight:_,lineHeight:x,fontSize:E,onMouseDown:this.handleDragStart,children:[(0,r.createVNode)(1,"div","NumberInput__barContainer",(0,r.createVNode)(1,"div","NumberInput__bar",null,1,{style:{height:(0,o.clamp)((k-y)/(b-y)*100,0,100)+"%"}}),2),A,(0,r.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:s?undefined:"none",height:_,"line-height":x,"font-size":E},onBlur:function(t){if(s){var n=(0,o.clamp)(t.target.value,y,b);e.setState({editing:!1,value:n}),e.suppressFlicker(),S&&S(t,n),N&&N(t,n)}},onKeyDown:function(t){if(13===t.keyCode){var n=(0,o.clamp)(t.target.value,y,b);return e.setState({editing:!1,value:n}),e.suppressFlicker(),S&&S(t,n),void(N&&N(t,n))}27!==t.keyCode||e.setState({editing:!1})}},null,this.inputRef)]})},s}(r.Component);t.NumberInput=s,s.defaultHooks=i.pureComponentHooks,s.defaultProps={minValue:-Infinity,maxValue:+Infinity,step:1,stepPixelSize:1,suppressFlicker:50}},function(e,t,n){"use strict";var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(o){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,n){"use strict";var r=n(5),o=n(1),i=n(84);e.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(e,t,n){"use strict";var r=n(2),o=n(85),i=r["__core-js_shared__"]||o("__core-js_shared__",{});e.exports=i},function(e,t,n){"use strict";var r=n(2),o=n(86),i=r.WeakMap;e.exports="function"==typeof i&&/native code/.test(o(i))},function(e,t,n){"use strict";var r=n(14),o=n(88),i=n(16),a=n(11);e.exports=function(e,t){for(var n=o(t),u=a.f,c=i.f,s=0;sc;)r(u,n=t[c++])&&(~i(s,n)||s.push(n));return s}},function(e,t,n){"use strict";var r=n(91);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(e,t,n){"use strict";var r=n(5),o=n(11),i=n(6),a=n(60);e.exports=r?Object.defineProperties:function(e,t){i(e);for(var n,r=a(t),u=r.length,c=0;u>c;)o.f(e,n=r[c++],t[n]);return e}},function(e,t,n){"use strict";var r=n(32);e.exports=r("document","documentElement")},function(e,t,n){"use strict";var r=n(21),o=n(43).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return a&&"[object Window]"==i.call(e)?function(e){try{return o(e)}catch(t){return a.slice()}}(e):o(r(e))}},function(e,t,n){"use strict";var r=n(10);t.f=r},function(e,t,n){"use strict";var r=n(12),o=n(36),i=n(8),a=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),u=i(n.length),c=o(e,u),s=o(t,u),l=arguments.length>2?arguments[2]:undefined,f=a((l===undefined?u:o(l,u))-s,u-c),d=1;for(s0;)s in n?n[c]=n[s]:delete n[c],c+=d,s+=d;return n}},function(e,t,n){"use strict";var r=n(48),o=n(8),i=n(44);e.exports=function a(e,t,n,u,c,s,l,f){for(var d,p=c,h=0,v=!!l&&i(l,f,3);h0&&r(d))p=a(e,t,d,o(d.length),p,s-1)-1;else{if(p>=9007199254740991)throw TypeError("Exceed the acceptable array length");e[p]=d}p++}h++}return p}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(a){var i=e["return"];throw i!==undefined&&r(i.call(e)),a}}},function(e,t,n){"use strict";var r=n(21),o=n(39),i=n(63),a=n(30),u=n(97),c=a.set,s=a.getterFor("Array Iterator");e.exports=u(Array,"Array",(function(e,t){c(this,{type:"Array Iterator",target:r(e),index:0,kind:t})}),(function(){var e=s(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=undefined,{value:undefined,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}}),"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},function(e,t,n){"use strict";var r,o,i,a=n(31),u=n(25),c=n(14),s=n(10),l=n(33),f=s("iterator"),d=!1;[].keys&&("next"in(i=[].keys())?(o=a(a(i)))!==Object.prototype&&(r=o):d=!0),r==undefined&&(r={}),l||c(r,f)||u(r,f,(function(){return this})),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:d}},function(e,t,n){"use strict";var r=n(4);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},function(e,t,n){"use strict";var r=n(21),o=n(26),i=n(8),a=n(34),u=n(19),c=Math.min,s=[].lastIndexOf,l=!!s&&1/[1].lastIndexOf(1,-0)<0,f=a("lastIndexOf"),d=u("indexOf",{ACCESSORS:!0,1:0}),p=l||!f||!d;e.exports=p?function(e){if(l)return s.apply(this,arguments)||0;var t=r(this),n=i(t.length),a=n-1;for(arguments.length>1&&(a=c(a,o(arguments[1]))),a<0&&(a=n+a);a>=0;a--)if(a in t&&t[a]===e)return a||0;return-1}:s},function(e,t,n){"use strict";var r=n(26),o=n(8);e.exports=function(e){if(e===undefined)return 0;var t=r(e),n=o(t);if(t!==n)throw RangeError("Wrong length or index");return n}},function(e,t,n){"use strict";var r=n(27),o=n(4),i=[].slice,a={},u=function(e,t,n){if(!(t in a)){for(var r=[],o=0;o1?arguments[1]:undefined,3);t=t?t.next:n.first;)for(r(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!m(this,e)}}),i(l.prototype,n?{get:function(e){var t=m(this,e);return t&&t.value},set:function(e,t){return g(this,0===e?0:e,t)}}:{add:function(e){return g(this,e=0===e?0:e,e)}}),f&&r(l.prototype,"size",{get:function(){return p(this).size}}),l},setStrong:function(e,t,n){var r=t+" Iterator",o=v(t),i=v(r);s(e,t,(function(e,t){h(this,{type:r,target:e,state:o(e),kind:t,last:undefined})}),(function(){for(var e=i(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=undefined,{value:undefined,done:!0})}),n?"entries":"values",!n,!0),l(t)}}},function(e,t,n){"use strict";var r=Math.log;e.exports=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:r(1+e)}},function(e,t,n){"use strict";var r=n(4),o=Math.floor;e.exports=function(e){return!r(e)&&isFinite(e)&&o(e)===e}},function(e,t,n){"use strict";var r=n(2),o=n(51).trim,i=n(78),a=r.parseInt,u=/^[+-]?0[Xx]/,c=8!==a(i+"08")||22!==a(i+"0x16");e.exports=c?function(e,t){var n=o(String(e));return a(n,t>>>0||(u.test(n)?16:10))}:a},function(e,t,n){"use strict";var r=n(5),o=n(60),i=n(21),a=n(68).f,u=function(e){return function(t){for(var n,u=i(t),c=o(u),s=c.length,l=0,f=[];s>l;)n=c[l++],r&&!a.call(u,n)||f.push(e?[n,u[n]]:u[n]);return f}};e.exports={entries:u(!0),values:u(!1)}},function(e,t,n){"use strict";e.exports=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}},function(e,t,n){"use strict";var r=n(2);e.exports=r.Promise},function(e,t,n){"use strict";var r=n(70);e.exports=/(iphone|ipod|ipad).*applewebkit/i.test(r)},function(e,t,n){"use strict";var r,o,i,a,u,c,s,l,f=n(2),d=n(16).f,p=n(28),h=n(103).set,v=n(149),g=f.MutationObserver||f.WebKitMutationObserver,m=f.process,y=f.Promise,b="process"==p(m),_=d(f,"queueMicrotask"),w=_&&_.value;w||(r=function(){var e,t;for(b&&(e=m.domain)&&e.exit();o;){t=o.fn,o=o.next;try{t()}catch(n){throw o?a():i=undefined,n}}i=undefined,e&&e.enter()},b?a=function(){m.nextTick(r)}:g&&!v?(u=!0,c=document.createTextNode(""),new g(r).observe(c,{characterData:!0}),a=function(){c.data=u=!u}):y&&y.resolve?(s=y.resolve(undefined),l=s.then,a=function(){l.call(s,r)}):a=function(){h.call(f,r)}),e.exports=w||function(e){var t={fn:e,next:undefined};i&&(i.next=t),o||(o=t,a()),i=t}},function(e,t,n){"use strict";var r=n(6),o=n(4),i=n(152);e.exports=function(e,t){if(r(e),o(t)&&t.constructor===e)return t;var n=i.f(e);return(0,n.resolve)(t),n.promise}},function(e,t,n){"use strict";var r=n(27),o=function(e){var t,n;this.promise=new e((function(e,r){if(t!==undefined||n!==undefined)throw TypeError("Bad Promise constructor");t=e,n=r})),this.resolve=r(t),this.reject=r(n)};e.exports.f=function(e){return new o(e)}},function(e,t,n){"use strict";var r=n(0),o=n(81);r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},function(e,t,n){"use strict";var r=n(70);e.exports=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(r)},function(e,t,n){"use strict";var r=n(343);e.exports=function(e,t){var n=r(e);if(n%t)throw RangeError("Wrong offset");return n}},function(e,t,n){"use strict";var r=n(12),o=n(8),i=n(95),a=n(94),u=n(44),c=n(7).aTypedArrayConstructor;e.exports=function(e){var t,n,s,l,f,d,p=r(e),h=arguments.length,v=h>1?arguments[1]:undefined,g=v!==undefined,m=i(p);if(m!=undefined&&!a(m))for(d=(f=m.call(p)).next,p=[];!(l=d.call(f)).done;)p.push(l.value);for(g&&h>2&&(v=u(v,arguments[2],2)),n=o(p.length),s=new(c(this))(n),t=0;n>t;t++)s[t]=g?v(p[t],t):p[t];return s}},function(e,t,n){"use strict";var r=n(64),o=n(47).getWeakData,i=n(6),a=n(4),u=n(50),c=n(66),s=n(15),l=n(14),f=n(30),d=f.set,p=f.getterFor,h=s.find,v=s.findIndex,g=0,m=function(e){return e.frozen||(e.frozen=new y)},y=function(){this.entries=[]},b=function(e,t){return h(e.entries,(function(e){return e[0]===t}))};y.prototype={get:function(e){var t=b(this,e);if(t)return t[1]},has:function(e){return!!b(this,e)},set:function(e,t){var n=b(this,e);n?n[1]=t:this.entries.push([e,t])},"delete":function(e){var t=v(this.entries,(function(t){return t[0]===e}));return~t&&this.entries.splice(t,1),!!~t}},e.exports={getConstructor:function(e,t,n,s){var f=e((function(e,r){u(e,f,t),d(e,{type:t,id:g++,frozen:undefined}),r!=undefined&&c(r,e[s],e,n)})),h=p(t),v=function(e,t,n){var r=h(e),a=o(i(t),!0);return!0===a?m(r).set(t,n):a[r.id]=n,e};return r(f.prototype,{"delete":function(e){var t=h(this);if(!a(e))return!1;var n=o(e);return!0===n?m(t)["delete"](e):n&&l(n,t.id)&&delete n[t.id]},has:function(e){var t=h(this);if(!a(e))return!1;var n=o(e);return!0===n?m(t).has(e):n&&l(n,t.id)}}),r(f.prototype,n?{get:function(e){var t=h(this);if(a(e)){var n=o(e);return!0===n?m(t).get(e):n?n[t.id]:undefined}},set:function(e,t){return v(this,e,t)}}:{add:function(e){return v(this,e,!0)}}),f}}},function(e,t,n){"use strict";t.__esModule=!0,t.setupHotReloading=t.sendLogEntry=void 0;t.sendLogEntry=function(e,t){};t.setupHotReloading=function(){0}},function(e,t,n){"use strict";t.__esModule=!0,t.resizeStartHandler=t.dragStartHandler=t.setupDrag=void 0;var r=n(397),o=n(20);function i(e,t,n,r,o,i,a){try{var u=e[i](a),c=u.value}catch(s){return void n(s)}u.done?t(c):Promise.resolve(c).then(r,o)}var a,u,c,s,l,f=(0,n(52).createLogger)("drag"),d=!1,p=!1,h=[0,0],v=function(e){return(0,o.winget)(e,"pos").then((function(e){return[e.x,e.y]}))},g=function(e,t){return(0,o.winset)(e,"pos",t[0]+","+t[1])},m=function(){var e,t=(e=regeneratorRuntime.mark((function n(e){var t,r,o,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return f.log("setting up"),a=e.config.window,n.next=4,v(a);case 4:t=n.sent,h=[t[0]-window.screenLeft,t[1]-window.screenTop],r=y(t),o=r[0],i=r[1],o&&g(a,i),f.debug("current state",{ref:a,screenOffset:h});case 9:case"end":return n.stop()}}),n)})),function(){var t=this,n=arguments;return new Promise((function(r,o){var a=e.apply(t,n);function u(e){i(a,r,o,u,c,"next",e)}function c(e){i(a,r,o,u,c,"throw",e)}u(undefined)}))});return function(e){return t.apply(this,arguments)}}();t.setupDrag=m;var y=function(e){var t=e[0],n=e[1],r=!1;return t<0?(t=0,r=!0):t+window.innerWidth>window.screen.availWidth&&(t=window.screen.availWidth-window.innerWidth,r=!0),n<0?(n=0,r=!0):n+window.innerHeight>window.screen.availHeight&&(n=window.screen.availHeight-window.innerHeight,r=!0),[r,[t,n]]};t.dragStartHandler=function(e){f.log("drag start"),d=!0,u=[window.screenLeft-e.screenX,window.screenTop-e.screenY],document.addEventListener("mousemove",_),document.addEventListener("mouseup",b),_(e)};var b=function E(e){f.log("drag end"),_(e),document.removeEventListener("mousemove",_),document.removeEventListener("mouseup",E),d=!1},_=function(e){d&&(e.preventDefault(),g(a,(0,r.vecAdd)([e.screenX,e.screenY],h,u)))};t.resizeStartHandler=function(e,t){return function(n){c=[e,t],f.log("resize start",c),p=!0,u=[window.screenLeft-n.screenX,window.screenTop-n.screenY],s=[window.innerWidth,window.innerHeight],document.addEventListener("mousemove",x),document.addEventListener("mouseup",w),x(n)}};var w=function C(e){f.log("resize end",l),x(e),document.removeEventListener("mousemove",x),document.removeEventListener("mouseup",C),p=!1},x=function(e){p&&(e.preventDefault(),(l=(0,r.vecAdd)(s,(0,r.vecMultiply)(c,(0,r.vecAdd)([e.screenX,e.screenY],(0,r.vecInverse)([window.screenLeft,window.screenTop]),u,[1,1]))))[0]=Math.max(l[0],250),l[1]=Math.max(l[1],120),function(e,t){(0,o.winset)(e,"size",t[0]+","+t[1])}(a,l))}},function(e,t,n){"use strict";function r(e){var t=0;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(e=function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,t)}(e)))return function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(t=e[Symbol.iterator]()).next.bind(t)}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?o-1:0),u=1;u1?r-1:0),i=1;i35;return(0,r.createVNode)(1,"div",(0,o.classes)(["Tooltip",a&&"Tooltip--long",i&&"Tooltip--"+i]),null,1,{"data-tooltip":t})}},function(e,t,n){"use strict";t.__esModule=!0,t.Dimmer=void 0;var r=n(3),o=n(9),i=n(13);t.Dimmer=function(e){var t=e.className,n=e.children,a=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["className","children"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["Dimmer"].concat(t))},a,{children:(0,r.createVNode)(1,"div","Dimmer__inner",n,0)})))}},function(e,t,n){"use strict";t.__esModule=!0,t.Divider=void 0;var r=n(3),o=n(9);t.Divider=function(e){var t=e.vertical,n=e.hidden;return(0,r.createVNode)(1,"div",(0,o.classes)(["Divider",n&&"Divider--hidden",t?"Divider--vertical":"Divider--horizontal"]))}},function(e,t,n){"use strict";t.__esModule=!0,t.FlexItem=t.computeFlexItemProps=t.Flex=t.computeFlexProps=void 0;var r=n(3),o=n(9),i=n(20),a=n(13);function u(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var c=function(e){var t=e.className,n=e.direction,r=e.wrap,a=e.align,c=e.justify,s=e.inline,l=e.spacing,f=void 0===l?0:l,d=u(e,["className","direction","wrap","align","justify","inline","spacing"]);return Object.assign({className:(0,o.classes)(["Flex",i.IS_IE8&&("column"===n?"Flex--ie8--column":"Flex--ie8"),s&&"Flex--inline",f>0&&"Flex--spacing--"+f,t]),style:Object.assign({},d.style,{"flex-direction":n,"flex-wrap":r,"align-items":a,"justify-content":c})},d)};t.computeFlexProps=c;var s=function(e){return(0,r.normalizeProps)((0,r.createComponentVNode)(2,a.Box,Object.assign({},c(e))))};t.Flex=s,s.defaultHooks=o.pureComponentHooks;var l=function(e){var t=e.className,n=e.grow,r=e.order,c=e.shrink,s=e.basis,l=void 0===s?e.width:s,f=e.align,d=u(e,["className","grow","order","shrink","basis","align"]);return Object.assign({className:(0,o.classes)(["Flex__item",i.IS_IE8&&"Flex__item--ie8",t]),style:Object.assign({},d.style,{"flex-grow":n,"flex-shrink":c,"flex-basis":(0,a.unit)(l),order:r,"align-self":f})},d)};t.computeFlexItemProps=l;var f=function(e){return(0,r.normalizeProps)((0,r.createComponentVNode)(2,a.Box,Object.assign({},l(e))))};t.FlexItem=f,f.defaultHooks=o.pureComponentHooks,s.Item=f},function(e,t,n){"use strict";t.__esModule=!0,t.DraggableControl=void 0;var r=n(3),o=n(54),i=n(9),a=n(116);var u=function(e,t){return e.screenX*t[0]+e.screenY*t[1]},c=function(e){var t,n;function i(t){var n;return(n=e.call(this,t)||this).inputRef=(0,r.createRef)(),n.state={value:t.value,dragging:!1,editing:!1,internalValue:null,origin:null,suppressingFlicker:!1},n.flickerTimer=null,n.suppressFlicker=function(){var e=n.props.suppressFlicker;e>0&&(n.setState({suppressingFlicker:!0}),clearTimeout(n.flickerTimer),n.flickerTimer=setTimeout((function(){return n.setState({suppressingFlicker:!1})}),e))},n.handleDragStart=function(e){var t=n.props,r=t.value,o=t.dragMatrix;n.state.editing||(document.body.style["pointer-events"]="none",n.ref=e.target,n.setState({dragging:!1,origin:u(e,o),value:r,internalValue:r}),n.timer=setTimeout((function(){n.setState({dragging:!0})}),250),n.dragInterval=setInterval((function(){var t=n.state,r=t.dragging,o=t.value,i=n.props.onDrag;r&&i&&i(e,o)}),500),document.addEventListener("mousemove",n.handleDragMove),document.addEventListener("mouseup",n.handleDragEnd))},n.handleDragMove=function(e){var t=n.props,r=t.minValue,i=t.maxValue,a=t.step,c=t.stepPixelSize,s=t.dragMatrix;n.setState((function(t){var n=Object.assign({},t),l=u(e,s)-n.origin;if(t.dragging){var f=Number.isFinite(r)?r%a:0;n.internalValue=(0,o.clamp)(n.internalValue+l*a/c,r-a,i+a),n.value=(0,o.clamp)(n.internalValue-n.internalValue%a+f,r,i),n.origin=u(e,s)}else Math.abs(l)>4&&(n.dragging=!0);return n}))},n.handleDragEnd=function(e){var t=n.props,r=t.onChange,o=t.onDrag,i=n.state,a=i.dragging,u=i.value,c=i.internalValue;if(document.body.style["pointer-events"]="auto",clearTimeout(n.timer),clearInterval(n.dragInterval),n.setState({dragging:!1,editing:!a,origin:null}),document.removeEventListener("mousemove",n.handleDragMove),document.removeEventListener("mouseup",n.handleDragEnd),a)n.suppressFlicker(),r&&r(e,u),o&&o(e,u);else if(n.inputRef){var s=n.inputRef.current;s.value=c;try{s.focus(),s.select()}catch(l){}}},n}return n=e,(t=i).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,i.prototype.render=function(){var e=this,t=this.state,n=t.dragging,i=t.editing,u=t.value,c=t.suppressingFlicker,s=this.props,l=s.animated,f=s.value,d=s.unit,p=s.minValue,h=s.maxValue,v=s.format,g=s.onChange,m=s.onDrag,y=s.children,b=s.height,_=s.lineHeight,w=s.fontSize,x=f;(n||c)&&(x=u);var E=function(e){return e+(d?" "+d:"")},C=l&&!n&&!c&&(0,r.createComponentVNode)(2,a.AnimatedNumber,{value:x,format:v,children:E})||E(v?v(x):x),S=(0,r.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:i?undefined:"none",height:b,"line-height":_,"font-size":w},onBlur:function(t){if(i){var n=(0,o.clamp)(t.target.value,p,h);e.setState({editing:!1,value:n}),e.suppressFlicker(),g&&g(t,n),m&&m(t,n)}},onKeyDown:function(t){if(13===t.keyCode){var n=(0,o.clamp)(t.target.value,p,h);return e.setState({editing:!1,value:n}),e.suppressFlicker(),g&&g(t,n),void(m&&m(t,n))}27!==t.keyCode||e.setState({editing:!1})}},null,this.inputRef);return y({dragging:n,editing:i,value:f,displayValue:x,displayElement:C,inputElement:S,handleDragStart:this.handleDragStart})},i}(r.Component);t.DraggableControl=c,c.defaultHooks=i.pureComponentHooks,c.defaultProps={minValue:-Infinity,maxValue:+Infinity,step:1,stepPixelSize:1,suppressFlicker:50,dragMatrix:[1,0]}},function(e,t,n){"use strict";t.__esModule=!0,t.Window=void 0;var r=n(3),o=n(9),i=n(422),a=n(41),u=n(20),c=n(53),s=n(112),l=n(159),f=n(114),d=n(52),p=n(115);var h=(0,d.createLogger)("Window"),v=function(e){var t,n;function c(){return e.apply(this,arguments)||this}n=e,(t=c).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var d=c.prototype;return d.componentDidMount=function(){(0,p.refocusLayout)()},d.render=function(){var e=this.props,t=e.resizable,n=e.theme,c=e.children,d=(0,a.useBackend)(this.context),v=d.config,g=d.debugLayout,y=v.observer?v.statusi;)o.push(arguments[i++]);if(r=t,(p(t)||e!==undefined)&&!ie(e))return d(t)||(t=function(e,t){if("function"==typeof r&&(t=r.call(this,e,t)),!ie(t))return t}),o[1]=t,H.apply(null,o)}});Y.prototype[D]||k(Y.prototype,D,Y.prototype.valueOf),j(Y,"Symbol"),T[F]=!0},function(e,t,n){"use strict";var r=n(0),o=n(5),i=n(2),a=n(14),u=n(4),c=n(11).f,s=n(125),l=i.Symbol;if(o&&"function"==typeof l&&(!("description"in l.prototype)||l().description!==undefined)){var f={},d=function(){var e=arguments.length<1||arguments[0]===undefined?undefined:String(arguments[0]),t=this instanceof d?new l(e):e===undefined?l():l(e);return""===e&&(f[t]=!0),t};s(d,l);var p=d.prototype=l.prototype;p.constructor=d;var h=p.toString,v="Symbol(test)"==String(l("test")),g=/^Symbol\((.*)\)[^)]+$/;c(p,"description",{configurable:!0,get:function(){var e=u(this)?this.valueOf():this,t=h.call(e);if(a(f,e))return"";var n=v?t.slice(7,-1):t.replace(g,"$1");return""===n?undefined:n}}),r({global:!0,forced:!0},{Symbol:d})}},function(e,t,n){"use strict";n(22)("asyncIterator")},function(e,t,n){"use strict";n(22)("hasInstance")},function(e,t,n){"use strict";n(22)("isConcatSpreadable")},function(e,t,n){"use strict";n(22)("iterator")},function(e,t,n){"use strict";n(22)("match")},function(e,t,n){"use strict";n(22)("replace")},function(e,t,n){"use strict";n(22)("search")},function(e,t,n){"use strict";n(22)("species")},function(e,t,n){"use strict";n(22)("split")},function(e,t,n){"use strict";n(22)("toPrimitive")},function(e,t,n){"use strict";n(22)("toStringTag")},function(e,t,n){"use strict";n(22)("unscopables")},function(e,t,n){"use strict";var r=n(0),o=n(1),i=n(48),a=n(4),u=n(12),c=n(8),s=n(45),l=n(61),f=n(62),d=n(10),p=n(92),h=d("isConcatSpreadable"),v=p>=51||!o((function(){var e=[];return e[h]=!1,e.concat()[0]!==e})),g=f("concat"),m=function(e){if(!a(e))return!1;var t=e[h];return t!==undefined?!!t:i(e)};r({target:"Array",proto:!0,forced:!v||!g},{concat:function(e){var t,n,r,o,i,a=u(this),f=l(a,0),d=0;for(t=-1,r=arguments.length;t9007199254740991)throw TypeError("Maximum allowed index exceeded");for(n=0;n=9007199254740991)throw TypeError("Maximum allowed index exceeded");s(f,d++,i)}return f.length=d,f}})},function(e,t,n){"use strict";var r=n(0),o=n(133),i=n(39);r({target:"Array",proto:!0},{copyWithin:o}),i("copyWithin")},function(e,t,n){"use strict";var r=n(0),o=n(15).every,i=n(34),a=n(19),u=i("every"),c=a("every");r({target:"Array",proto:!0,forced:!u||!c},{every:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(0),o=n(93),i=n(39);r({target:"Array",proto:!0},{fill:o}),i("fill")},function(e,t,n){"use strict";var r=n(0),o=n(15).filter,i=n(62),a=n(19),u=i("filter"),c=a("filter");r({target:"Array",proto:!0,forced:!u||!c},{filter:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(0),o=n(15).find,i=n(39),a=n(19),u=!0,c=a("find");"find"in[]&&Array(1).find((function(){u=!1})),r({target:"Array",proto:!0,forced:u||!c},{find:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}}),i("find")},function(e,t,n){"use strict";var r=n(0),o=n(15).findIndex,i=n(39),a=n(19),u=!0,c=a("findIndex");"findIndex"in[]&&Array(1).findIndex((function(){u=!1})),r({target:"Array",proto:!0,forced:u||!c},{findIndex:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}}),i("findIndex")},function(e,t,n){"use strict";var r=n(0),o=n(134),i=n(12),a=n(8),u=n(26),c=n(61);r({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:undefined,t=i(this),n=a(t.length),r=c(t,0);return r.length=o(r,t,t,n,0,e===undefined?1:u(e)),r}})},function(e,t,n){"use strict";var r=n(0),o=n(134),i=n(12),a=n(8),u=n(27),c=n(61);r({target:"Array",proto:!0},{flatMap:function(e){var t,n=i(this),r=a(n.length);return u(e),(t=c(n,0)).length=o(t,n,n,r,0,1,e,arguments.length>1?arguments[1]:undefined),t}})},function(e,t,n){"use strict";var r=n(0),o=n(193);r({target:"Array",proto:!0,forced:[].forEach!=o},{forEach:o})},function(e,t,n){"use strict";var r=n(15).forEach,o=n(34),i=n(19),a=o("forEach"),u=i("forEach");e.exports=a&&u?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}},function(e,t,n){"use strict";var r=n(0),o=n(195);r({target:"Array",stat:!0,forced:!n(72)((function(e){Array.from(e)}))},{from:o})},function(e,t,n){"use strict";var r=n(44),o=n(12),i=n(135),a=n(94),u=n(8),c=n(45),s=n(95);e.exports=function(e){var t,n,l,f,d,p,h=o(e),v="function"==typeof this?this:Array,g=arguments.length,m=g>1?arguments[1]:undefined,y=m!==undefined,b=s(h),_=0;if(y&&(m=r(m,g>2?arguments[2]:undefined,2)),b==undefined||v==Array&&a(b))for(n=new v(t=u(h.length));t>_;_++)p=y?m(h[_],_):h[_],c(n,_,p);else for(d=(f=b.call(h)).next,n=new v;!(l=d.call(f)).done;_++)p=y?i(f,m,[l.value,_],!0):l.value,c(n,_,p);return n.length=_,n}},function(e,t,n){"use strict";var r=n(0),o=n(58).includes,i=n(39);r({target:"Array",proto:!0,forced:!n(19)("indexOf",{ACCESSORS:!0,1:0})},{includes:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}}),i("includes")},function(e,t,n){"use strict";var r=n(0),o=n(58).indexOf,i=n(34),a=n(19),u=[].indexOf,c=!!u&&1/[1].indexOf(1,-0)<0,s=i("indexOf"),l=a("indexOf",{ACCESSORS:!0,1:0});r({target:"Array",proto:!0,forced:c||!s||!l},{indexOf:function(e){return c?u.apply(this,arguments)||0:o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";n(0)({target:"Array",stat:!0},{isArray:n(48)})},function(e,t,n){"use strict";var r=n(137).IteratorPrototype,o=n(37),i=n(42),a=n(38),u=n(63),c=function(){return this};e.exports=function(e,t,n){var s=t+" Iterator";return e.prototype=o(r,{next:i(1,n)}),a(e,s,!1,!0),u[s]=c,e}},function(e,t,n){"use strict";var r=n(0),o=n(55),i=n(21),a=n(34),u=[].join,c=o!=Object,s=a("join",",");r({target:"Array",proto:!0,forced:c||!s},{join:function(e){return u.call(i(this),e===undefined?",":e)}})},function(e,t,n){"use strict";var r=n(0),o=n(139);r({target:"Array",proto:!0,forced:o!==[].lastIndexOf},{lastIndexOf:o})},function(e,t,n){"use strict";var r=n(0),o=n(15).map,i=n(62),a=n(19),u=i("map"),c=a("map");r({target:"Array",proto:!0,forced:!u||!c},{map:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(0),o=n(1),i=n(45);r({target:"Array",stat:!0,forced:o((function(){function e(){}return!(Array.of.call(e)instanceof e)}))},{of:function(){for(var e=0,t=arguments.length,n=new("function"==typeof this?this:Array)(t);t>e;)i(n,e,arguments[e++]);return n.length=t,n}})},function(e,t,n){"use strict";var r=n(0),o=n(73).left,i=n(34),a=n(19),u=i("reduce"),c=a("reduce",{1:0});r({target:"Array",proto:!0,forced:!u||!c},{reduce:function(e){return o(this,e,arguments.length,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(0),o=n(73).right,i=n(34),a=n(19),u=i("reduceRight"),c=a("reduce",{1:0});r({target:"Array",proto:!0,forced:!u||!c},{reduceRight:function(e){return o(this,e,arguments.length,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(0),o=n(4),i=n(48),a=n(36),u=n(8),c=n(21),s=n(45),l=n(10),f=n(62),d=n(19),p=f("slice"),h=d("slice",{ACCESSORS:!0,0:0,1:2}),v=l("species"),g=[].slice,m=Math.max;r({target:"Array",proto:!0,forced:!p||!h},{slice:function(e,t){var n,r,l,f=c(this),d=u(f.length),p=a(e,d),h=a(t===undefined?d:t,d);if(i(f)&&("function"!=typeof(n=f.constructor)||n!==Array&&!i(n.prototype)?o(n)&&null===(n=n[v])&&(n=undefined):n=undefined,n===Array||n===undefined))return g.call(f,p,h);for(r=new(n===undefined?Array:n)(m(h-p,0)),l=0;p1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(0),o=n(27),i=n(12),a=n(1),u=n(34),c=[],s=c.sort,l=a((function(){c.sort(undefined)})),f=a((function(){c.sort(null)})),d=u("sort");r({target:"Array",proto:!0,forced:l||!f||!d},{sort:function(e){return e===undefined?s.call(i(this)):s.call(i(this),o(e))}})},function(e,t,n){"use strict";n(49)("Array")},function(e,t,n){"use strict";var r=n(0),o=n(36),i=n(26),a=n(8),u=n(12),c=n(61),s=n(45),l=n(62),f=n(19),d=l("splice"),p=f("splice",{ACCESSORS:!0,0:0,1:2}),h=Math.max,v=Math.min;r({target:"Array",proto:!0,forced:!d||!p},{splice:function(e,t){var n,r,l,f,d,p,g=u(this),m=a(g.length),y=o(e,m),b=arguments.length;if(0===b?n=r=0:1===b?(n=0,r=m-y):(n=b-2,r=v(h(i(t),0),m-y)),m+n-r>9007199254740991)throw TypeError("Maximum allowed length exceeded");for(l=c(g,r),f=0;fm-r+n;f--)delete g[f-1]}else if(n>r)for(f=m-r;f>y;f--)p=f+n-1,(d=f+r-1)in g?g[p]=g[d]:delete g[p];for(f=0;f>1,v=23===t?o(2,-24)-o(2,-77):0,g=e<0||0===e&&1/e<0?1:0,m=0;for((e=r(e))!=e||e===1/0?(s=e!=e?1:0,c=p):(c=i(a(e)/u),e*(l=o(2,-c))<1&&(c--,l*=2),(e+=c+h>=1?v/l:v*o(2,1-h))*l>=2&&(c++,l/=2),c+h>=p?(s=0,c=p):c+h>=1?(s=(e*l-1)*o(2,t),c+=h):(s=e*o(2,h-1)*o(2,t),c=0));t>=8;f[m++]=255&s,s/=256,t-=8);for(c=c<0;f[m++]=255&c,c/=256,d-=8);return f[--m]|=128*g,f},unpack:function(e,t){var n,r=e.length,i=8*r-t-1,a=(1<>1,c=i-7,s=r-1,l=e[s--],f=127&l;for(l>>=7;c>0;f=256*f+e[s],s--,c-=8);for(n=f&(1<<-c)-1,f>>=-c,c+=t;c>0;n=256*n+e[s],s--,c-=8);if(0===f)f=1-u;else{if(f===a)return n?NaN:l?-1/0:1/0;n+=o(2,t),f-=u}return(l?-1:1)*n*o(2,f-t)}}},function(e,t,n){"use strict";var r=n(0),o=n(7);r({target:"ArrayBuffer",stat:!0,forced:!o.NATIVE_ARRAY_BUFFER_VIEWS},{isView:o.isView})},function(e,t,n){"use strict";var r=n(0),o=n(1),i=n(74),a=n(6),u=n(36),c=n(8),s=n(40),l=i.ArrayBuffer,f=i.DataView,d=l.prototype.slice;r({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:o((function(){return!new l(2).slice(1,undefined).byteLength}))},{slice:function(e,t){if(d!==undefined&&t===undefined)return d.call(a(this),e);for(var n=a(this).byteLength,r=u(e,n),o=u(t===undefined?n:t,n),i=new(s(this,l))(c(o-r)),p=new f(this),h=new f(i),v=0;r9999?"+":"";return n+o(i(e),n?6:4,0)+"-"+o(this.getUTCMonth()+1,2,0)+"-"+o(this.getUTCDate(),2,0)+"T"+o(this.getUTCHours(),2,0)+":"+o(this.getUTCMinutes(),2,0)+":"+o(this.getUTCSeconds(),2,0)+"."+o(t,3,0)+"Z"}:c},function(e,t,n){"use strict";var r=n(0),o=n(1),i=n(12),a=n(29);r({target:"Date",proto:!0,forced:o((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}))},{toJSON:function(e){var t=i(this),n=a(t);return"number"!=typeof n||isFinite(n)?t.toISOString():null}})},function(e,t,n){"use strict";var r=n(25),o=n(223),i=n(10)("toPrimitive"),a=Date.prototype;i in a||r(a,i,o)},function(e,t,n){"use strict";var r=n(6),o=n(29);e.exports=function(e){if("string"!==e&&"number"!==e&&"default"!==e)throw TypeError("Incorrect hint");return o(r(this),"number"!==e)}},function(e,t,n){"use strict";var r=n(18),o=Date.prototype,i=o.toString,a=o.getTime;new Date(NaN)+""!="Invalid Date"&&r(o,"toString",(function(){var e=a.call(this);return e==e?i.call(this):"Invalid Date"}))},function(e,t,n){"use strict";n(0)({target:"Function",proto:!0},{bind:n(141)})},function(e,t,n){"use strict";var r=n(4),o=n(11),i=n(31),a=n(10)("hasInstance"),u=Function.prototype;a in u||o.f(u,a,{value:function(e){if("function"!=typeof this||!r(e))return!1;if(!r(this.prototype))return e instanceof this;for(;e=i(e);)if(this.prototype===e)return!0;return!1}})},function(e,t,n){"use strict";var r=n(5),o=n(11).f,i=Function.prototype,a=i.toString,u=/^\s*function ([^ (]*)/;r&&!("name"in i)&&o(i,"name",{configurable:!0,get:function(){try{return a.call(this).match(u)[1]}catch(e){return""}}})},function(e,t,n){"use strict";var r=n(2);n(38)(r.JSON,"JSON",!0)},function(e,t,n){"use strict";var r=n(75),o=n(142);e.exports=r("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),o)},function(e,t,n){"use strict";var r=n(0),o=n(143),i=Math.acosh,a=Math.log,u=Math.sqrt,c=Math.LN2;r({target:"Math",stat:!0,forced:!i||710!=Math.floor(i(Number.MAX_VALUE))||i(Infinity)!=Infinity},{acosh:function(e){return(e=+e)<1?NaN:e>94906265.62425156?a(e)+c:o(e-1+u(e-1)*u(e+1))}})},function(e,t,n){"use strict";var r=n(0),o=Math.asinh,i=Math.log,a=Math.sqrt;r({target:"Math",stat:!0,forced:!(o&&1/o(0)>0)},{asinh:function u(e){return isFinite(e=+e)&&0!=e?e<0?-u(-e):i(e+a(e*e+1)):e}})},function(e,t,n){"use strict";var r=n(0),o=Math.atanh,i=Math.log;r({target:"Math",stat:!0,forced:!(o&&1/o(-0)<0)},{atanh:function(e){return 0==(e=+e)?e:i((1+e)/(1-e))/2}})},function(e,t,n){"use strict";var r=n(0),o=n(102),i=Math.abs,a=Math.pow;r({target:"Math",stat:!0},{cbrt:function(e){return o(e=+e)*a(i(e),1/3)}})},function(e,t,n){"use strict";var r=n(0),o=Math.floor,i=Math.log,a=Math.LOG2E;r({target:"Math",stat:!0},{clz32:function(e){return(e>>>=0)?31-o(i(e+.5)*a):32}})},function(e,t,n){"use strict";var r=n(0),o=n(77),i=Math.cosh,a=Math.abs,u=Math.E;r({target:"Math",stat:!0,forced:!i||i(710)===Infinity},{cosh:function(e){var t=o(a(e)-1)+1;return(t+1/(t*u*u))*(u/2)}})},function(e,t,n){"use strict";var r=n(0),o=n(77);r({target:"Math",stat:!0,forced:o!=Math.expm1},{expm1:o})},function(e,t,n){"use strict";n(0)({target:"Math",stat:!0},{fround:n(238)})},function(e,t,n){"use strict";var r=n(102),o=Math.abs,i=Math.pow,a=i(2,-52),u=i(2,-23),c=i(2,127)*(2-u),s=i(2,-126);e.exports=Math.fround||function(e){var t,n,i=o(e),l=r(e);return ic||n!=n?l*Infinity:l*n}},function(e,t,n){"use strict";var r=n(0),o=Math.hypot,i=Math.abs,a=Math.sqrt;r({target:"Math",stat:!0,forced:!!o&&o(Infinity,NaN)!==Infinity},{hypot:function(e,t){for(var n,r,o=0,u=0,c=arguments.length,s=0;u0?(r=n/s)*r:n;return s===Infinity?Infinity:s*a(o)}})},function(e,t,n){"use strict";var r=n(0),o=n(1),i=Math.imul;r({target:"Math",stat:!0,forced:o((function(){return-5!=i(4294967295,5)||2!=i.length}))},{imul:function(e,t){var n=+e,r=+t,o=65535&n,i=65535&r;return 0|o*i+((65535&n>>>16)*i+o*(65535&r>>>16)<<16>>>0)}})},function(e,t,n){"use strict";var r=n(0),o=Math.log,i=Math.LOG10E;r({target:"Math",stat:!0},{log10:function(e){return o(e)*i}})},function(e,t,n){"use strict";n(0)({target:"Math",stat:!0},{log1p:n(143)})},function(e,t,n){"use strict";var r=n(0),o=Math.log,i=Math.LN2;r({target:"Math",stat:!0},{log2:function(e){return o(e)/i}})},function(e,t,n){"use strict";n(0)({target:"Math",stat:!0},{sign:n(102)})},function(e,t,n){"use strict";var r=n(0),o=n(1),i=n(77),a=Math.abs,u=Math.exp,c=Math.E;r({target:"Math",stat:!0,forced:o((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(e){return a(e=+e)<1?(i(e)-i(-e))/2:(u(e-1)-u(-e-1))*(c/2)}})},function(e,t,n){"use strict";var r=n(0),o=n(77),i=Math.exp;r({target:"Math",stat:!0},{tanh:function(e){var t=o(e=+e),n=o(-e);return t==Infinity?1:n==Infinity?-1:(t-n)/(i(e)+i(-e))}})},function(e,t,n){"use strict";n(38)(Math,"Math",!0)},function(e,t,n){"use strict";var r=n(0),o=Math.ceil,i=Math.floor;r({target:"Math",stat:!0},{trunc:function(e){return(e>0?i:o)(e)}})},function(e,t,n){"use strict";var r=n(5),o=n(2),i=n(59),a=n(18),u=n(14),c=n(28),s=n(76),l=n(29),f=n(1),d=n(37),p=n(43).f,h=n(16).f,v=n(11).f,g=n(51).trim,m=o.Number,y=m.prototype,b="Number"==c(d(y)),_=function(e){var t,n,r,o,i,a,u,c,s=l(e,!1);if("string"==typeof s&&s.length>2)if(43===(t=(s=g(s)).charCodeAt(0))||45===t){if(88===(n=s.charCodeAt(2))||120===n)return NaN}else if(48===t){switch(s.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+s}for(a=(i=s.slice(2)).length,u=0;uo)return NaN;return parseInt(i,r)}return+s};if(i("Number",!m(" 0o1")||!m("0b1")||m("+0x1"))){for(var w,x=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof x&&(b?f((function(){y.valueOf.call(n)})):"Number"!=c(n))?s(new m(_(t)),n,x):_(t)},E=r?p(m):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),C=0;E.length>C;C++)u(m,w=E[C])&&!u(x,w)&&v(x,w,h(m,w));x.prototype=y,y.constructor=x,a(o,"Number",x)}},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)})},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{isFinite:n(252)})},function(e,t,n){"use strict";var r=n(2).isFinite;e.exports=Number.isFinite||function(e){return"number"==typeof e&&r(e)}},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{isInteger:n(144)})},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{isNaN:function(e){return e!=e}})},function(e,t,n){"use strict";var r=n(0),o=n(144),i=Math.abs;r({target:"Number",stat:!0},{isSafeInteger:function(e){return o(e)&&i(e)<=9007199254740991}})},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991})},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991})},function(e,t,n){"use strict";var r=n(0),o=n(259);r({target:"Number",stat:!0,forced:Number.parseFloat!=o},{parseFloat:o})},function(e,t,n){"use strict";var r=n(2),o=n(51).trim,i=n(78),a=r.parseFloat,u=1/a(i+"-0")!=-Infinity;e.exports=u?function(e){var t=o(String(e)),n=a(t);return 0===n&&"-"==t.charAt(0)?-0:n}:a},function(e,t,n){"use strict";var r=n(0),o=n(145);r({target:"Number",stat:!0,forced:Number.parseInt!=o},{parseInt:o})},function(e,t,n){"use strict";var r=n(0),o=n(26),i=n(262),a=n(101),u=n(1),c=1..toFixed,s=Math.floor,l=function f(e,t,n){return 0===t?n:t%2==1?f(e,t-1,n*e):f(e*e,t/2,n)};r({target:"Number",proto:!0,forced:c&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!u((function(){c.call({})}))},{toFixed:function(e){var t,n,r,u,c=i(this),f=o(e),d=[0,0,0,0,0,0],p="",h="0",v=function(e,t){for(var n=-1,r=t;++n<6;)r+=e*d[n],d[n]=r%1e7,r=s(r/1e7)},g=function(e){for(var t=6,n=0;--t>=0;)n+=d[t],d[t]=s(n/e),n=n%e*1e7},m=function(){for(var e=6,t="";--e>=0;)if(""!==t||0===e||0!==d[e]){var n=String(d[e]);t=""===t?n:t+a.call("0",7-n.length)+n}return t};if(f<0||f>20)throw RangeError("Incorrect fraction digits");if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return String(c);if(c<0&&(p="-",c=-c),c>1e-21)if(n=(t=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}(c*l(2,69,1))-69)<0?c*l(2,-t,1):c/l(2,t,1),n*=4503599627370496,(t=52-t)>0){for(v(0,n),r=f;r>=7;)v(1e7,0),r-=7;for(v(l(10,r,1),0),r=t-1;r>=23;)g(1<<23),r-=23;g(1<0?p+((u=h.length)<=f?"0."+a.call("0",f-u)+h:h.slice(0,u-f)+"."+h.slice(u-f)):p+h}})},function(e,t,n){"use strict";var r=n(28);e.exports=function(e){if("number"!=typeof e&&"Number"!=r(e))throw TypeError("Incorrect invocation");return+e}},function(e,t,n){"use strict";var r=n(0),o=n(264);r({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},function(e,t,n){"use strict";var r=n(5),o=n(1),i=n(60),a=n(90),u=n(68),c=n(12),s=n(55),l=Object.assign,f=Object.defineProperty;e.exports=!l||o((function(){if(r&&1!==l({b:1},l(f({},"a",{enumerable:!0,get:function(){f(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol();return e[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(e){t[e]=e})),7!=l({},e)[n]||"abcdefghijklmnopqrst"!=i(l({},t)).join("")}))?function(e,t){for(var n=c(e),o=arguments.length,l=1,f=a.f,d=u.f;o>l;)for(var p,h=s(arguments[l++]),v=f?i(h).concat(f(h)):i(h),g=v.length,m=0;g>m;)p=v[m++],r&&!d.call(h,p)||(n[p]=h[p]);return n}:l},function(e,t,n){"use strict";n(0)({target:"Object",stat:!0,sham:!n(5)},{create:n(37)})},function(e,t,n){"use strict";var r=n(0),o=n(5),i=n(79),a=n(12),u=n(27),c=n(11);o&&r({target:"Object",proto:!0,forced:i},{__defineGetter__:function(e,t){c.f(a(this),e,{get:u(t),enumerable:!0,configurable:!0})}})},function(e,t,n){"use strict";var r=n(0),o=n(5);r({target:"Object",stat:!0,forced:!o,sham:!o},{defineProperties:n(129)})},function(e,t,n){"use strict";var r=n(0),o=n(5);r({target:"Object",stat:!0,forced:!o,sham:!o},{defineProperty:n(11).f})},function(e,t,n){"use strict";var r=n(0),o=n(5),i=n(79),a=n(12),u=n(27),c=n(11);o&&r({target:"Object",proto:!0,forced:i},{__defineSetter__:function(e,t){c.f(a(this),e,{set:u(t),enumerable:!0,configurable:!0})}})},function(e,t,n){"use strict";var r=n(0),o=n(146).entries;r({target:"Object",stat:!0},{entries:function(e){return o(e)}})},function(e,t,n){"use strict";var r=n(0),o=n(65),i=n(1),a=n(4),u=n(47).onFreeze,c=Object.freeze;r({target:"Object",stat:!0,forced:i((function(){c(1)})),sham:!o},{freeze:function(e){return c&&a(e)?c(u(e)):e}})},function(e,t,n){"use strict";var r=n(0),o=n(66),i=n(45);r({target:"Object",stat:!0},{fromEntries:function(e){var t={};return o(e,(function(e,n){i(t,e,n)}),undefined,!0),t}})},function(e,t,n){"use strict";var r=n(0),o=n(1),i=n(21),a=n(16).f,u=n(5),c=o((function(){a(1)}));r({target:"Object",stat:!0,forced:!u||c,sham:!u},{getOwnPropertyDescriptor:function(e,t){return a(i(e),t)}})},function(e,t,n){"use strict";var r=n(0),o=n(5),i=n(88),a=n(21),u=n(16),c=n(45);r({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(e){for(var t,n,r=a(e),o=u.f,s=i(r),l={},f=0;s.length>f;)(n=o(r,t=s[f++]))!==undefined&&c(l,t,n);return l}})},function(e,t,n){"use strict";var r=n(0),o=n(1),i=n(131).f;r({target:"Object",stat:!0,forced:o((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:i})},function(e,t,n){"use strict";var r=n(0),o=n(1),i=n(12),a=n(31),u=n(98);r({target:"Object",stat:!0,forced:o((function(){a(1)})),sham:!u},{getPrototypeOf:function(e){return a(i(e))}})},function(e,t,n){"use strict";n(0)({target:"Object",stat:!0},{is:n(147)})},function(e,t,n){"use strict";var r=n(0),o=n(1),i=n(4),a=Object.isExtensible;r({target:"Object",stat:!0,forced:o((function(){a(1)}))},{isExtensible:function(e){return!!i(e)&&(!a||a(e))}})},function(e,t,n){"use strict";var r=n(0),o=n(1),i=n(4),a=Object.isFrozen;r({target:"Object",stat:!0,forced:o((function(){a(1)}))},{isFrozen:function(e){return!i(e)||!!a&&a(e)}})},function(e,t,n){"use strict";var r=n(0),o=n(1),i=n(4),a=Object.isSealed;r({target:"Object",stat:!0,forced:o((function(){a(1)}))},{isSealed:function(e){return!i(e)||!!a&&a(e)}})},function(e,t,n){"use strict";var r=n(0),o=n(12),i=n(60);r({target:"Object",stat:!0,forced:n(1)((function(){i(1)}))},{keys:function(e){return i(o(e))}})},function(e,t,n){"use strict";var r=n(0),o=n(5),i=n(79),a=n(12),u=n(29),c=n(31),s=n(16).f;o&&r({target:"Object",proto:!0,forced:i},{__lookupGetter__:function(e){var t,n=a(this),r=u(e,!0);do{if(t=s(n,r))return t.get}while(n=c(n))}})},function(e,t,n){"use strict";var r=n(0),o=n(5),i=n(79),a=n(12),u=n(29),c=n(31),s=n(16).f;o&&r({target:"Object",proto:!0,forced:i},{__lookupSetter__:function(e){var t,n=a(this),r=u(e,!0);do{if(t=s(n,r))return t.set}while(n=c(n))}})},function(e,t,n){"use strict";var r=n(0),o=n(4),i=n(47).onFreeze,a=n(65),u=n(1),c=Object.preventExtensions;r({target:"Object",stat:!0,forced:u((function(){c(1)})),sham:!a},{preventExtensions:function(e){return c&&o(e)?c(i(e)):e}})},function(e,t,n){"use strict";var r=n(0),o=n(4),i=n(47).onFreeze,a=n(65),u=n(1),c=Object.seal;r({target:"Object",stat:!0,forced:u((function(){c(1)})),sham:!a},{seal:function(e){return c&&o(e)?c(i(e)):e}})},function(e,t,n){"use strict";n(0)({target:"Object",stat:!0},{setPrototypeOf:n(46)})},function(e,t,n){"use strict";var r=n(96),o=n(18),i=n(288);r||o(Object.prototype,"toString",i,{unsafe:!0})},function(e,t,n){"use strict";var r=n(96),o=n(71);e.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},function(e,t,n){"use strict";var r=n(0),o=n(146).values;r({target:"Object",stat:!0},{values:function(e){return o(e)}})},function(e,t,n){"use strict";var r=n(0),o=n(145);r({global:!0,forced:parseInt!=o},{parseInt:o})},function(e,t,n){"use strict";var r,o,i,a,u=n(0),c=n(33),s=n(2),l=n(32),f=n(148),d=n(18),p=n(64),h=n(38),v=n(49),g=n(4),m=n(27),y=n(50),b=n(28),_=n(86),w=n(66),x=n(72),E=n(40),C=n(103).set,S=n(150),N=n(151),k=n(292),O=n(152),A=n(293),I=n(30),T=n(59),M=n(10),V=n(92),L=M("species"),P="Promise",j=I.get,B=I.set,R=I.getterFor(P),F=f,D=s.TypeError,K=s.document,z=s.process,U=l("fetch"),Y=O.f,H=Y,W="process"==b(z),$=!!(K&&K.createEvent&&s.dispatchEvent),G=T(P,(function(){if(!(_(F)!==String(F))){if(66===V)return!0;if(!W&&"function"!=typeof PromiseRejectionEvent)return!0}if(c&&!F.prototype["finally"])return!0;if(V>=51&&/native code/.test(F))return!1;var e=F.resolve(1),t=function(e){e((function(){}),(function(){}))};return(e.constructor={})[L]=t,!(e.then((function(){}))instanceof t)})),q=G||!x((function(e){F.all(e)["catch"]((function(){}))})),X=function(e){var t;return!(!g(e)||"function"!=typeof(t=e.then))&&t},Q=function(e,t,n){if(!t.notified){t.notified=!0;var r=t.reactions;S((function(){for(var o=t.value,i=1==t.state,a=0;r.length>a;){var u,c,s,l=r[a++],f=i?l.ok:l.fail,d=l.resolve,p=l.reject,h=l.domain;try{f?(i||(2===t.rejection&&te(e,t),t.rejection=1),!0===f?u=o:(h&&h.enter(),u=f(o),h&&(h.exit(),s=!0)),u===l.promise?p(D("Promise-chain cycle")):(c=X(u))?c.call(u,d,p):d(u)):p(o)}catch(v){h&&!s&&h.exit(),p(v)}}t.reactions=[],t.notified=!1,n&&!t.rejection&&Z(e,t)}))}},J=function(e,t,n){var r,o;$?((r=K.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),s.dispatchEvent(r)):r={promise:t,reason:n},(o=s["on"+e])?o(r):"unhandledrejection"===e&&k("Unhandled promise rejection",n)},Z=function(e,t){C.call(s,(function(){var n,r=t.value;if(ee(t)&&(n=A((function(){W?z.emit("unhandledRejection",r,e):J("unhandledrejection",e,r)})),t.rejection=W||ee(t)?2:1,n.error))throw n.value}))},ee=function(e){return 1!==e.rejection&&!e.parent},te=function(e,t){C.call(s,(function(){W?z.emit("rejectionHandled",e):J("rejectionhandled",e,t.value)}))},ne=function(e,t,n,r){return function(o){e(t,n,o,r)}},re=function(e,t,n,r){t.done||(t.done=!0,r&&(t=r),t.value=n,t.state=2,Q(e,t,!0))},oe=function ie(e,t,n,r){if(!t.done){t.done=!0,r&&(t=r);try{if(e===n)throw D("Promise can't be resolved itself");var o=X(n);o?S((function(){var r={done:!1};try{o.call(n,ne(ie,e,r,t),ne(re,e,r,t))}catch(i){re(e,r,i,t)}})):(t.value=n,t.state=1,Q(e,t,!1))}catch(i){re(e,{done:!1},i,t)}}};G&&(F=function(e){y(this,F,P),m(e),r.call(this);var t=j(this);try{e(ne(oe,this,t),ne(re,this,t))}catch(n){re(this,t,n)}},(r=function(e){B(this,{type:P,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:undefined})}).prototype=p(F.prototype,{then:function(e,t){var n=R(this),r=Y(E(this,F));return r.ok="function"!=typeof e||e,r.fail="function"==typeof t&&t,r.domain=W?z.domain:undefined,n.parent=!0,n.reactions.push(r),0!=n.state&&Q(this,n,!1),r.promise},"catch":function(e){return this.then(undefined,e)}}),o=function(){var e=new r,t=j(e);this.promise=e,this.resolve=ne(oe,e,t),this.reject=ne(re,e,t)},O.f=Y=function(e){return e===F||e===i?new o(e):H(e)},c||"function"!=typeof f||(a=f.prototype.then,d(f.prototype,"then",(function(e,t){var n=this;return new F((function(e,t){a.call(n,e,t)})).then(e,t)}),{unsafe:!0}),"function"==typeof U&&u({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return N(F,U.apply(s,arguments))}}))),u({global:!0,wrap:!0,forced:G},{Promise:F}),h(F,P,!1,!0),v(P),i=l(P),u({target:P,stat:!0,forced:G},{reject:function(e){var t=Y(this);return t.reject.call(undefined,e),t.promise}}),u({target:P,stat:!0,forced:c||G},{resolve:function(e){return N(c&&this===i?F:this,e)}}),u({target:P,stat:!0,forced:q},{all:function(e){var t=this,n=Y(t),r=n.resolve,o=n.reject,i=A((function(){var n=m(t.resolve),i=[],a=0,u=1;w(e,(function(e){var c=a++,s=!1;i.push(undefined),u++,n.call(t,e).then((function(e){s||(s=!0,i[c]=e,--u||r(i))}),o)})),--u||r(i)}));return i.error&&o(i.value),n.promise},race:function(e){var t=this,n=Y(t),r=n.reject,o=A((function(){var o=m(t.resolve);w(e,(function(e){o.call(t,e).then(n.resolve,r)}))}));return o.error&&r(o.value),n.promise}})},function(e,t,n){"use strict";var r=n(2);e.exports=function(e,t){var n=r.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}},function(e,t,n){"use strict";e.exports=function(e){try{return{error:!1,value:e()}}catch(t){return{error:!0,value:t}}}},function(e,t,n){"use strict";var r=n(0),o=n(33),i=n(148),a=n(1),u=n(32),c=n(40),s=n(151),l=n(18);r({target:"Promise",proto:!0,real:!0,forced:!!i&&a((function(){i.prototype["finally"].call({then:function(){}},(function(){}))}))},{"finally":function(e){var t=c(this,u("Promise")),n="function"==typeof e;return this.then(n?function(n){return s(t,e()).then((function(){return n}))}:e,n?function(n){return s(t,e()).then((function(){throw n}))}:e)}}),o||"function"!=typeof i||i.prototype["finally"]||l(i.prototype,"finally",u("Promise").prototype["finally"])},function(e,t,n){"use strict";var r=n(0),o=n(32),i=n(27),a=n(6),u=n(1),c=o("Reflect","apply"),s=Function.apply;r({target:"Reflect",stat:!0,forced:!u((function(){c((function(){}))}))},{apply:function(e,t,n){return i(e),a(n),c?c(e,t,n):s.call(e,t,n)}})},function(e,t,n){"use strict";var r=n(0),o=n(32),i=n(27),a=n(6),u=n(4),c=n(37),s=n(141),l=n(1),f=o("Reflect","construct"),d=l((function(){function e(){}return!(f((function(){}),[],e)instanceof e)})),p=!l((function(){f((function(){}))})),h=d||p;r({target:"Reflect",stat:!0,forced:h,sham:h},{construct:function(e,t){i(e),a(t);var n=arguments.length<3?e:i(arguments[2]);if(p&&!d)return f(e,t,n);if(e==n){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var r=[null];return r.push.apply(r,t),new(s.apply(e,r))}var o=n.prototype,l=c(u(o)?o:Object.prototype),h=Function.apply.call(e,l,t);return u(h)?h:l}})},function(e,t,n){"use strict";var r=n(0),o=n(5),i=n(6),a=n(29),u=n(11);r({target:"Reflect",stat:!0,forced:n(1)((function(){Reflect.defineProperty(u.f({},1,{value:1}),1,{value:2})})),sham:!o},{defineProperty:function(e,t,n){i(e);var r=a(t,!0);i(n);try{return u.f(e,r,n),!0}catch(o){return!1}}})},function(e,t,n){"use strict";var r=n(0),o=n(6),i=n(16).f;r({target:"Reflect",stat:!0},{deleteProperty:function(e,t){var n=i(o(e),t);return!(n&&!n.configurable)&&delete e[t]}})},function(e,t,n){"use strict";var r=n(0),o=n(4),i=n(6),a=n(14),u=n(16),c=n(31);r({target:"Reflect",stat:!0},{get:function s(e,t){var n,r,l=arguments.length<3?e:arguments[2];return i(e)===l?e[t]:(n=u.f(e,t))?a(n,"value")?n.value:n.get===undefined?undefined:n.get.call(l):o(r=c(e))?s(r,t,l):void 0}})},function(e,t,n){"use strict";var r=n(0),o=n(5),i=n(6),a=n(16);r({target:"Reflect",stat:!0,sham:!o},{getOwnPropertyDescriptor:function(e,t){return a.f(i(e),t)}})},function(e,t,n){"use strict";var r=n(0),o=n(6),i=n(31);r({target:"Reflect",stat:!0,sham:!n(98)},{getPrototypeOf:function(e){return i(o(e))}})},function(e,t,n){"use strict";n(0)({target:"Reflect",stat:!0},{has:function(e,t){return t in e}})},function(e,t,n){"use strict";var r=n(0),o=n(6),i=Object.isExtensible;r({target:"Reflect",stat:!0},{isExtensible:function(e){return o(e),!i||i(e)}})},function(e,t,n){"use strict";n(0)({target:"Reflect",stat:!0},{ownKeys:n(88)})},function(e,t,n){"use strict";var r=n(0),o=n(32),i=n(6);r({target:"Reflect",stat:!0,sham:!n(65)},{preventExtensions:function(e){i(e);try{var t=o("Object","preventExtensions");return t&&t(e),!0}catch(n){return!1}}})},function(e,t,n){"use strict";var r=n(0),o=n(6),i=n(4),a=n(14),u=n(1),c=n(11),s=n(16),l=n(31),f=n(42);r({target:"Reflect",stat:!0,forced:u((function(){var e=c.f({},"a",{configurable:!0});return!1!==Reflect.set(l(e),"a",1,e)}))},{set:function d(e,t,n){var r,u,p=arguments.length<4?e:arguments[3],h=s.f(o(e),t);if(!h){if(i(u=l(e)))return d(u,t,n,p);h=f(0)}if(a(h,"value")){if(!1===h.writable||!i(p))return!1;if(r=s.f(p,t)){if(r.get||r.set||!1===r.writable)return!1;r.value=n,c.f(p,t,r)}else c.f(p,t,f(0,n));return!0}return h.set!==undefined&&(h.set.call(p,n),!0)}})},function(e,t,n){"use strict";var r=n(0),o=n(6),i=n(138),a=n(46);a&&r({target:"Reflect",stat:!0},{setPrototypeOf:function(e,t){o(e),i(t);try{return a(e,t),!0}catch(n){return!1}}})},function(e,t,n){"use strict";var r=n(5),o=n(2),i=n(59),a=n(76),u=n(11).f,c=n(43).f,s=n(104),l=n(80),f=n(105),d=n(18),p=n(1),h=n(30).set,v=n(49),g=n(10)("match"),m=o.RegExp,y=m.prototype,b=/a/g,_=/a/g,w=new m(b)!==b,x=f.UNSUPPORTED_Y;if(r&&i("RegExp",!w||x||p((function(){return _[g]=!1,m(b)!=b||m(_)==_||"/a/i"!=m(b,"i")})))){for(var E=function(e,t){var n,r=this instanceof E,o=s(e),i=t===undefined;if(!r&&o&&e.constructor===E&&i)return e;w?o&&!i&&(e=e.source):e instanceof E&&(i&&(t=l.call(e)),e=e.source),x&&(n=!!t&&t.indexOf("y")>-1)&&(t=t.replace(/y/g,""));var u=a(w?new m(e,t):m(e,t),r?this:y,E);return x&&n&&h(u,{sticky:n}),u},C=function(e){e in E||u(E,e,{configurable:!0,get:function(){return m[e]},set:function(t){m[e]=t}})},S=c(m),N=0;S.length>N;)C(S[N++]);y.constructor=E,E.prototype=y,d(o,"RegExp",E)}v("RegExp")},function(e,t,n){"use strict";var r=n(5),o=n(11),i=n(80),a=n(105).UNSUPPORTED_Y;r&&("g"!=/./g.flags||a)&&o.f(RegExp.prototype,"flags",{configurable:!0,get:i})},function(e,t,n){"use strict";var r=n(18),o=n(6),i=n(1),a=n(80),u=RegExp.prototype,c=u.toString,s=i((function(){return"/a/b"!=c.call({source:"a",flags:"b"})})),l="toString"!=c.name;(s||l)&&r(RegExp.prototype,"toString",(function(){var e=o(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(n===undefined&&e instanceof RegExp&&!("flags"in u)?a.call(e):n)}),{unsafe:!0})},function(e,t,n){"use strict";var r=n(75),o=n(142);e.exports=r("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),o)},function(e,t,n){"use strict";var r=n(0),o=n(106).codeAt;r({target:"String",proto:!0},{codePointAt:function(e){return o(this,e)}})},function(e,t,n){"use strict";var r,o=n(0),i=n(16).f,a=n(8),u=n(107),c=n(17),s=n(108),l=n(33),f="".endsWith,d=Math.min,p=s("endsWith");o({target:"String",proto:!0,forced:!!(l||p||(r=i(String.prototype,"endsWith"),!r||r.writable))&&!p},{endsWith:function(e){var t=String(c(this));u(e);var n=arguments.length>1?arguments[1]:undefined,r=a(t.length),o=n===undefined?r:d(a(n),r),i=String(e);return f?f.call(t,i,o):t.slice(o-i.length,o)===i}})},function(e,t,n){"use strict";var r=n(0),o=n(36),i=String.fromCharCode,a=String.fromCodePoint;r({target:"String",stat:!0,forced:!!a&&1!=a.length},{fromCodePoint:function(e){for(var t,n=[],r=arguments.length,a=0;r>a;){if(t=+arguments[a++],o(t,1114111)!==t)throw RangeError(t+" is not a valid code point");n.push(t<65536?i(t):i(55296+((t-=65536)>>10),t%1024+56320))}return n.join("")}})},function(e,t,n){"use strict";var r=n(0),o=n(107),i=n(17);r({target:"String",proto:!0,forced:!n(108)("includes")},{includes:function(e){return!!~String(i(this)).indexOf(o(e),arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(106).charAt,o=n(30),i=n(97),a=o.set,u=o.getterFor("String Iterator");i(String,"String",(function(e){a(this,{type:"String Iterator",string:String(e),index:0})}),(function(){var e,t=u(this),n=t.string,o=t.index;return o>=n.length?{value:undefined,done:!0}:(e=r(n,o),t.index+=e.length,{value:e,done:!1})}))},function(e,t,n){"use strict";var r=n(82),o=n(6),i=n(8),a=n(17),u=n(109),c=n(83);r("match",1,(function(e,t,n){return[function(t){var n=a(this),r=t==undefined?undefined:t[e];return r!==undefined?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var a=o(e),s=String(this);if(!a.global)return c(a,s);var l=a.unicode;a.lastIndex=0;for(var f,d=[],p=0;null!==(f=c(a,s));){var h=String(f[0]);d[p]=h,""===h&&(a.lastIndex=u(s,i(a.lastIndex),l)),p++}return 0===p?null:d}]}))},function(e,t,n){"use strict";var r=n(0),o=n(100).end;r({target:"String",proto:!0,forced:n(154)},{padEnd:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(0),o=n(100).start;r({target:"String",proto:!0,forced:n(154)},{padStart:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(0),o=n(21),i=n(8);r({target:"String",stat:!0},{raw:function(e){for(var t=o(e.raw),n=i(t.length),r=arguments.length,a=[],u=0;n>u;)a.push(String(t[u++])),u]*>)/g,v=/\$([$&'`]|\d\d?)/g;r("replace",2,(function(e,t,n,r){var g=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,m=r.REPLACE_KEEPS_$0,y=g?"$":"$0";return[function(n,r){var o=c(this),i=n==undefined?undefined:n[e];return i!==undefined?i.call(n,o,r):t.call(String(o),n,r)},function(e,r){if(!g&&m||"string"==typeof r&&-1===r.indexOf(y)){var i=n(t,e,this,r);if(i.done)return i.value}var c=o(e),p=String(this),h="function"==typeof r;h||(r=String(r));var v=c.global;if(v){var _=c.unicode;c.lastIndex=0}for(var w=[];;){var x=l(c,p);if(null===x)break;if(w.push(x),!v)break;""===String(x[0])&&(c.lastIndex=s(p,a(c.lastIndex),_))}for(var E,C="",S=0,N=0;N=S&&(C+=p.slice(S,O)+V,S=O+k.length)}return C+p.slice(S)}];function b(e,n,r,o,a,u){var c=r+e.length,s=o.length,l=v;return a!==undefined&&(a=i(a),l=h),t.call(u,l,(function(t,i){var u;switch(i.charAt(0)){case"$":return"$";case"&":return e;case"`":return n.slice(0,r);case"'":return n.slice(c);case"<":u=a[i.slice(1,-1)];break;default:var l=+i;if(0===l)return t;if(l>s){var f=p(l/10);return 0===f?t:f<=s?o[f-1]===undefined?i.charAt(1):o[f-1]+i.charAt(1):t}u=o[l-1]}return u===undefined?"":u}))}}))},function(e,t,n){"use strict";var r=n(82),o=n(6),i=n(17),a=n(147),u=n(83);r("search",1,(function(e,t,n){return[function(t){var n=i(this),r=t==undefined?undefined:t[e];return r!==undefined?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var i=o(e),c=String(this),s=i.lastIndex;a(s,0)||(i.lastIndex=0);var l=u(i,c);return a(i.lastIndex,s)||(i.lastIndex=s),null===l?-1:l.index}]}))},function(e,t,n){"use strict";var r=n(82),o=n(104),i=n(6),a=n(17),u=n(40),c=n(109),s=n(8),l=n(83),f=n(81),d=n(1),p=[].push,h=Math.min,v=!d((function(){return!RegExp(4294967295,"y")}));r("split",2,(function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(a(this)),i=n===undefined?4294967295:n>>>0;if(0===i)return[];if(e===undefined)return[r];if(!o(e))return t.call(r,e,i);for(var u,c,s,l=[],d=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,v=new RegExp(e.source,d+"g");(u=f.call(v,r))&&!((c=v.lastIndex)>h&&(l.push(r.slice(h,u.index)),u.length>1&&u.index=i));)v.lastIndex===u.index&&v.lastIndex++;return h===r.length?!s&&v.test("")||l.push(""):l.push(r.slice(h)),l.length>i?l.slice(0,i):l}:"0".split(undefined,0).length?function(e,n){return e===undefined&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var o=a(this),i=t==undefined?undefined:t[e];return i!==undefined?i.call(t,o,n):r.call(String(o),t,n)},function(e,o){var a=n(r,e,this,o,r!==t);if(a.done)return a.value;var f=i(e),d=String(this),p=u(f,RegExp),g=f.unicode,m=(f.ignoreCase?"i":"")+(f.multiline?"m":"")+(f.unicode?"u":"")+(v?"y":"g"),y=new p(v?f:"^(?:"+f.source+")",m),b=o===undefined?4294967295:o>>>0;if(0===b)return[];if(0===d.length)return null===l(y,d)?[d]:[];for(var _=0,w=0,x=[];w1?arguments[1]:undefined,t.length)),r=String(e);return f?f.call(t,r,n):t.slice(n,n+r.length)===r}})},function(e,t,n){"use strict";var r=n(0),o=n(51).trim;r({target:"String",proto:!0,forced:n(110)("trim")},{trim:function(){return o(this)}})},function(e,t,n){"use strict";var r=n(0),o=n(51).end,i=n(110)("trimEnd"),a=i?function(){return o(this)}:"".trimEnd;r({target:"String",proto:!0,forced:i},{trimEnd:a,trimRight:a})},function(e,t,n){"use strict";var r=n(0),o=n(51).start,i=n(110)("trimStart"),a=i?function(){return o(this)}:"".trimStart;r({target:"String",proto:!0,forced:i},{trimStart:a,trimLeft:a})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("anchor")},{anchor:function(e){return o(this,"a","name",e)}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("big")},{big:function(){return o(this,"big","","")}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("blink")},{blink:function(){return o(this,"blink","","")}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("bold")},{bold:function(){return o(this,"b","","")}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("fixed")},{fixed:function(){return o(this,"tt","","")}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("fontcolor")},{fontcolor:function(e){return o(this,"font","color",e)}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("fontsize")},{fontsize:function(e){return o(this,"font","size",e)}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("italics")},{italics:function(){return o(this,"i","","")}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("link")},{link:function(e){return o(this,"a","href",e)}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("small")},{small:function(){return o(this,"small","","")}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("strike")},{strike:function(){return o(this,"strike","","")}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("sub")},{sub:function(){return o(this,"sub","","")}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("sup")},{sup:function(){return o(this,"sup","","")}})},function(e,t,n){"use strict";n(35)("Float32",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";var r=n(26);e.exports=function(e){var t=r(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},function(e,t,n){"use strict";n(35)("Float64",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(35)("Int8",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(35)("Int16",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(35)("Int32",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(35)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(35)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}}),!0)},function(e,t,n){"use strict";n(35)("Uint16",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(35)("Uint32",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";var r=n(7),o=n(133),i=r.aTypedArray;(0,r.exportTypedArrayMethod)("copyWithin",(function(e,t){return o.call(i(this),e,t,arguments.length>2?arguments[2]:undefined)}))},function(e,t,n){"use strict";var r=n(7),o=n(15).every,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(7),o=n(93),i=r.aTypedArray;(0,r.exportTypedArrayMethod)("fill",(function(e){return o.apply(i(this),arguments)}))},function(e,t,n){"use strict";var r=n(7),o=n(15).filter,i=n(40),a=r.aTypedArray,u=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("filter",(function(e){for(var t=o(a(this),e,arguments.length>1?arguments[1]:undefined),n=i(this,this.constructor),r=0,c=t.length,s=new(u(n))(c);c>r;)s[r]=t[r++];return s}))},function(e,t,n){"use strict";var r=n(7),o=n(15).find,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(7),o=n(15).findIndex,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(7),o=n(15).forEach,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",(function(e){o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(111);(0,n(7).exportTypedArrayStaticMethod)("from",n(156),r)},function(e,t,n){"use strict";var r=n(7),o=n(58).includes,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(7),o=n(58).indexOf,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(2),o=n(7),i=n(136),a=n(10)("iterator"),u=r.Uint8Array,c=i.values,s=i.keys,l=i.entries,f=o.aTypedArray,d=o.exportTypedArrayMethod,p=u&&u.prototype[a],h=!!p&&("values"==p.name||p.name==undefined),v=function(){return c.call(f(this))};d("entries",(function(){return l.call(f(this))})),d("keys",(function(){return s.call(f(this))})),d("values",v,!h),d(a,v,!h)},function(e,t,n){"use strict";var r=n(7),o=r.aTypedArray,i=r.exportTypedArrayMethod,a=[].join;i("join",(function(e){return a.apply(o(this),arguments)}))},function(e,t,n){"use strict";var r=n(7),o=n(139),i=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",(function(e){return o.apply(i(this),arguments)}))},function(e,t,n){"use strict";var r=n(7),o=n(15).map,i=n(40),a=r.aTypedArray,u=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("map",(function(e){return o(a(this),e,arguments.length>1?arguments[1]:undefined,(function(e,t){return new(u(i(e,e.constructor)))(t)}))}))},function(e,t,n){"use strict";var r=n(7),o=n(111),i=r.aTypedArrayConstructor;(0,r.exportTypedArrayStaticMethod)("of",(function(){for(var e=0,t=arguments.length,n=new(i(this))(t);t>e;)n[e]=arguments[e++];return n}),o)},function(e,t,n){"use strict";var r=n(7),o=n(73).left,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",(function(e){return o(i(this),e,arguments.length,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(7),o=n(73).right,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",(function(e){return o(i(this),e,arguments.length,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(7),o=r.aTypedArray,i=r.exportTypedArrayMethod,a=Math.floor;i("reverse",(function(){for(var e,t=o(this).length,n=a(t/2),r=0;r1?arguments[1]:undefined,1),n=this.length,r=a(e),u=o(r.length),s=0;if(u+t>n)throw RangeError("Wrong length");for(;si;)l[i]=n[i++];return l}),i((function(){new Int8Array(1).slice()})))},function(e,t,n){"use strict";var r=n(7),o=n(15).some,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(7),o=r.aTypedArray,i=r.exportTypedArrayMethod,a=[].sort;i("sort",(function(e){return a.call(o(this),e)}))},function(e,t,n){"use strict";var r=n(7),o=n(8),i=n(36),a=n(40),u=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",(function(e,t){var n=u(this),r=n.length,c=i(e,r);return new(a(n,n.constructor))(n.buffer,n.byteOffset+c*n.BYTES_PER_ELEMENT,o((t===undefined?r:i(t,r))-c))}))},function(e,t,n){"use strict";var r=n(2),o=n(7),i=n(1),a=r.Int8Array,u=o.aTypedArray,c=o.exportTypedArrayMethod,s=[].toLocaleString,l=[].slice,f=!!a&&i((function(){s.call(new a(1))}));c("toLocaleString",(function(){return s.apply(f?l.call(u(this)):u(this),arguments)}),i((function(){return[1,2].toLocaleString()!=new a([1,2]).toLocaleString()}))||!i((function(){a.prototype.toLocaleString.call([1,2])})))},function(e,t,n){"use strict";var r=n(7).exportTypedArrayMethod,o=n(1),i=n(2).Uint8Array,a=i&&i.prototype||{},u=[].toString,c=[].join;o((function(){u.call({})}))&&(u=function(){return c.call(this)});var s=a.toString!=u;r("toString",u,s)},function(e,t,n){"use strict";var r,o=n(2),i=n(64),a=n(47),u=n(75),c=n(157),s=n(4),l=n(30).enforce,f=n(124),d=!o.ActiveXObject&&"ActiveXObject"in o,p=Object.isExtensible,h=function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}},v=e.exports=u("WeakMap",h,c);if(f&&d){r=c.getConstructor(h,"WeakMap",!0),a.REQUIRED=!0;var g=v.prototype,m=g["delete"],y=g.has,b=g.get,_=g.set;i(g,{"delete":function(e){if(s(e)&&!p(e)){var t=l(this);return t.frozen||(t.frozen=new r),m.call(this,e)||t.frozen["delete"](e)}return m.call(this,e)},has:function(e){if(s(e)&&!p(e)){var t=l(this);return t.frozen||(t.frozen=new r),y.call(this,e)||t.frozen.has(e)}return y.call(this,e)},get:function(e){if(s(e)&&!p(e)){var t=l(this);return t.frozen||(t.frozen=new r),y.call(this,e)?b.call(this,e):t.frozen.get(e)}return b.call(this,e)},set:function(e,t){if(s(e)&&!p(e)){var n=l(this);n.frozen||(n.frozen=new r),y.call(this,e)?_.call(this,e,t):n.frozen.set(e,t)}else _.call(this,e,t);return this}})}},function(e,t,n){"use strict";n(75)("WeakSet",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),n(157))},function(e,t,n){"use strict";var r=n(0),o=n(2),i=n(103);r({global:!0,bind:!0,enumerable:!0,forced:!o.setImmediate||!o.clearImmediate},{setImmediate:i.set,clearImmediate:i.clear})},function(e,t,n){"use strict";var r=n(0),o=n(2),i=n(150),a=n(28),u=o.process,c="process"==a(u);r({global:!0,enumerable:!0,noTargetGet:!0},{queueMicrotask:function(e){var t=c&&u.domain;i(t?t.bind(e):e)}})},function(e,t,n){"use strict";var r=n(0),o=n(2),i=n(70),a=[].slice,u=function(e){return function(t,n){var r=arguments.length>2,o=r?a.call(arguments,2):undefined;return e(r?function(){("function"==typeof t?t:Function(t)).apply(this,o)}:t,n)}};r({global:!0,bind:!0,forced:/MSIE .\./.test(i)},{setTimeout:u(o.setTimeout),setInterval:u(o.setInterval)})},function(e,t,n){"use strict";t.__esModule=!0,t._CI=Oe,t._HI=B,t._M=Ae,t._MCCC=Ve,t._ME=Te,t._MFCC=Le,t._MP=Ne,t._MR=ye,t.__render=Fe,t.createComponentVNode=function(e,t,n,r,o){var a=new A(1,null,null,e=function(e,t){if(12&e)return e;if(t.prototype&&t.prototype.render)return 4;if(t.render)return 32776;return 8}(e,t),r,function(e,t,n){var r=(32768&e?t.render:t).defaultProps;if(i(r))return n;if(i(n))return l(r,null);return k(n,r)}(e,t,n),function(e,t,n){if(4&e)return n;var r=(32768&e?t.render:t).defaultHooks;if(i(r))return n;if(i(n))return r;return k(n,r)}(e,t,o),t);C.createVNode&&C.createVNode(a);return a},t.createFragment=M,t.createPortal=function(e,t){var n=B(e);return I(1024,1024,null,n,0,null,n.key,t)},t.createRef=function(){return{current:null}},t.createRenderer=function(e){return function(t,n,r,o){e||(e=t),De(n,e,r,o)}},t.createTextVNode=T,t.createVNode=I,t.directClone=V,t.findDOMfromVNode=b,t.forwardRef=function(e){return{render:e}},t.getFlagsForElementVnode=function(e){switch(e){case"svg":return 32;case"input":return 64;case"select":return 256;case"textarea":return 128;case"$F":return 8192;default:return 1}},t.linkEvent=function(e,t){if(u(t))return{data:e,event:t};return null},t.normalizeProps=function(e){var t=e.props;if(t){var n=e.flags;481&n&&(void 0!==t.children&&i(e.children)&&j(e,t.children),void 0!==t.className&&(e.className=t.className||null,t.className=undefined)),void 0!==t.key&&(e.key=t.key,t.key=undefined),void 0!==t.ref&&(e.ref=8&n?l(e.ref,t.ref):t.ref,t.ref=undefined)}return e},t.render=De,t.rerender=We,t.version=t.options=t.Fragment=t.EMPTY_OBJ=t.Component=void 0;var r=Array.isArray;function o(e){var t=typeof e;return"string"===t||"number"===t}function i(e){return null==e}function a(e){return null===e||!1===e||!0===e||void 0===e}function u(e){return"function"==typeof e}function c(e){return"string"==typeof e}function s(e){return null===e}function l(e,t){var n={};if(e)for(var r in e)n[r]=e[r];if(t)for(var o in t)n[o]=t[o];return n}function f(e){return!s(e)&&"object"==typeof e}var d={};t.EMPTY_OBJ=d;function p(e){return e.substr(2).toLowerCase()}function h(e,t){e.appendChild(t)}function v(e,t,n){s(n)?h(e,t):e.insertBefore(t,n)}function g(e,t){e.removeChild(t)}function m(e){for(var t=0;t0,h=s(d),v=c(d)&&"$"===d[0];p||h||v?(n=n||t.slice(0,l),(p||v)&&(f=V(f)),(h||v)&&(f.key="$"+l),n.push(f)):n&&n.push(f),f.flags|=65536}}i=0===(n=n||t).length?1:8}else(n=t).flags|=65536,81920&t.flags&&(n=V(t)),i=2;return e.children=n,e.childFlags=i,e}function B(e){return a(e)||o(e)?T(e,null):r(e)?M(e,0,null):16384&e.flags?V(e):e}var R="http://www.w3.org/1999/xlink",F="http://www.w3.org/XML/1998/namespace",D={"xlink:actuate":R,"xlink:arcrole":R,"xlink:href":R,"xlink:role":R,"xlink:show":R,"xlink:title":R,"xlink:type":R,"xml:base":F,"xml:lang":F,"xml:space":F};function K(e){return{onClick:e,onDblClick:e,onFocusIn:e,onFocusOut:e,onKeyDown:e,onKeyPress:e,onKeyUp:e,onMouseDown:e,onMouseMove:e,onMouseUp:e,onTouchEnd:e,onTouchMove:e,onTouchStart:e}}var z=K(0),U=K(null),Y=K(!0);function H(e,t){var n=t.$EV;return n||(n=t.$EV=K(null)),n[e]||1==++z[e]&&(U[e]=function(e){var t="onClick"===e||"onDblClick"===e?function(e){return function(t){0===t.button?$(t,!0,e,Q(t)):t.stopPropagation()}}(e):function(e){return function(t){$(t,!1,e,Q(t))}}(e);return document.addEventListener(p(e),t),t}(e)),n}function W(e,t){var n=t.$EV;n&&n[e]&&(0==--z[e]&&(document.removeEventListener(p(e),U[e]),U[e]=null),n[e]=null)}function $(e,t,n,r){var o=function(e){return u(e.composedPath)?e.composedPath()[0]:e.target}(e);do{if(t&&o.disabled)return;var i=o.$EV;if(i){var a=i[n];if(a&&(r.dom=o,a.event?a.event(a.data,e):a(e),e.cancelBubble))return}o=o.parentNode}while(!s(o))}function G(){this.cancelBubble=!0,this.immediatePropagationStopped||this.stopImmediatePropagation()}function q(){return this.defaultPrevented}function X(){return this.cancelBubble}function Q(e){var t={dom:document};return e.isDefaultPrevented=q,e.isPropagationStopped=X,e.stopPropagation=G,Object.defineProperty(e,"currentTarget",{configurable:!0,get:function(){return t.dom}}),t}function J(e,t,n){if(e[t]){var r=e[t];r.event?r.event(r.data,n):r(n)}else{var o=t.toLowerCase();e[o]&&e[o](n)}}function Z(e,t){var n=function(n){var r=this.$V;if(r){var o=r.props||d,i=r.dom;if(c(e))J(o,e,n);else for(var a=0;a-1&&t.options[a]&&(u=t.options[a].value),n&&i(u)&&(u=e.defaultValue),ae(r,u)}}var se,le,fe=Z("onInput",pe),de=Z("onChange");function pe(e,t,n){var r=e.value,o=t.value;if(i(r)){if(n){var a=e.defaultValue;i(a)||a===o||(t.defaultValue=a,t.value=a)}}else o!==r&&(t.defaultValue=r,t.value=r)}function he(e,t,n,r,o,i){64&e?ie(r,n):256&e?ce(r,n,o,t):128&e&&pe(r,n,o),i&&(n.$V=t)}function ve(e,t,n){64&e?function(e,t){te(t.type)?(ee(e,"change",re),ee(e,"click",oe)):ee(e,"input",ne)}(t,n):256&e?function(e){ee(e,"change",ue)}(t):128&e&&function(e,t){ee(e,"input",fe),t.onChange&&ee(e,"change",de)}(t,n)}function ge(e){return e.type&&te(e.type)?!i(e.checked):!i(e.value)}function me(e){e&&!O(e,null)&&e.current&&(e.current=null)}function ye(e,t,n){e&&(u(e)||void 0!==e.current)&&n.push((function(){O(e,t)||void 0===e.current||(e.current=t)}))}function be(e,t){_e(e),_(e,t)}function _e(e){var t,n=e.flags,r=e.children;if(481&n){t=e.ref;var o=e.props;me(t);var a=e.childFlags;if(!s(o))for(var c=Object.keys(o),l=0,f=c.length;l0;for(var u in a&&(i=ge(n))&&ve(t,r,n),n)Se(u,null,n[u],r,o,i,null);a&&he(t,e,r,n,!0,i)}function ke(e,t,n){var r=B(e.render(t,e.state,n)),o=n;return u(e.getChildContext)&&(o=l(n,e.getChildContext())),e.$CX=o,r}function Oe(e,t,n,r,o,i){var a=new t(n,r),c=a.$N=Boolean(t.getDerivedStateFromProps||a.getSnapshotBeforeUpdate);if(a.$SVG=o,a.$L=i,e.children=a,a.$BS=!1,a.context=r,a.props===d&&(a.props=n),c)a.state=x(a,n,a.state);else if(u(a.componentWillMount)){a.$BR=!0,a.componentWillMount();var l=a.$PS;if(!s(l)){var f=a.state;if(s(f))a.state=l;else for(var p in l)f[p]=l[p];a.$PS=null}a.$BR=!1}return a.$LI=ke(a,n,r),a}function Ae(e,t,n,r,o,i){var a=e.flags|=16384;481&a?Te(e,t,n,r,o,i):4&a?function(e,t,n,r,o,i){var a=Oe(e,e.type,e.props||d,n,r,i);Ae(a.$LI,t,a.$CX,r,o,i),Ve(e.ref,a,i)}(e,t,n,r,o,i):8&a?(!function(e,t,n,r,o,i){Ae(e.children=B(function(e,t){return 32768&e.flags?e.type.render(e.props||d,e.ref,t):e.type(e.props||d,t)}(e,n)),t,n,r,o,i)}(e,t,n,r,o,i),Le(e,i)):512&a||16&a?Ie(e,t,o):8192&a?function(e,t,n,r,o,i){var a=e.children,u=e.childFlags;12&u&&0===a.length&&(u=e.childFlags=2,a=e.children=L());2===u?Ae(a,n,o,r,o,i):Me(a,n,t,r,o,i)}(e,n,t,r,o,i):1024&a&&function(e,t,n,r,o){Ae(e.children,e.ref,t,!1,null,o);var i=L();Ie(i,n,r),e.dom=i.dom}(e,n,t,o,i)}function Ie(e,t,n){var r=e.dom=document.createTextNode(e.children);s(t)||v(t,r,n)}function Te(e,t,n,r,o,a){var u=e.flags,c=e.props,l=e.className,f=e.children,d=e.childFlags,p=e.dom=function(e,t){return t?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e)}(e.type,r=r||(32&u)>0);if(i(l)||""===l||(r?p.setAttribute("class",l):p.className=l),16===d)S(p,f);else if(1!==d){var h=r&&"foreignObject"!==e.type;2===d?(16384&f.flags&&(e.children=f=V(f)),Ae(f,p,n,h,null,a)):8!==d&&4!==d||Me(f,p,n,h,null,a)}s(t)||v(t,p,o),s(c)||Ne(e,u,c,p,r),ye(e.ref,p,a)}function Me(e,t,n,r,o,i){for(var a=0;a0,s!==l){var h=s||d;if((u=l||d)!==d)for(var v in(f=(448&o)>0)&&(p=ge(u)),u){var g=h[v],m=u[v];g!==m&&Se(v,g,m,c,r,p,e)}if(h!==d)for(var y in h)i(u[y])&&!i(h[y])&&Se(y,h[y],null,c,r,p,e)}var b=t.children,_=t.className;e.className!==_&&(i(_)?c.removeAttribute("class"):r?c.setAttribute("class",_):c.className=_);4096&o?function(e,t){e.textContent!==t&&(e.textContent=t)}(c,b):je(e.childFlags,t.childFlags,e.children,b,c,n,r&&"foreignObject"!==t.type,null,e,a);f&&he(o,t,c,u,!1,p);var w=t.ref,x=e.ref;x!==w&&(me(x),ye(w,c,a))}(e,t,r,o,p,f):4&p?function(e,t,n,r,o,i,a){var c=t.children=e.children;if(s(c))return;c.$L=a;var f=t.props||d,p=t.ref,h=e.ref,v=c.state;if(!c.$N){if(u(c.componentWillReceiveProps)){if(c.$BR=!0,c.componentWillReceiveProps(f,r),c.$UN)return;c.$BR=!1}s(c.$PS)||(v=l(v,c.$PS),c.$PS=null)}Be(c,v,f,n,r,o,!1,i,a),h!==p&&(me(h),ye(p,c,a))}(e,t,n,r,o,c,f):8&p?function(e,t,n,r,o,a,c){var s=!0,l=t.props||d,f=t.ref,p=e.props,h=!i(f),v=e.children;h&&u(f.onComponentShouldUpdate)&&(s=f.onComponentShouldUpdate(p,l));if(!1!==s){h&&u(f.onComponentWillUpdate)&&f.onComponentWillUpdate(p,l);var g=t.type,m=B(32768&t.flags?g.render(l,f,r):g(l,r));Pe(v,m,n,r,o,a,c),t.children=m,h&&u(f.onComponentDidUpdate)&&f.onComponentDidUpdate(p,l)}else t.children=v}(e,t,n,r,o,c,f):16&p?function(e,t){var n=t.children,r=t.dom=e.dom;n!==e.children&&(r.nodeValue=n)}(e,t):512&p?t.dom=e.dom:8192&p?function(e,t,n,r,o,i){var a=e.children,u=t.children,c=e.childFlags,s=t.childFlags,l=null;12&s&&0===u.length&&(s=t.childFlags=2,u=t.children=L());var f=0!=(2&s);if(12&c){var d=a.length;(8&c&&8&s||f||!f&&u.length>d)&&(l=b(a[d-1],!1).nextSibling)}je(c,s,a,u,n,r,o,l,e,i)}(e,t,n,r,o,f):function(e,t,n,r){var o=e.ref,i=t.ref,u=t.children;if(je(e.childFlags,t.childFlags,e.children,u,o,n,!1,null,e,r),t.dom=e.dom,o!==i&&!a(u)){var c=u.dom;g(o,c),h(i,c)}}(e,t,r,f)}function je(e,t,n,r,o,i,a,u,c,s){switch(e){case 2:switch(t){case 2:Pe(n,r,o,i,a,u,s);break;case 1:be(n,o);break;case 16:_e(n),S(o,r);break;default:!function(e,t,n,r,o,i){_e(e),Me(t,n,r,o,b(e,!0),i),_(e,n)}(n,r,o,i,a,s)}break;case 1:switch(t){case 2:Ae(r,o,i,a,u,s);break;case 1:break;case 16:S(o,r);break;default:Me(r,o,i,a,u,s)}break;case 16:switch(t){case 16:!function(e,t,n){e!==t&&(""!==e?n.firstChild.nodeValue=t:S(n,t))}(n,r,o);break;case 2:xe(o),Ae(r,o,i,a,u,s);break;case 1:xe(o);break;default:xe(o),Me(r,o,i,a,u,s)}break;default:switch(t){case 16:we(n),S(o,r);break;case 2:Ee(o,c,n),Ae(r,o,i,a,u,s);break;case 1:Ee(o,c,n);break;default:var l=0|n.length,f=0|r.length;0===l?f>0&&Me(r,o,i,a,u,s):0===f?Ee(o,c,n):8===t&&8===e?function(e,t,n,r,o,i,a,u,c,s){var l,f,d=i-1,p=a-1,h=0,v=e[h],g=t[h];e:{for(;v.key===g.key;){if(16384&g.flags&&(t[h]=g=V(g)),Pe(v,g,n,r,o,u,s),e[h]=g,++h>d||h>p)break e;v=e[h],g=t[h]}for(v=e[d],g=t[p];v.key===g.key;){if(16384&g.flags&&(t[p]=g=V(g)),Pe(v,g,n,r,o,u,s),e[d]=g,d--,p--,h>d||h>p)break e;v=e[d],g=t[p]}}if(h>d){if(h<=p)for(f=(l=p+1)p)for(;h<=d;)be(e[h++],n);else!function(e,t,n,r,o,i,a,u,c,s,l,f,d){var p,h,v,g=0,m=u,y=u,_=i-u+1,x=a-u+1,E=new Int32Array(x+1),C=_===r,S=!1,N=0,k=0;if(o<4||(_|x)<32)for(g=m;g<=i;++g)if(p=e[g],ku?S=!0:N=u,16384&h.flags&&(t[u]=h=V(h)),Pe(p,h,c,n,s,l,d),++k;break}!C&&u>a&&be(p,c)}else C||be(p,c);else{var O={};for(g=y;g<=a;++g)O[t[g].key]=g;for(g=m;g<=i;++g)if(p=e[g],km;)be(e[m++],c);E[u-y]=g+1,N>u?S=!0:N=u,16384&(h=t[u]).flags&&(t[u]=h=V(h)),Pe(p,h,c,n,s,l,d),++k}else C||be(p,c);else C||be(p,c)}if(C)Ee(c,f,e),Me(t,c,n,s,l,d);else if(S){var A=function(e){var t=0,n=0,r=0,o=0,i=0,a=0,u=0,c=e.length;c>Re&&(Re=c,se=new Int32Array(c),le=new Int32Array(c));for(;n>1]]0&&(le[n]=se[i-1]),se[i]=n)}i=o+1;var s=new Int32Array(i);a=se[i-1];for(;i-- >0;)s[i]=a,a=le[a],se[i]=0;return s}(E);for(u=A.length-1,g=x-1;g>=0;g--)0===E[g]?(16384&(h=t[N=g+y]).flags&&(t[N]=h=V(h)),Ae(h,c,n,s,(v=N+1)=0;g--)0===E[g]&&(16384&(h=t[N=g+y]).flags&&(t[N]=h=V(h)),Ae(h,c,n,s,(v=N+1)a?a:i,d=0;da)for(d=f;d=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var u=n.call(i,"catchLoc"),c=n.call(i,"finallyLoc");if(u&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),w(n),s}},"catch":function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;w(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:E(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),s}},e}(e.exports);try{regeneratorRuntime=r}catch(o){Function("r","regeneratorRuntime = r")(r)}},function(e,t,n){"use strict";!function(t,n){var r,o,i=t.html5||{},a=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,c=0,s={};function l(){var e=h.elements;return"string"==typeof e?e.split(" "):e}function f(e){var t=s[e._html5shiv];return t||(t={},c++,e._html5shiv=c,s[c]=t),t}function d(e,t,r){return t||(t=n),o?t.createElement(e):(r||(r=f(t)),!(i=r.cache[e]?r.cache[e].cloneNode():u.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e)).canHaveChildren||a.test(e)||i.tagUrn?i:r.frag.appendChild(i));var i}function p(e){e||(e=n);var t=f(e);return!h.shivCSS||r||t.hasCSS||(t.hasCSS=!!function(e,t){var n=e.createElement("p"),r=e.getElementsByTagName("head")[0]||e.documentElement;return n.innerHTML="x",r.insertBefore(n.lastChild,r.firstChild)}(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),o||function(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return h.shivMethods?d(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/[\w\-:]+/g,(function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'}))+");return n}")(h,t.frag)}(e,t),e}!function(){try{var e=n.createElement("a");e.innerHTML="",r="hidden"in e,o=1==e.childNodes.length||function(){n.createElement("a");var e=n.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(t){r=!0,o=!0}}();var h={elements:i.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:"3.7.3",shivCSS:!1!==i.shivCSS,supportsUnknownElements:o,shivMethods:!1!==i.shivMethods,type:"default",shivDocument:p,createElement:d,createDocumentFragment:function(e,t){if(e||(e=n),o)return e.createDocumentFragment();for(var r=(t=t||f(e)).frag.cloneNode(),i=0,a=l(),u=a.length;i0?o(r(e),9007199254740991):0}},function(e,t,n){"use strict";t.__esModule=!0,t.isFalsy=t.pureComponentHooks=t.shallowDiffers=t.normalizeChildren=t.classes=void 0;t.classes=function(e){for(var t="",n=0;n0&&(t.style=c),t};t.computeBoxProps=g;var m=function(e){var t=e.textColor||e.color,n=e.backgroundColor;return(0,r.classes)([s(t)&&"color-"+t,s(n)&&"color-bg-"+n])};t.computeBoxClassName=m;var y=function(e){var t=e.as,n=void 0===t?"div":t,r=e.className,a=e.children,u=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["as","className","children"]);if("function"==typeof a)return a(g(e));var c="string"==typeof r?r+" "+m(u):m(u),s=g(u);return(0,o.createVNode)(i.VNodeFlags.HtmlElement,n,c,a,i.ChildFlags.UnknownChildren,s)};t.Box=y,y.defaultHooks=r.pureComponentHooks},function(e,t,n){"use strict";var r={}.hasOwnProperty;e.exports=function(e,t){return r.call(e,t)}},function(e,t,n){"use strict";var r=n(44),o=n(56),i=n(12),a=n(8),u=n(62),c=[].push,s=function(e){var t=1==e,n=2==e,s=3==e,l=4==e,f=6==e,d=5==e||f;return function(p,h,v,g){for(var m,y,b=i(p),_=o(b),w=r(h,v,3),x=a(_.length),E=0,C=g||u,S=t?C(p,x):n?C(p,0):undefined;x>E;E++)if((d||E in _)&&(y=w(m=_[E],E,b),e))if(t)S[E]=y;else if(y)switch(e){case 3:return!0;case 5:return m;case 6:return E;case 2:c.call(S,m)}else if(l)return!1;return f?-1:s||l?l:S}};e.exports={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6)}},function(e,t,n){"use strict";var r=n(5),o=n(68),i=n(42),a=n(21),u=n(29),c=n(14),s=n(122),l=Object.getOwnPropertyDescriptor;t.f=r?l:function(e,t){if(e=a(e),t=u(t,!0),s)try{return l(e,t)}catch(n){}if(c(e,t))return i(!o.f.call(e,t),e[t])}},function(e,t,n){"use strict";e.exports=function(e){if(e==undefined)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){"use strict";var r=n(3),o=n(25),i=n(14),a=n(85),u=n(86),c=n(30),s=c.get,l=c.enforce,f=String(String).split("String");(e.exports=function(e,t,n,u){var c=!!u&&!!u.unsafe,s=!!u&&!!u.enumerable,d=!!u&&!!u.noTargetGet;"function"==typeof n&&("string"!=typeof t||i(n,"name")||o(n,"name",t),l(n).source=f.join("string"==typeof t?t:"")),e!==r?(c?!d&&e[t]&&(s=!0):delete e[t],s?e[t]=n:o(e,t,n)):s?e[t]=n:a(t,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&s(this).source||u(this)}))},function(e,t,n){"use strict";var r=n(5),o=n(1),i=n(14),a=Object.defineProperty,u={},c=function(e){throw e};e.exports=function(e,t){if(i(u,e))return u[e];t||(t={});var n=[][e],s=!!i(t,"ACCESSORS")&&t.ACCESSORS,l=i(t,0)?t[0]:c,f=i(t,1)?t[1]:undefined;return u[e]=!!n&&!o((function(){if(s&&!r)return!0;var e={length:-1};s?a(e,1,{enumerable:!0,get:c}):e[1]=1,n.call(e,l,f)}))}},function(e,t,n){"use strict";function r(e,t,n,r,o,i,a){try{var u=e[i](a),c=u.value}catch(s){return void n(s)}u.done?t(c):Promise.resolve(c).then(r,o)}t.__esModule=!0,t.winset=t.winget=t.runCommand=t.callByondAsync=t.callByond=t.IS_IE8=void 0;var o=window.Byond,i=function(){var e=navigator.userAgent.match(/Trident\/(\d+).+?;/i);if(!e)return null;var t=e[1];return t?parseInt(t,10):null}(),a=null!==i&&i<=6;t.IS_IE8=a;var u=function(e,t){void 0===t&&(t={}),o.call(e,t)};t.callByond=u;var c=function(e,t){void 0===t&&(t={}),window.__callbacks__=window.__callbacks__||[];var n=window.__callbacks__.length,r=new Promise((function(e){window.__callbacks__.push(e)}));return o.call(e,Object.assign({},t,{callback:"__callbacks__["+n+"]"})),r};t.callByondAsync=c;t.runCommand=function(e){return u("winset",{command:e})};var s=function(){var e,t=(e=regeneratorRuntime.mark((function n(e,t){var r;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,c("winget",{id:e,property:t});case 2:return r=n.sent,n.abrupt("return",r[t]);case 4:case"end":return n.stop()}}),n)})),function(){var t=this,n=arguments;return new Promise((function(o,i){var a=e.apply(t,n);function u(e){r(a,o,i,u,c,"next",e)}function c(e){r(a,o,i,u,c,"throw",e)}u(undefined)}))});return function(e,n){return t.apply(this,arguments)}}();t.winget=s;t.winset=function(e,t,n){var r;return u("winset",((r={})[e+"."+t]=n,r))}},function(e,t,n){"use strict";var r=n(56),o=n(17);e.exports=function(e){return r(o(e))}},function(e,t,n){"use strict";var r=n(126),o=n(14),i=n(132),a=n(11).f;e.exports=function(e){var t=r.Symbol||(r.Symbol={});o(t,e)||a(t,e,{value:i.f(e)})}},function(e,t,n){"use strict";var r=n(17),o=/"/g;e.exports=function(e,t,n,i){var a=String(r(e)),u="<"+t;return""!==n&&(u+=" "+n+'="'+String(i).replace(o,""")+'"'),u+">"+a+""+t+">"}},function(e,t,n){"use strict";var r=n(1);e.exports=function(e){return r((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}))}},function(e,t,n){"use strict";var r=n(5),o=n(11),i=n(42);e.exports=r?function(e,t,n){return o.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){"use strict";var r=Math.ceil,o=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?o:r)(e)}},function(e,t,n){"use strict";e.exports=function(e){if("function"!=typeof e)throw TypeError(String(e)+" is not a function");return e}},function(e,t,n){"use strict";var r={}.toString;e.exports=function(e){return r.call(e).slice(8,-1)}},function(e,t,n){"use strict";var r=n(4);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){"use strict";var r,o,i,a=n(124),u=n(3),c=n(4),s=n(25),l=n(14),f=n(69),d=n(58),p=u.WeakMap;if(a){var h=new p,v=h.get,g=h.has,m=h.set;r=function(e,t){return m.call(h,e,t),t},o=function(e){return v.call(h,e)||{}},i=function(e){return g.call(h,e)}}else{var y=f("state");d[y]=!0,r=function(e,t){return s(e,y,t),t},o=function(e){return l(e,y)?e[y]:{}},i=function(e){return l(e,y)}}e.exports={set:r,get:o,has:i,enforce:function(e){return i(e)?o(e):r(e,{})},getterFor:function(e){return function(t){var n;if(!c(t)||(n=o(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}}},function(e,t,n){"use strict";var r=n(14),o=n(12),i=n(69),a=n(98),u=i("IE_PROTO"),c=Object.prototype;e.exports=a?Object.getPrototypeOf:function(e){return e=o(e),r(e,u)?e[u]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?c:null}},function(e,t,n){"use strict";var r=n(126),o=n(3),i=function(e){return"function"==typeof e?e:undefined};e.exports=function(e,t){return arguments.length<2?i(r[e])||i(o[e]):r[e]&&r[e][t]||o[e]&&o[e][t]}},function(e,t,n){"use strict";e.exports=!1},function(e,t,n){"use strict";var r=n(1);e.exports=function(e,t){var n=[][e];return!!n&&r((function(){n.call(null,t||function(){throw 1},1)}))}},function(e,t,n){"use strict";var r=n(0),o=n(3),i=n(5),a=n(111),u=n(7),c=n(74),s=n(52),l=n(42),f=n(25),d=n(8),p=n(140),h=n(155),v=n(29),g=n(14),m=n(71),y=n(4),b=n(38),_=n(46),w=n(43).f,x=n(156),E=n(15).forEach,C=n(51),S=n(11),N=n(16),k=n(30),O=n(76),A=k.get,I=k.set,T=S.f,M=N.f,V=Math.round,L=o.RangeError,P=c.ArrayBuffer,j=c.DataView,B=u.NATIVE_ARRAY_BUFFER_VIEWS,F=u.TYPED_ARRAY_TAG,R=u.TypedArray,D=u.TypedArrayPrototype,K=u.aTypedArrayConstructor,z=u.isTypedArray,U=function(e,t){for(var n=0,r=t.length,o=new(K(e))(r);r>n;)o[n]=t[n++];return o},Y=function(e,t){T(e,t,{get:function(){return A(this)[t]}})},H=function(e){var t;return e instanceof P||"ArrayBuffer"==(t=m(e))||"SharedArrayBuffer"==t},W=function(e,t){return z(e)&&"symbol"!=typeof t&&t in e&&String(+t)==String(t)},$=function(e,t){return W(e,t=v(t,!0))?l(2,e[t]):M(e,t)},G=function(e,t,n){return!(W(e,t=v(t,!0))&&y(n)&&g(n,"value"))||g(n,"get")||g(n,"set")||n.configurable||g(n,"writable")&&!n.writable||g(n,"enumerable")&&!n.enumerable?T(e,t,n):(e[t]=n.value,e)};i?(B||(N.f=$,S.f=G,Y(D,"buffer"),Y(D,"byteOffset"),Y(D,"byteLength"),Y(D,"length")),r({target:"Object",stat:!0,forced:!B},{getOwnPropertyDescriptor:$,defineProperty:G}),e.exports=function(e,t,n){var i=e.match(/\d+$/)[0]/8,u=e+(n?"Clamped":"")+"Array",c="get"+e,l="set"+e,v=o[u],g=v,m=g&&g.prototype,S={},N=function(e,t){T(e,t,{get:function(){return function(e,t){var n=A(e);return n.view[c](t*i+n.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,r){var o=A(e);n&&(r=(r=V(r))<0?0:r>255?255:255&r),o.view[l](t*i+o.byteOffset,r,!0)}(this,t,e)},enumerable:!0})};B?a&&(g=t((function(e,t,n,r){return s(e,g,u),O(y(t)?H(t)?r!==undefined?new v(t,h(n,i),r):n!==undefined?new v(t,h(n,i)):new v(t):z(t)?U(g,t):x.call(g,t):new v(p(t)),e,g)})),_&&_(g,R),E(w(v),(function(e){e in g||f(g,e,v[e])})),g.prototype=m):(g=t((function(e,t,n,r){s(e,g,u);var o,a,c,l=0,f=0;if(y(t)){if(!H(t))return z(t)?U(g,t):x.call(g,t);o=t,f=h(n,i);var v=t.byteLength;if(r===undefined){if(v%i)throw L("Wrong length");if((a=v-f)<0)throw L("Wrong length")}else if((a=d(r)*i)+f>v)throw L("Wrong length");c=a/i}else c=p(t),o=new P(a=c*i);for(I(e,{buffer:o,byteOffset:f,byteLength:a,length:c,view:new j(o)});l"+e+"<\/script>"},h=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(o){}var e,t;h=r?function(e){e.write(p("")),e.close();var t=e.parentWindow.Object;return e=null,t}(r):((t=s("iframe")).style.display="none",c.appendChild(t),t.src=String("javascript:"),(e=t.contentWindow.document).open(),e.write(p("document.F=Object")),e.close(),e.F);for(var n=a.length;n--;)delete h.prototype[a[n]];return h()};u[f]=!0,e.exports=Object.create||function(e,t){var n;return null!==e?(d.prototype=o(e),n=new d,d.prototype=null,n[f]=e):n=h(),t===undefined?n:i(n,t)}},function(e,t,n){"use strict";var r=n(11).f,o=n(14),i=n(10)("toStringTag");e.exports=function(e,t,n){e&&!o(e=n?e:e.prototype,i)&&r(e,i,{configurable:!0,value:t})}},function(e,t,n){"use strict";var r=n(10),o=n(38),i=n(11),a=r("unscopables"),u=Array.prototype;u[a]==undefined&&i.f(u,a,{configurable:!0,value:o(null)}),e.exports=function(e){u[a][e]=!0}},function(e,t,n){"use strict";var r=n(6),o=n(27),i=n(10)("species");e.exports=function(e,t){var n,a=r(e).constructor;return a===undefined||(n=r(a)[i])==undefined?t:o(n)}},function(e,t,n){"use strict";e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){"use strict";var r=n(127),o=n(89).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,o)}},function(e,t,n){"use strict";var r=n(27);e.exports=function(e,t,n){if(r(e),t===undefined)return e;switch(n){case 0:return function(){return e.call(t)};case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},function(e,t,n){"use strict";var r=n(29),o=n(11),i=n(42);e.exports=function(e,t,n){var a=r(t);a in e?o.f(e,a,i(0,n)):e[a]=n}},function(e,t,n){"use strict";var r=n(6),o=n(138);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(i){}return function(n,i){return r(n),o(i),t?e.call(n,i):n.__proto__=i,n}}():undefined)},function(e,t,n){"use strict";var r=n(58),o=n(4),i=n(14),a=n(11).f,u=n(57),c=n(66),s=u("meta"),l=0,f=Object.isExtensible||function(){return!0},d=function(e){a(e,s,{value:{objectID:"O"+ ++l,weakData:{}}})},p=e.exports={REQUIRED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!i(e,s)){if(!f(e))return"F";if(!t)return"E";d(e)}return e[s].objectID},getWeakData:function(e,t){if(!i(e,s)){if(!f(e))return!0;if(!t)return!1;d(e)}return e[s].weakData},onFreeze:function(e){return c&&p.REQUIRED&&f(e)&&!i(e,s)&&d(e),e}};r[s]=!0},function(e,t,n){"use strict";t.__esModule=!0,t.Window=t.NtosWindow=t.refocusLayout=t.Layout=void 0;var r=n(115);t.Layout=r.Layout,t.refocusLayout=r.refocusLayout;var o=n(402);t.NtosWindow=o.NtosWindow;var i=n(166);t.Window=i.Window},function(e,t,n){"use strict";t.__esModule=!0,t.Tooltip=t.Tabs=t.Table=t.Slider=t.Section=t.ProgressBar=t.NumberInput=t.NoticeBox=t.Modal=t.NanoMap=t.LabeledList=t.LabeledControls=t.Knob=t.Input=t.Icon=t.Grid=t.Flex=t.Dropdown=t.Divider=t.Dimmer=t.ColorBox=t.Collapsible=t.Chart=t.ByondUi=t.Button=t.Box=t.BlockQuote=t.AnimatedNumber=void 0;var r=n(116);t.AnimatedNumber=r.AnimatedNumber;var o=n(403);t.BlockQuote=o.BlockQuote;var i=n(13);t.Box=i.Box;var a=n(117);t.Button=a.Button;var u=n(405);t.ByondUi=u.ByondUi;var c=n(407);t.Chart=c.Chart;var s=n(408);t.Collapsible=s.Collapsible;var l=n(409);t.ColorBox=l.ColorBox;var f=n(162);t.Dimmer=f.Dimmer;var d=n(163);t.Divider=d.Divider;var p=n(410);t.Dropdown=p.Dropdown;var h=n(164);t.Flex=h.Flex;var v=n(411);t.Grid=v.Grid;var g=n(118);t.Icon=g.Icon;var m=n(412);t.Input=m.Input;var y=n(413);t.Knob=y.Knob;var b=n(414);t.LabeledControls=b.LabeledControls;var _=n(415);t.LabeledList=_.LabeledList;var w=n(416);t.NanoMap=w.NanoMap;var x=n(417);t.Modal=x.Modal;var E=n(418);t.NoticeBox=E.NoticeBox;var C=n(120);t.NumberInput=C.NumberInput;var S=n(419);t.ProgressBar=S.ProgressBar;var N=n(420);t.Section=N.Section;var k=n(421);t.Slider=k.Slider;var O=n(119);t.Table=O.Table;var A=n(422);t.Tabs=A.Tabs;var I=n(161);t.Tooltip=I.Tooltip},function(e,t,n){"use strict";var r=n(28);e.exports=Array.isArray||function(e){return"Array"==r(e)}},function(e,t,n){"use strict";var r=n(32),o=n(11),i=n(10),a=n(5),u=i("species");e.exports=function(e){var t=r(e),n=o.f;a&&t&&!t[u]&&n(t,u,{configurable:!0,get:function(){return this}})}},function(e,t,n){"use strict";e.exports=function(e,t,n){if(!(e instanceof t))throw TypeError("Incorrect "+(n?n+" ":"")+"invocation");return e}},function(e,t,n){"use strict";var r=n(17),o="["+n(78)+"]",i=RegExp("^"+o+o+"*"),a=RegExp(o+o+"*$"),u=function(e){return function(t){var n=String(r(t));return 1&e&&(n=n.replace(i,"")),2&e&&(n=n.replace(a,"")),n}};e.exports={start:u(1),end:u(2),trim:u(3)}},function(e,t,n){"use strict";t.__esModule=!0,t.logger=t.createLogger=void 0;n(158);var r=n(20),o=0,i=1,a=2,u=3,c=4,s=function(e,t){for(var n=arguments.length,o=new Array(n>2?n-2:0),i=2;i=a){var u=[t].concat(o).map((function(e){return"string"==typeof e?e:e instanceof Error?e.stack||String(e):JSON.stringify(e)})).filter((function(e){return e})).join(" ")+"\nUser Agent: "+navigator.userAgent;(0,r.callByond)("",{src:window.__ref__,action:"tgui:log",log:u})}},l=function(e){return{debug:function(){for(var t=arguments.length,n=new Array(t),r=0;rn?n:e};t.clamp01=function(e){return e<0?0:e>1?1:e};t.scale=function(e,t,n){return(e-t)/(n-t)};t.round=function(e,t){return!e||isNaN(e)?e:(t|=0,i=(e*=n=Math.pow(10,t))>0|-(e<0),o=Math.abs(e%1)>=.4999999999854481,r=Math.floor(e),o&&(e=r+(i>0)),(o?e:Math.round(e))/n);var n,r,o,i};t.toFixed=function(e,t){return void 0===t&&(t=0),Number(e).toFixed(Math.max(t,0))};var r=function(e,t){return t&&e>=t[0]&&e<=t[1]};t.inRange=r;t.keyOfMatchingRange=function(e,t){for(var n=0,o=Object.keys(t);nl;)if((u=c[l++])!=u)return!0}else for(;s>l;l++)if((e||l in c)&&c[l]===n)return e||l||0;return!e&&-1}};e.exports={includes:a(!0),indexOf:a(!1)}},function(e,t,n){"use strict";var r=n(1),o=/#|\.prototype\./,i=function(e,t){var n=u[a(e)];return n==s||n!=c&&("function"==typeof t?r(t):!!t)},a=i.normalize=function(e){return String(e).replace(o,".").toLowerCase()},u=i.data={},c=i.NATIVE="N",s=i.POLYFILL="P";e.exports=i},function(e,t,n){"use strict";var r=n(127),o=n(89);e.exports=Object.keys||function(e){return r(e,o)}},function(e,t,n){"use strict";var r=n(4),o=n(50),i=n(10)("species");e.exports=function(e,t){var n;return o(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!o(n.prototype)?r(n)&&null===(n=n[i])&&(n=undefined):n=undefined),new(n===undefined?Array:n)(0===t?0:t)}},function(e,t,n){"use strict";var r=n(1),o=n(10),i=n(92),a=o("species");e.exports=function(e){return i>=51||!r((function(){var t=[];return(t.constructor={})[a]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}},function(e,t,n){"use strict";e.exports={}},function(e,t,n){"use strict";var r=n(18);e.exports=function(e,t,n){for(var o in t)r(e,o,t[o],n);return e}},function(e,t,n){"use strict";var r=n(1);e.exports=!r((function(){return Object.isExtensible(Object.preventExtensions({}))}))},function(e,t,n){"use strict";var r=n(6),o=n(94),i=n(8),a=n(44),u=n(95),c=n(135),s=function(e,t){this.stopped=e,this.result=t};(e.exports=function(e,t,n,l,f){var d,p,h,v,g,m,y,b=a(t,n,l?2:1);if(f)d=e;else{if("function"!=typeof(p=u(e)))throw TypeError("Target is not iterable");if(o(p)){for(h=0,v=i(e.length);v>h;h++)if((g=l?b(r(y=e[h])[0],y[1]):b(e[h]))&&g instanceof s)return g;return new s(!1)}d=p.call(e)}for(m=d.next;!(y=m.call(d)).done;)if("object"==typeof(g=c(d,b,y.value,l))&&g&&g instanceof s)return g;return new s(!1)}).stop=function(e){return new s(!0,e)}},function(e,t,n){"use strict";var r={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!r.call({1:2},1);t.f=i?function(e){var t=o(this,e);return!!t&&t.enumerable}:r},function(e,t,n){"use strict";var r=n(87),o=n(57),i=r("keys");e.exports=function(e){return i[e]||(i[e]=o(e))}},function(e,t,n){"use strict";var r=n(32);e.exports=r("navigator","userAgent")||""},function(e,t,n){"use strict";var r=n(96),o=n(28),i=n(10)("toStringTag"),a="Arguments"==o(function(){return arguments}());e.exports=r?o:function(e){var t,n,r;return e===undefined?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(n){}}(t=Object(e),i))?n:a?o(t):"Object"==(r=o(t))&&"function"==typeof t.callee?"Arguments":r}},function(e,t,n){"use strict";var r=n(10)("iterator"),o=!1;try{var i=0,a={next:function(){return{done:!!i++}},"return":function(){o=!0}};a[r]=function(){return this},Array.from(a,(function(){throw 2}))}catch(u){}e.exports=function(e,t){if(!t&&!o)return!1;var n=!1;try{var i={};i[r]=function(){return{next:function(){return{done:n=!0}}}},e(i)}catch(u){}return n}},function(e,t,n){"use strict";var r=n(27),o=n(12),i=n(56),a=n(8),u=function(e){return function(t,n,u,c){r(n);var s=o(t),l=i(s),f=a(s.length),d=e?f-1:0,p=e?-1:1;if(u<2)for(;;){if(d in l){c=l[d],d+=p;break}if(d+=p,e?d<0:f<=d)throw TypeError("Reduce of empty array with no initial value")}for(;e?d>=0:f>d;d+=p)d in l&&(c=n(c,l[d],d,s));return c}};e.exports={left:u(!1),right:u(!0)}},function(e,t,n){"use strict";var r=n(3),o=n(5),i=n(99),a=n(25),u=n(65),c=n(1),s=n(52),l=n(26),f=n(8),d=n(140),p=n(215),h=n(31),v=n(46),g=n(43).f,m=n(11).f,y=n(93),b=n(39),_=n(30),w=_.get,x=_.set,E=r.ArrayBuffer,C=E,S=r.DataView,N=S&&S.prototype,k=Object.prototype,O=r.RangeError,A=p.pack,I=p.unpack,T=function(e){return[255&e]},M=function(e){return[255&e,e>>8&255]},V=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},L=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},P=function(e){return A(e,23,4)},j=function(e){return A(e,52,8)},B=function(e,t){m(e.prototype,t,{get:function(){return w(this)[t]}})},F=function(e,t,n,r){var o=d(n),i=w(e);if(o+t>i.byteLength)throw O("Wrong index");var a=w(i.buffer).bytes,u=o+i.byteOffset,c=a.slice(u,u+t);return r?c:c.reverse()},R=function(e,t,n,r,o,i){var a=d(n),u=w(e);if(a+t>u.byteLength)throw O("Wrong index");for(var c=w(u.buffer).bytes,s=a+u.byteOffset,l=r(+o),f=0;fU;)(D=z[U++])in C||a(C,D,E[D]);K.constructor=C}v&&h(N)!==k&&v(N,k);var Y=new S(new C(2)),H=N.setInt8;Y.setInt8(0,2147483648),Y.setInt8(1,2147483649),!Y.getInt8(0)&&Y.getInt8(1)||u(N,{setInt8:function(e,t){H.call(this,e,t<<24>>24)},setUint8:function(e,t){H.call(this,e,t<<24>>24)}},{unsafe:!0})}else C=function(e){s(this,C,"ArrayBuffer");var t=d(e);x(this,{bytes:y.call(new Array(t),0),byteLength:t}),o||(this.byteLength=t)},S=function(e,t,n){s(this,S,"DataView"),s(e,C,"DataView");var r=w(e).byteLength,i=l(t);if(i<0||i>r)throw O("Wrong offset");if(i+(n=n===undefined?r-i:f(n))>r)throw O("Wrong length");x(this,{buffer:e,byteLength:n,byteOffset:i}),o||(this.buffer=e,this.byteLength=n,this.byteOffset=i)},o&&(B(C,"byteLength"),B(S,"buffer"),B(S,"byteLength"),B(S,"byteOffset")),u(S.prototype,{getInt8:function(e){return F(this,1,e)[0]<<24>>24},getUint8:function(e){return F(this,1,e)[0]},getInt16:function(e){var t=F(this,2,e,arguments.length>1?arguments[1]:undefined);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=F(this,2,e,arguments.length>1?arguments[1]:undefined);return t[1]<<8|t[0]},getInt32:function(e){return L(F(this,4,e,arguments.length>1?arguments[1]:undefined))},getUint32:function(e){return L(F(this,4,e,arguments.length>1?arguments[1]:undefined))>>>0},getFloat32:function(e){return I(F(this,4,e,arguments.length>1?arguments[1]:undefined),23)},getFloat64:function(e){return I(F(this,8,e,arguments.length>1?arguments[1]:undefined),52)},setInt8:function(e,t){R(this,1,e,T,t)},setUint8:function(e,t){R(this,1,e,T,t)},setInt16:function(e,t){R(this,2,e,M,t,arguments.length>2?arguments[2]:undefined)},setUint16:function(e,t){R(this,2,e,M,t,arguments.length>2?arguments[2]:undefined)},setInt32:function(e,t){R(this,4,e,V,t,arguments.length>2?arguments[2]:undefined)},setUint32:function(e,t){R(this,4,e,V,t,arguments.length>2?arguments[2]:undefined)},setFloat32:function(e,t){R(this,4,e,P,t,arguments.length>2?arguments[2]:undefined)},setFloat64:function(e,t){R(this,8,e,j,t,arguments.length>2?arguments[2]:undefined)}});b(C,"ArrayBuffer"),b(S,"DataView"),e.exports={ArrayBuffer:C,DataView:S}},function(e,t,n){"use strict";var r=n(0),o=n(3),i=n(60),a=n(18),u=n(47),c=n(67),s=n(52),l=n(4),f=n(1),d=n(72),p=n(39),h=n(76);e.exports=function(e,t,n){var v=-1!==e.indexOf("Map"),g=-1!==e.indexOf("Weak"),m=v?"set":"add",y=o[e],b=y&&y.prototype,_=y,w={},x=function(e){var t=b[e];a(b,e,"add"==e?function(e){return t.call(this,0===e?0:e),this}:"delete"==e?function(e){return!(g&&!l(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return g&&!l(e)?undefined:t.call(this,0===e?0:e)}:"has"==e?function(e){return!(g&&!l(e))&&t.call(this,0===e?0:e)}:function(e,n){return t.call(this,0===e?0:e,n),this})};if(i(e,"function"!=typeof y||!(g||b.forEach&&!f((function(){(new y).entries().next()})))))_=n.getConstructor(t,e,v,m),u.REQUIRED=!0;else if(i(e,!0)){var E=new _,C=E[m](g?{}:-0,1)!=E,S=f((function(){E.has(1)})),N=d((function(e){new y(e)})),k=!g&&f((function(){for(var e=new y,t=5;t--;)e[m](t,t);return!e.has(-0)}));N||((_=t((function(t,n){s(t,_,e);var r=h(new y,t,_);return n!=undefined&&c(n,r[m],r,v),r}))).prototype=b,b.constructor=_),(S||k)&&(x("delete"),x("has"),v&&x("get")),(k||C)&&x(m),g&&b.clear&&delete b.clear}return w[e]=_,r({global:!0,forced:_!=y},w),p(_,e),g||n.setStrong(_,e,v),_}},function(e,t,n){"use strict";var r=n(4),o=n(46);e.exports=function(e,t,n){var i,a;return o&&"function"==typeof(i=t.constructor)&&i!==n&&r(a=i.prototype)&&a!==n.prototype&&o(e,a),e}},function(e,t,n){"use strict";var r=Math.expm1,o=Math.exp;e.exports=!r||r(10)>22025.465794806718||r(10)<22025.465794806718||-2e-17!=r(-2e-17)?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:o(e)-1}:r},function(e,t,n){"use strict";e.exports="\t\n\x0B\f\r \xa0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff"},function(e,t,n){"use strict";var r=n(33),o=n(3),i=n(1);e.exports=r||!i((function(){var e=Math.random();__defineSetter__.call(null,e,(function(){})),delete o[e]}))},function(e,t,n){"use strict";var r=n(6);e.exports=function(){var e=r(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},function(e,t,n){"use strict";var r,o,i=n(80),a=n(105),u=RegExp.prototype.exec,c=String.prototype.replace,s=u,l=(r=/a/,o=/b*/g,u.call(r,"a"),u.call(o,"a"),0!==r.lastIndex||0!==o.lastIndex),f=a.UNSUPPORTED_Y||a.BROKEN_CARET,d=/()??/.exec("")[1]!==undefined;(l||d||f)&&(s=function(e){var t,n,r,o,a=this,s=f&&a.sticky,p=i.call(a),h=a.source,v=0,g=e;return s&&(-1===(p=p.replace("y","")).indexOf("g")&&(p+="g"),g=String(e).slice(a.lastIndex),a.lastIndex>0&&(!a.multiline||a.multiline&&"\n"!==e[a.lastIndex-1])&&(h="(?: "+h+")",g=" "+g,v++),n=new RegExp("^(?:"+h+")",p)),d&&(n=new RegExp("^"+h+"$(?!\\s)",p)),l&&(t=a.lastIndex),r=u.call(s?n:a,g),s?r?(r.input=r.input.slice(v),r[0]=r[0].slice(v),r.index=a.lastIndex,a.lastIndex+=r[0].length):a.lastIndex=0:l&&r&&(a.lastIndex=a.global?r.index+r[0].length:t),d&&r&&r.length>1&&c.call(r[0],n,(function(){for(o=1;o")})),l="$0"==="a".replace(/./,"$0"),f=i("replace"),d=!!/./[f]&&""===/./[f]("a","$0"),p=!o((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));e.exports=function(e,t,n,f){var h=i(e),v=!o((function(){var t={};return t[h]=function(){return 7},7!=""[e](t)})),g=v&&!o((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[c]=function(){return n},n.flags="",n[h]=/./[h]),n.exec=function(){return t=!0,null},n[h](""),!t}));if(!v||!g||"replace"===e&&(!s||!l||d)||"split"===e&&!p){var m=/./[h],y=n(h,""[e],(function(e,t,n,r,o){return t.exec===a?v&&!o?{done:!0,value:m.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),{REPLACE_KEEPS_$0:l,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:d}),b=y[0],_=y[1];r(String.prototype,e,b),r(RegExp.prototype,h,2==t?function(e,t){return _.call(e,this,t)}:function(e){return _.call(e,this)})}f&&u(RegExp.prototype[h],"sham",!0)}},function(e,t,n){"use strict";var r=n(28),o=n(81);e.exports=function(e,t){var n=e.exec;if("function"==typeof n){var i=n.call(e,t);if("object"!=typeof i)throw TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(e))throw TypeError("RegExp#exec called on incompatible receiver");return o.call(e,t)}},function(e,t,n){"use strict";var r=n(3),o=n(4),i=r.document,a=o(i)&&o(i.createElement);e.exports=function(e){return a?i.createElement(e):{}}},function(e,t,n){"use strict";var r=n(3),o=n(25);e.exports=function(e,t){try{o(r,e,t)}catch(n){r[e]=t}return t}},function(e,t,n){"use strict";var r=n(123),o=Function.toString;"function"!=typeof r.inspectSource&&(r.inspectSource=function(e){return o.call(e)}),e.exports=r.inspectSource},function(e,t,n){"use strict";var r=n(33),o=n(123);(e.exports=function(e,t){return o[e]||(o[e]=t!==undefined?t:{})})("versions",[]).push({version:"3.6.5",mode:r?"pure":"global",copyright:"\xa9 2020 Denis Pushkarev (zloirock.ru)"})},function(e,t,n){"use strict";var r=n(32),o=n(43),i=n(90),a=n(6);e.exports=r("Reflect","ownKeys")||function(e){var t=o.f(a(e)),n=i.f;return n?t.concat(n(e)):t}},function(e,t,n){"use strict";e.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]},function(e,t,n){"use strict";t.f=Object.getOwnPropertySymbols},function(e,t,n){"use strict";var r=n(1);e.exports=!!Object.getOwnPropertySymbols&&!r((function(){return!String(Symbol())}))},function(e,t,n){"use strict";var r,o,i=n(3),a=n(70),u=i.process,c=u&&u.versions,s=c&&c.v8;s?o=(r=s.split("."))[0]+r[1]:a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=r[1]),e.exports=o&&+o},function(e,t,n){"use strict";var r=n(12),o=n(37),i=n(8);e.exports=function(e){for(var t=r(this),n=i(t.length),a=arguments.length,u=o(a>1?arguments[1]:undefined,n),c=a>2?arguments[2]:undefined,s=c===undefined?n:o(c,n);s>u;)t[u++]=e;return t}},function(e,t,n){"use strict";var r=n(10),o=n(64),i=r("iterator"),a=Array.prototype;e.exports=function(e){return e!==undefined&&(o.Array===e||a[i]===e)}},function(e,t,n){"use strict";var r=n(71),o=n(64),i=n(10)("iterator");e.exports=function(e){if(e!=undefined)return e[i]||e["@@iterator"]||o[r(e)]}},function(e,t,n){"use strict";var r={};r[n(10)("toStringTag")]="z",e.exports="[object z]"===String(r)},function(e,t,n){"use strict";var r=n(0),o=n(200),i=n(31),a=n(46),u=n(39),c=n(25),s=n(18),l=n(10),f=n(33),d=n(64),p=n(137),h=p.IteratorPrototype,v=p.BUGGY_SAFARI_ITERATORS,g=l("iterator"),m=function(){return this};e.exports=function(e,t,n,l,p,y,b){o(n,t,l);var _,w,x,E=function(e){if(e===p&&O)return O;if(!v&&e in N)return N[e];switch(e){case"keys":case"values":case"entries":return function(){return new n(this,e)}}return function(){return new n(this)}},C=t+" Iterator",S=!1,N=e.prototype,k=N[g]||N["@@iterator"]||p&&N[p],O=!v&&k||E(p),A="Array"==t&&N.entries||k;if(A&&(_=i(A.call(new e)),h!==Object.prototype&&_.next&&(f||i(_)===h||(a?a(_,h):"function"!=typeof _[g]&&c(_,g,m)),u(_,C,!0,!0),f&&(d[C]=m))),"values"==p&&k&&"values"!==k.name&&(S=!0,O=function(){return k.call(this)}),f&&!b||N[g]===O||c(N,g,O),d[t]=O,p)if(w={values:E("values"),keys:y?O:E("keys"),entries:E("entries")},b)for(x in w)(v||S||!(x in N))&&s(N,x,w[x]);else r({target:t,proto:!0,forced:v||S},w);return w}},function(e,t,n){"use strict";var r=n(1);e.exports=!r((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))},function(e,t,n){"use strict";e.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView},function(e,t,n){"use strict";var r=n(8),o=n(101),i=n(17),a=Math.ceil,u=function(e){return function(t,n,u){var c,s,l=String(i(t)),f=l.length,d=u===undefined?" ":String(u),p=r(n);return p<=f||""==d?l:(c=p-f,(s=o.call(d,a(c/d.length))).length>c&&(s=s.slice(0,c)),e?l+s:s+l)}};e.exports={start:u(!1),end:u(!0)}},function(e,t,n){"use strict";var r=n(26),o=n(17);e.exports="".repeat||function(e){var t=String(o(this)),n="",i=r(e);if(i<0||i==Infinity)throw RangeError("Wrong number of repetitions");for(;i>0;(i>>>=1)&&(t+=t))1&i&&(n+=t);return n}},function(e,t,n){"use strict";e.exports=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1}},function(e,t,n){"use strict";var r,o,i,a=n(3),u=n(1),c=n(28),s=n(44),l=n(130),f=n(84),d=n(149),p=a.location,h=a.setImmediate,v=a.clearImmediate,g=a.process,m=a.MessageChannel,y=a.Dispatch,b=0,_={},w=function(e){if(_.hasOwnProperty(e)){var t=_[e];delete _[e],t()}},x=function(e){return function(){w(e)}},E=function(e){w(e.data)},C=function(e){a.postMessage(e+"",p.protocol+"//"+p.host)};h&&v||(h=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return _[++b]=function(){("function"==typeof e?e:Function(e)).apply(undefined,t)},r(b),b},v=function(e){delete _[e]},"process"==c(g)?r=function(e){g.nextTick(x(e))}:y&&y.now?r=function(e){y.now(x(e))}:m&&!d?(i=(o=new m).port2,o.port1.onmessage=E,r=s(i.postMessage,i,1)):!a.addEventListener||"function"!=typeof postMessage||a.importScripts||u(C)||"file:"===p.protocol?r="onreadystatechange"in f("script")?function(e){l.appendChild(f("script")).onreadystatechange=function(){l.removeChild(this),w(e)}}:function(e){setTimeout(x(e),0)}:(r=C,a.addEventListener("message",E,!1))),e.exports={set:h,clear:v}},function(e,t,n){"use strict";var r=n(4),o=n(28),i=n(10)("match");e.exports=function(e){var t;return r(e)&&((t=e[i])!==undefined?!!t:"RegExp"==o(e))}},function(e,t,n){"use strict";var r=n(1);function o(e,t){return RegExp(e,t)}t.UNSUPPORTED_Y=r((function(){var e=o("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),t.BROKEN_CARET=r((function(){var e=o("^r","gy");return e.lastIndex=2,null!=e.exec("str")}))},function(e,t,n){"use strict";var r=n(26),o=n(17),i=function(e){return function(t,n){var i,a,u=String(o(t)),c=r(n),s=u.length;return c<0||c>=s?e?"":undefined:(i=u.charCodeAt(c))<55296||i>56319||c+1===s||(a=u.charCodeAt(c+1))<56320||a>57343?e?u.charAt(c):i:e?u.slice(c,c+2):a-56320+(i-55296<<10)+65536}};e.exports={codeAt:i(!1),charAt:i(!0)}},function(e,t,n){"use strict";var r=n(104);e.exports=function(e){if(r(e))throw TypeError("The method doesn't accept regular expressions");return e}},function(e,t,n){"use strict";var r=n(10)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[r]=!1,"/./"[e](t)}catch(o){}}return!1}},function(e,t,n){"use strict";var r=n(106).charAt;e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},function(e,t,n){"use strict";var r=n(1),o=n(78);e.exports=function(e){return r((function(){return!!o[e]()||"\u200b\x85\u180e"!="\u200b\x85\u180e"[e]()||o[e].name!==e}))}},function(e,t,n){"use strict";var r=n(3),o=n(1),i=n(72),a=n(7).NATIVE_ARRAY_BUFFER_VIEWS,u=r.ArrayBuffer,c=r.Int8Array;e.exports=!a||!o((function(){c(1)}))||!o((function(){new c(-1)}))||!i((function(e){new c,new c(null),new c(1.5),new c(e)}),!0)||o((function(){return 1!==new c(new u(2),1,undefined).length}))},function(e,t,n){"use strict";t.__esModule=!0,t.getGasColor=t.getGasLabel=t.RADIO_CHANNELS=t.CSS_COLORS=t.COLORS=t.UI_CLOSE=t.UI_DISABLED=t.UI_UPDATE=t.UI_INTERACTIVE=void 0;t.UI_INTERACTIVE=2;t.UI_UPDATE=1;t.UI_DISABLED=0;t.UI_CLOSE=-1;t.COLORS={department:{captain:"#c06616",security:"#e74c3c",medbay:"#3498db",science:"#9b59b6",engineering:"#f1c40f",cargo:"#f39c12",centcom:"#00c100",other:"#c38312"},damageType:{oxy:"#3498db",toxin:"#2ecc71",burn:"#e67e22",brute:"#e74c3c"}};t.CSS_COLORS=["black","white","red","orange","yellow","olive","green","teal","blue","violet","purple","pink","brown","grey","good","average","bad","label"];t.RADIO_CHANNELS=[{name:"Syndicate",freq:1213,color:"#a52a2a"},{name:"Red Team",freq:1215,color:"#ff4444"},{name:"Blue Team",freq:1217,color:"#3434fd"},{name:"CentCom",freq:1337,color:"#2681a5"},{name:"Supply",freq:1347,color:"#b88646"},{name:"Service",freq:1349,color:"#6ca729"},{name:"Science",freq:1351,color:"#c68cfa"},{name:"Command",freq:1353,color:"#5177ff"},{name:"Medical",freq:1355,color:"#57b8f0"},{name:"Engineering",freq:1357,color:"#f37746"},{name:"Security",freq:1359,color:"#dd3535"},{name:"AI Private",freq:1447,color:"#d65d95"},{name:"Common",freq:1459,color:"#1ecc43"}];var r=[{id:"o2",name:"Oxygen",label:"O\u2082",color:"blue"},{id:"n2",name:"Nitrogen",label:"N\u2082",color:"red"},{id:"co2",name:"Carbon Dioxide",label:"CO\u2082",color:"grey"},{id:"plasma",name:"Plasma",label:"Plasma",color:"pink"},{id:"water_vapor",name:"Water Vapor",label:"H\u2082O",color:"grey"},{id:"nob",name:"Hyper-noblium",label:"Hyper-nob",color:"teal"},{id:"n2o",name:"Nitrous Oxide",label:"N\u2082O",color:"red"},{id:"no2",name:"Nitryl",label:"NO\u2082",color:"brown"},{id:"tritium",name:"Tritium",label:"Tritium",color:"green"},{id:"bz",name:"BZ",label:"BZ",color:"purple"},{id:"stim",name:"Stimulum",label:"Stimulum",color:"purple"},{id:"pluox",name:"Pluoxium",label:"Pluoxium",color:"blue"},{id:"miasma",name:"Miasma",label:"Miasma",color:"olive"},{id:"hydrogen",name:"Hydrogen",label:"H\u2082",color:"white"}];t.getGasLabel=function(e,t){var n=String(e).toLowerCase(),o=r.find((function(e){return e.id===n||e.name.toLowerCase()===n}));return o&&o.label||t||e};t.getGasColor=function(e){var t=String(e).toLowerCase(),n=r.find((function(e){return e.id===t||e.name.toLowerCase()===t}));return n&&n.color}},function(e,t,n){"use strict";t.__esModule=!0,t.zipWith=t.zip=t.uniqBy=t.reduce=t.sortBy=t.map=t.filter=t.toKeyedArray=t.toArray=void 0;t.toArray=function(e){if(Array.isArray(e))return e;if("object"==typeof e){var t=Object.prototype.hasOwnProperty,n=[];for(var r in e)t.call(e,r)&&n.push(e[r]);return n}return[]};t.toKeyedArray=function(e,t){return void 0===t&&(t="key"),r((function(e,n){var r;return Object.assign(((r={})[t]=n,r),e)}))(e)};t.filter=function(e){return function(t){if(null===t&&t===undefined)return t;if(Array.isArray(t)){for(var n=[],r=0;ru)return 1}return 0};t.sortBy=function(){for(var e=arguments.length,t=new Array(e),n=0;n=48&&r<=90?String.fromCharCode(r):"["+r+"]"},s=function(e){var t=window.event?e.which:e.keyCode,n=e.ctrlKey,r=e.altKey,o=e.shiftKey;return{keyCode:t,ctrlKey:n,altKey:r,shiftKey:o,hasModifierKeys:n||r||o,keyString:c(n,r,o,t)}},l=function(){for(var e=0,t=Object.keys(u);e=0||(o[n]=e[n]);return o}var h=(0,c.createLogger)("Button"),v=function(e){var t=e.className,n=e.fluid,c=e.icon,d=e.color,v=e.disabled,g=e.selected,m=e.tooltip,y=e.tooltipPosition,b=e.ellipsis,_=e.content,w=e.iconRotation,x=e.iconSpin,E=e.children,C=e.onclick,S=e.onClick,N=p(e,["className","fluid","icon","color","disabled","selected","tooltip","tooltipPosition","ellipsis","content","iconRotation","iconSpin","children","onclick","onClick"]),k=!(!_&&!E);return C&&h.warn("Lowercase 'onclick' is not supported on Button and lowercase prop names are discouraged in general. Please use a camelCase'onClick' instead and read: https://infernojs.org/docs/guides/event-handling"),(0,r.normalizeProps)((0,r.createComponentVNode)(2,s.Box,Object.assign({className:(0,o.classes)(["Button",n&&"Button--fluid",v&&"Button--disabled",g&&"Button--selected",k&&"Button--hasContent",b&&"Button--ellipsis",d&&"string"==typeof d?"Button--color--"+d:"Button--color--default",t]),tabIndex:!v&&"0",unselectable:i.IS_IE8,onclick:function(e){(0,u.refocusLayout)(),!v&&S&&S(e)},onKeyDown:function(e){var t=window.event?e.which:e.keyCode;return t===a.KEY_SPACE||t===a.KEY_ENTER?(e.preventDefault(),void(!v&&S&&S(e))):t===a.KEY_ESCAPE?(e.preventDefault(),void(0,u.refocusLayout)()):void 0}},N,{children:[c&&(0,r.createComponentVNode)(2,l.Icon,{name:c,rotation:w,spin:x}),_,E,m&&(0,r.createComponentVNode)(2,f.Tooltip,{content:m,position:y})]})))};t.Button=v,v.defaultHooks=o.pureComponentHooks;var g=function(e){var t=e.checked,n=p(e,["checked"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,v,Object.assign({color:"transparent",icon:t?"check-square-o":"square-o",selected:t},n)))};t.ButtonCheckbox=g,v.Checkbox=g;var m=function(e){function t(){var t;return(t=e.call(this)||this).state={clickedOnce:!1},t.handleClick=function(){t.state.clickedOnce&&t.setClickedOnce(!1)},t}d(t,e);var n=t.prototype;return n.setClickedOnce=function(e){var t=this;this.setState({clickedOnce:e}),e?setTimeout((function(){return window.addEventListener("click",t.handleClick)})):window.removeEventListener("click",this.handleClick)},n.render=function(){var e=this,t=this.props,n=t.confirmContent,o=void 0===n?"Confirm?":n,i=t.confirmColor,a=void 0===i?"bad":i,u=t.confirmIcon,c=t.icon,s=t.color,l=t.content,f=t.onClick,d=p(t,["confirmContent","confirmColor","confirmIcon","icon","color","content","onClick"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,v,Object.assign({content:this.state.clickedOnce?o:l,icon:this.state.clickedOnce?u:c,color:this.state.clickedOnce?a:s,onClick:function(){return e.state.clickedOnce?f():e.setClickedOnce(!0)}},d)))},t}(r.Component);t.ButtonConfirm=m,v.Confirm=m;var y=function(e){function t(){var t;return(t=e.call(this)||this).inputRef=(0,r.createRef)(),t.state={inInput:!1},t}d(t,e);var n=t.prototype;return n.setInInput=function(e){if(this.setState({inInput:e}),this.inputRef){var t=this.inputRef.current;if(e){t.value=this.props.currentValue||"";try{t.focus(),t.select()}catch(n){}}}},n.commitResult=function(e){if(this.inputRef){var t=this.inputRef.current;if(""!==t.value)return void this.props.onCommit(e,t.value);if(!this.props.defaultValue)return;this.props.onCommit(e,this.props.defaultValue)}},n.render=function(){var e=this,t=this.props,n=t.fluid,i=t.content,u=t.icon,c=t.iconRotation,d=t.iconSpin,h=t.tooltip,v=t.tooltipPosition,g=t.color,m=void 0===g?"default":g,y=(t.placeholder,t.maxLength,p(t,["fluid","content","icon","iconRotation","iconSpin","tooltip","tooltipPosition","color","placeholder","maxLength"]));return(0,r.normalizeProps)((0,r.createComponentVNode)(2,s.Box,Object.assign({className:(0,o.classes)(["Button",n&&"Button--fluid","Button--color--"+m])},y,{onClick:function(){return e.setInInput(!0)},children:[u&&(0,r.createComponentVNode)(2,l.Icon,{name:u,rotation:c,spin:d}),(0,r.createVNode)(1,"div",null,i,0),(0,r.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:this.state.inInput?undefined:"none","text-align":"left"},onBlur:function(t){e.state.inInput&&(e.setInInput(!1),e.commitResult(t))},onKeyDown:function(t){if(t.keyCode===a.KEY_ENTER)return e.setInInput(!1),void e.commitResult(t);t.keyCode===a.KEY_ESCAPE&&e.setInInput(!1)}},null,this.inputRef),h&&(0,r.createComponentVNode)(2,f.Tooltip,{content:h,position:v})]})))},t}(r.Component);t.ButtonInput=y,v.Input=y},function(e,t,n){"use strict";t.__esModule=!0,t.Icon=void 0;var r=n(2),o=n(9),i=n(13);var a=/-o$/,u=function(e){var t=e.name,n=e.size,u=e.spin,c=e.className,s=e.style,l=void 0===s?{}:s,f=e.rotation,d=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["name","size","spin","className","style","rotation"]);n&&(l["font-size"]=100*n+"%"),"number"==typeof f&&(l.transform="rotate("+f+"deg)");var p=a.test(t),h=t.replace(a,"");return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({as:"i",className:(0,o.classes)([c,p?"far":"fas","fa-"+h,u&&"fa-spin"]),style:l},d)))};t.Icon=u,u.defaultHooks=o.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.TableCell=t.TableRow=t.Table=void 0;var r=n(2),o=n(9),i=n(13);function a(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var u=function(e){var t=e.className,n=e.collapsing,u=e.children,c=a(e,["className","collapsing","children"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"table",(0,o.classes)(["Table",n&&"Table--collapsing",t,(0,i.computeBoxClassName)(c)]),(0,r.createVNode)(1,"tbody",null,u,0),2,Object.assign({},(0,i.computeBoxProps)(c))))};t.Table=u,u.defaultHooks=o.pureComponentHooks;var c=function(e){var t=e.className,n=e.header,u=a(e,["className","header"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"tr",(0,o.classes)(["Table__row",n&&"Table__row--header",t,(0,i.computeBoxClassName)(e)]),null,1,Object.assign({},(0,i.computeBoxProps)(u))))};t.TableRow=c,c.defaultHooks=o.pureComponentHooks;var s=function(e){var t=e.className,n=e.collapsing,u=e.header,c=a(e,["className","collapsing","header"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"td",(0,o.classes)(["Table__cell",n&&"Table__cell--collapsing",u&&"Table__cell--header",t,(0,i.computeBoxClassName)(e)]),null,1,Object.assign({},(0,i.computeBoxProps)(c))))};t.TableCell=s,s.defaultHooks=o.pureComponentHooks,u.Row=c,u.Cell=s},function(e,t,n){"use strict";t.__esModule=!0,t.NumberInput=void 0;var r=n(2),o=n(55),i=n(9),a=n(20),u=n(116),c=n(13);var s=function(e){var t,n;function s(t){var n;n=e.call(this,t)||this;var i=t.value;return n.inputRef=(0,r.createRef)(),n.state={value:i,dragging:!1,editing:!1,internalValue:null,origin:null,suppressingFlicker:!1},n.flickerTimer=null,n.suppressFlicker=function(){var e=n.props.suppressFlicker;e>0&&(n.setState({suppressingFlicker:!0}),clearTimeout(n.flickerTimer),n.flickerTimer=setTimeout((function(){return n.setState({suppressingFlicker:!1})}),e))},n.handleDragStart=function(e){var t=n.props.value;n.state.editing||(document.body.style["pointer-events"]="none",n.ref=e.target,n.setState({dragging:!1,origin:e.screenY,value:t,internalValue:t}),n.timer=setTimeout((function(){n.setState({dragging:!0})}),250),n.dragInterval=setInterval((function(){var t=n.state,r=t.dragging,o=t.value,i=n.props.onDrag;r&&i&&i(e,o)}),500),document.addEventListener("mousemove",n.handleDragMove),document.addEventListener("mouseup",n.handleDragEnd))},n.handleDragMove=function(e){var t=n.props,r=t.minValue,i=t.maxValue,a=t.step,u=t.stepPixelSize;n.setState((function(t){var n=Object.assign({},t),c=n.origin-e.screenY;if(t.dragging){var s=Number.isFinite(r)?r%a:0;n.internalValue=(0,o.clamp)(n.internalValue+c*a/u,r-a,i+a),n.value=(0,o.clamp)(n.internalValue-n.internalValue%a+s,r,i),n.origin=e.screenY}else Math.abs(c)>4&&(n.dragging=!0);return n}))},n.handleDragEnd=function(e){var t=n.props,r=t.onChange,o=t.onDrag,i=n.state,a=i.dragging,u=i.value,c=i.internalValue;if(document.body.style["pointer-events"]="auto",clearTimeout(n.timer),clearInterval(n.dragInterval),n.setState({dragging:!1,editing:!a,origin:null}),document.removeEventListener("mousemove",n.handleDragMove),document.removeEventListener("mouseup",n.handleDragEnd),a)n.suppressFlicker(),r&&r(e,u),o&&o(e,u);else if(n.inputRef){var s=n.inputRef.current;s.value=c;try{s.focus(),s.select()}catch(l){}}},n}return n=e,(t=s).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,s.prototype.render=function(){var e=this,t=this.state,n=t.dragging,s=t.editing,l=t.value,f=t.suppressingFlicker,d=this.props,p=d.className,h=d.fluid,v=d.animated,g=d.value,m=d.unit,y=d.minValue,b=d.maxValue,_=d.height,w=d.width,x=d.lineHeight,E=d.fontSize,C=d.format,S=d.onChange,N=d.onDrag,k=g;(n||f)&&(k=l);var O=function(e){return(0,r.createVNode)(1,"div","NumberInput__content",e+(m?" "+m:""),0,{unselectable:a.IS_IE8})},A=v&&!n&&!f&&(0,r.createComponentVNode)(2,u.AnimatedNumber,{value:k,format:C,children:O})||O(C?C(k):k);return(0,r.createComponentVNode)(2,c.Box,{className:(0,i.classes)(["NumberInput",h&&"NumberInput--fluid",p]),minWidth:w,minHeight:_,lineHeight:x,fontSize:E,onMouseDown:this.handleDragStart,children:[(0,r.createVNode)(1,"div","NumberInput__barContainer",(0,r.createVNode)(1,"div","NumberInput__bar",null,1,{style:{height:(0,o.clamp)((k-y)/(b-y)*100,0,100)+"%"}}),2),A,(0,r.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:s?undefined:"none",height:_,"line-height":x,"font-size":E},onBlur:function(t){if(s){var n=(0,o.clamp)(t.target.value,y,b);e.setState({editing:!1,value:n}),e.suppressFlicker(),S&&S(t,n),N&&N(t,n)}},onKeyDown:function(t){if(13===t.keyCode){var n=(0,o.clamp)(t.target.value,y,b);return e.setState({editing:!1,value:n}),e.suppressFlicker(),S&&S(t,n),void(N&&N(t,n))}27!==t.keyCode||e.setState({editing:!1})}},null,this.inputRef)]})},s}(r.Component);t.NumberInput=s,s.defaultHooks=i.pureComponentHooks,s.defaultProps={minValue:-Infinity,maxValue:+Infinity,step:1,stepPixelSize:1,suppressFlicker:50}},function(e,t,n){"use strict";var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(o){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,n){"use strict";var r=n(5),o=n(1),i=n(84);e.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(e,t,n){"use strict";var r=n(3),o=n(85),i=r["__core-js_shared__"]||o("__core-js_shared__",{});e.exports=i},function(e,t,n){"use strict";var r=n(3),o=n(86),i=r.WeakMap;e.exports="function"==typeof i&&/native code/.test(o(i))},function(e,t,n){"use strict";var r=n(14),o=n(88),i=n(16),a=n(11);e.exports=function(e,t){for(var n=o(t),u=a.f,c=i.f,s=0;sc;)r(u,n=t[c++])&&(~i(s,n)||s.push(n));return s}},function(e,t,n){"use strict";var r=n(91);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(e,t,n){"use strict";var r=n(5),o=n(11),i=n(6),a=n(61);e.exports=r?Object.defineProperties:function(e,t){i(e);for(var n,r=a(t),u=r.length,c=0;u>c;)o.f(e,n=r[c++],t[n]);return e}},function(e,t,n){"use strict";var r=n(32);e.exports=r("document","documentElement")},function(e,t,n){"use strict";var r=n(21),o=n(43).f,i={}.toString,a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return a&&"[object Window]"==i.call(e)?function(e){try{return o(e)}catch(t){return a.slice()}}(e):o(r(e))}},function(e,t,n){"use strict";var r=n(10);t.f=r},function(e,t,n){"use strict";var r=n(12),o=n(37),i=n(8),a=Math.min;e.exports=[].copyWithin||function(e,t){var n=r(this),u=i(n.length),c=o(e,u),s=o(t,u),l=arguments.length>2?arguments[2]:undefined,f=a((l===undefined?u:o(l,u))-s,u-c),d=1;for(s0;)s in n?n[c]=n[s]:delete n[c],c+=d,s+=d;return n}},function(e,t,n){"use strict";var r=n(50),o=n(8),i=n(44);e.exports=function a(e,t,n,u,c,s,l,f){for(var d,p=c,h=0,v=!!l&&i(l,f,3);h0&&r(d))p=a(e,t,d,o(d.length),p,s-1)-1;else{if(p>=9007199254740991)throw TypeError("Exceed the acceptable array length");e[p]=d}p++}h++}return p}},function(e,t,n){"use strict";var r=n(6);e.exports=function(e,t,n,o){try{return o?t(r(n)[0],n[1]):t(n)}catch(a){var i=e["return"];throw i!==undefined&&r(i.call(e)),a}}},function(e,t,n){"use strict";var r=n(21),o=n(40),i=n(64),a=n(30),u=n(97),c=a.set,s=a.getterFor("Array Iterator");e.exports=u(Array,"Array",(function(e,t){c(this,{type:"Array Iterator",target:r(e),index:0,kind:t})}),(function(){var e=s(this),t=e.target,n=e.kind,r=e.index++;return!t||r>=t.length?(e.target=undefined,{value:undefined,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}}),"values"),i.Arguments=i.Array,o("keys"),o("values"),o("entries")},function(e,t,n){"use strict";var r,o,i,a=n(31),u=n(25),c=n(14),s=n(10),l=n(33),f=s("iterator"),d=!1;[].keys&&("next"in(i=[].keys())?(o=a(a(i)))!==Object.prototype&&(r=o):d=!0),r==undefined&&(r={}),l||c(r,f)||u(r,f,(function(){return this})),e.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:d}},function(e,t,n){"use strict";var r=n(4);e.exports=function(e){if(!r(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e}},function(e,t,n){"use strict";var r=n(21),o=n(26),i=n(8),a=n(34),u=n(19),c=Math.min,s=[].lastIndexOf,l=!!s&&1/[1].lastIndexOf(1,-0)<0,f=a("lastIndexOf"),d=u("indexOf",{ACCESSORS:!0,1:0}),p=l||!f||!d;e.exports=p?function(e){if(l)return s.apply(this,arguments)||0;var t=r(this),n=i(t.length),a=n-1;for(arguments.length>1&&(a=c(a,o(arguments[1]))),a<0&&(a=n+a);a>=0;a--)if(a in t&&t[a]===e)return a||0;return-1}:s},function(e,t,n){"use strict";var r=n(26),o=n(8);e.exports=function(e){if(e===undefined)return 0;var t=r(e),n=o(t);if(t!==n)throw RangeError("Wrong length or index");return n}},function(e,t,n){"use strict";var r=n(27),o=n(4),i=[].slice,a={},u=function(e,t,n){if(!(t in a)){for(var r=[],o=0;o1?arguments[1]:undefined,3);t=t?t.next:n.first;)for(r(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!m(this,e)}}),i(l.prototype,n?{get:function(e){var t=m(this,e);return t&&t.value},set:function(e,t){return g(this,0===e?0:e,t)}}:{add:function(e){return g(this,e=0===e?0:e,e)}}),f&&r(l.prototype,"size",{get:function(){return p(this).size}}),l},setStrong:function(e,t,n){var r=t+" Iterator",o=v(t),i=v(r);s(e,t,(function(e,t){h(this,{type:r,target:e,state:o(e),kind:t,last:undefined})}),(function(){for(var e=i(this),t=e.kind,n=e.last;n&&n.removed;)n=n.previous;return e.target&&(e.last=n=n?n.next:e.state.first)?"keys"==t?{value:n.key,done:!1}:"values"==t?{value:n.value,done:!1}:{value:[n.key,n.value],done:!1}:(e.target=undefined,{value:undefined,done:!0})}),n?"entries":"values",!n,!0),l(t)}}},function(e,t,n){"use strict";var r=Math.log;e.exports=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:r(1+e)}},function(e,t,n){"use strict";var r=n(4),o=Math.floor;e.exports=function(e){return!r(e)&&isFinite(e)&&o(e)===e}},function(e,t,n){"use strict";var r=n(3),o=n(53).trim,i=n(78),a=r.parseInt,u=/^[+-]?0[Xx]/,c=8!==a(i+"08")||22!==a(i+"0x16");e.exports=c?function(e,t){var n=o(String(e));return a(n,t>>>0||(u.test(n)?16:10))}:a},function(e,t,n){"use strict";var r=n(5),o=n(61),i=n(21),a=n(68).f,u=function(e){return function(t){for(var n,u=i(t),c=o(u),s=c.length,l=0,f=[];s>l;)n=c[l++],r&&!a.call(u,n)||f.push(e?[n,u[n]]:u[n]);return f}};e.exports={entries:u(!0),values:u(!1)}},function(e,t,n){"use strict";e.exports=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}},function(e,t,n){"use strict";var r=n(3);e.exports=r.Promise},function(e,t,n){"use strict";var r=n(70);e.exports=/(iphone|ipod|ipad).*applewebkit/i.test(r)},function(e,t,n){"use strict";var r,o,i,a,u,c,s,l,f=n(3),d=n(16).f,p=n(28),h=n(103).set,v=n(149),g=f.MutationObserver||f.WebKitMutationObserver,m=f.process,y=f.Promise,b="process"==p(m),_=d(f,"queueMicrotask"),w=_&&_.value;w||(r=function(){var e,t;for(b&&(e=m.domain)&&e.exit();o;){t=o.fn,o=o.next;try{t()}catch(n){throw o?a():i=undefined,n}}i=undefined,e&&e.enter()},b?a=function(){m.nextTick(r)}:g&&!v?(u=!0,c=document.createTextNode(""),new g(r).observe(c,{characterData:!0}),a=function(){c.data=u=!u}):y&&y.resolve?(s=y.resolve(undefined),l=s.then,a=function(){l.call(s,r)}):a=function(){h.call(f,r)}),e.exports=w||function(e){var t={fn:e,next:undefined};i&&(i.next=t),o||(o=t,a()),i=t}},function(e,t,n){"use strict";var r=n(6),o=n(4),i=n(152);e.exports=function(e,t){if(r(e),o(t)&&t.constructor===e)return t;var n=i.f(e);return(0,n.resolve)(t),n.promise}},function(e,t,n){"use strict";var r=n(27),o=function(e){var t,n;this.promise=new e((function(e,r){if(t!==undefined||n!==undefined)throw TypeError("Bad Promise constructor");t=e,n=r})),this.resolve=r(t),this.reject=r(n)};e.exports.f=function(e){return new o(e)}},function(e,t,n){"use strict";var r=n(0),o=n(81);r({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},function(e,t,n){"use strict";var r=n(70);e.exports=/Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(r)},function(e,t,n){"use strict";var r=n(344);e.exports=function(e,t){var n=r(e);if(n%t)throw RangeError("Wrong offset");return n}},function(e,t,n){"use strict";var r=n(12),o=n(8),i=n(95),a=n(94),u=n(44),c=n(7).aTypedArrayConstructor;e.exports=function(e){var t,n,s,l,f,d,p=r(e),h=arguments.length,v=h>1?arguments[1]:undefined,g=v!==undefined,m=i(p);if(m!=undefined&&!a(m))for(d=(f=m.call(p)).next,p=[];!(l=d.call(f)).done;)p.push(l.value);for(g&&h>2&&(v=u(v,arguments[2],2)),n=o(p.length),s=new(c(this))(n),t=0;n>t;t++)s[t]=g?v(p[t],t):p[t];return s}},function(e,t,n){"use strict";var r=n(65),o=n(47).getWeakData,i=n(6),a=n(4),u=n(52),c=n(67),s=n(15),l=n(14),f=n(30),d=f.set,p=f.getterFor,h=s.find,v=s.findIndex,g=0,m=function(e){return e.frozen||(e.frozen=new y)},y=function(){this.entries=[]},b=function(e,t){return h(e.entries,(function(e){return e[0]===t}))};y.prototype={get:function(e){var t=b(this,e);if(t)return t[1]},has:function(e){return!!b(this,e)},set:function(e,t){var n=b(this,e);n?n[1]=t:this.entries.push([e,t])},"delete":function(e){var t=v(this.entries,(function(t){return t[0]===e}));return~t&&this.entries.splice(t,1),!!~t}},e.exports={getConstructor:function(e,t,n,s){var f=e((function(e,r){u(e,f,t),d(e,{type:t,id:g++,frozen:undefined}),r!=undefined&&c(r,e[s],e,n)})),h=p(t),v=function(e,t,n){var r=h(e),a=o(i(t),!0);return!0===a?m(r).set(t,n):a[r.id]=n,e};return r(f.prototype,{"delete":function(e){var t=h(this);if(!a(e))return!1;var n=o(e);return!0===n?m(t)["delete"](e):n&&l(n,t.id)&&delete n[t.id]},has:function(e){var t=h(this);if(!a(e))return!1;var n=o(e);return!0===n?m(t).has(e):n&&l(n,t.id)}}),r(f.prototype,n?{get:function(e){var t=h(this);if(a(e)){var n=o(e);return!0===n?m(t).get(e):n?n[t.id]:undefined}},set:function(e,t){return v(this,e,t)}}:{add:function(e){return v(this,e,!0)}}),f}}},function(e,t,n){"use strict";t.__esModule=!0,t.setupHotReloading=t.sendLogEntry=void 0;t.sendLogEntry=function(e,t){};t.setupHotReloading=function(){0}},function(e,t,n){"use strict";t.__esModule=!0,t.resizeStartHandler=t.dragStartHandler=t.setupDrag=void 0;var r=n(398),o=n(20);function i(e,t,n,r,o,i,a){try{var u=e[i](a),c=u.value}catch(s){return void n(s)}u.done?t(c):Promise.resolve(c).then(r,o)}var a,u,c,s,l,f=(0,n(54).createLogger)("drag"),d=!1,p=!1,h=[0,0],v=function(e){return(0,o.winget)(e,"pos").then((function(e){return[e.x,e.y]}))},g=function(e,t){return(0,o.winset)(e,"pos",t[0]+","+t[1])},m=function(){var e,t=(e=regeneratorRuntime.mark((function n(e){var t,r,o,i;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return f.log("setting up"),a=e.config.window,n.next=4,v(a);case 4:t=n.sent,h=[t[0]-window.screenLeft,t[1]-window.screenTop],r=y(t),o=r[0],i=r[1],o&&g(a,i),f.debug("current state",{ref:a,screenOffset:h});case 9:case"end":return n.stop()}}),n)})),function(){var t=this,n=arguments;return new Promise((function(r,o){var a=e.apply(t,n);function u(e){i(a,r,o,u,c,"next",e)}function c(e){i(a,r,o,u,c,"throw",e)}u(undefined)}))});return function(e){return t.apply(this,arguments)}}();t.setupDrag=m;var y=function(e){var t=e[0],n=e[1],r=!1;return t<0?(t=0,r=!0):t+window.innerWidth>window.screen.availWidth&&(t=window.screen.availWidth-window.innerWidth,r=!0),n<0?(n=0,r=!0):n+window.innerHeight>window.screen.availHeight&&(n=window.screen.availHeight-window.innerHeight,r=!0),[r,[t,n]]};t.dragStartHandler=function(e){f.log("drag start"),d=!0,u=[window.screenLeft-e.screenX,window.screenTop-e.screenY],document.addEventListener("mousemove",_),document.addEventListener("mouseup",b),_(e)};var b=function E(e){f.log("drag end"),_(e),document.removeEventListener("mousemove",_),document.removeEventListener("mouseup",E),d=!1},_=function(e){d&&(e.preventDefault(),g(a,(0,r.vecAdd)([e.screenX,e.screenY],h,u)))};t.resizeStartHandler=function(e,t){return function(n){c=[e,t],f.log("resize start",c),p=!0,u=[window.screenLeft-n.screenX,window.screenTop-n.screenY],s=[window.innerWidth,window.innerHeight],document.addEventListener("mousemove",x),document.addEventListener("mouseup",w),x(n)}};var w=function C(e){f.log("resize end",l),x(e),document.removeEventListener("mousemove",x),document.removeEventListener("mouseup",C),p=!1},x=function(e){p&&(e.preventDefault(),(l=(0,r.vecAdd)(s,(0,r.vecMultiply)(c,(0,r.vecAdd)([e.screenX,e.screenY],(0,r.vecInverse)([window.screenLeft,window.screenTop]),u,[1,1]))))[0]=Math.max(l[0],250),l[1]=Math.max(l[1],120),function(e,t){(0,o.winset)(e,"size",t[0]+","+t[1])}(a,l))}},function(e,t,n){"use strict";function r(e){var t=0;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(e=function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,t)}(e)))return function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(t=e[Symbol.iterator]()).next.bind(t)}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n1?o-1:0),u=1;u1?r-1:0),i=1;i35;return(0,r.createVNode)(1,"div",(0,o.classes)(["Tooltip",a&&"Tooltip--long",i&&"Tooltip--"+i]),null,1,{"data-tooltip":t})}},function(e,t,n){"use strict";t.__esModule=!0,t.Dimmer=void 0;var r=n(2),o=n(9),i=n(13);t.Dimmer=function(e){var t=e.className,n=e.children,a=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["className","children"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["Dimmer"].concat(t))},a,{children:(0,r.createVNode)(1,"div","Dimmer__inner",n,0)})))}},function(e,t,n){"use strict";t.__esModule=!0,t.Divider=void 0;var r=n(2),o=n(9);t.Divider=function(e){var t=e.vertical,n=e.hidden;return(0,r.createVNode)(1,"div",(0,o.classes)(["Divider",n&&"Divider--hidden",t?"Divider--vertical":"Divider--horizontal"]))}},function(e,t,n){"use strict";t.__esModule=!0,t.FlexItem=t.computeFlexItemProps=t.Flex=t.computeFlexProps=void 0;var r=n(2),o=n(9),i=n(20),a=n(13);function u(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var c=function(e){var t=e.className,n=e.direction,r=e.wrap,a=e.align,c=e.justify,s=e.inline,l=e.spacing,f=void 0===l?0:l,d=u(e,["className","direction","wrap","align","justify","inline","spacing"]);return Object.assign({className:(0,o.classes)(["Flex",i.IS_IE8&&("column"===n?"Flex--ie8--column":"Flex--ie8"),s&&"Flex--inline",f>0&&"Flex--spacing--"+f,t]),style:Object.assign({},d.style,{"flex-direction":n,"flex-wrap":r,"align-items":a,"justify-content":c})},d)};t.computeFlexProps=c;var s=function(e){return(0,r.normalizeProps)((0,r.createComponentVNode)(2,a.Box,Object.assign({},c(e))))};t.Flex=s,s.defaultHooks=o.pureComponentHooks;var l=function(e){var t=e.className,n=e.grow,r=e.order,c=e.shrink,s=e.basis,l=void 0===s?e.width:s,f=e.align,d=u(e,["className","grow","order","shrink","basis","align"]);return Object.assign({className:(0,o.classes)(["Flex__item",i.IS_IE8&&"Flex__item--ie8",t]),style:Object.assign({},d.style,{"flex-grow":n,"flex-shrink":c,"flex-basis":(0,a.unit)(l),order:r,"align-self":f})},d)};t.computeFlexItemProps=l;var f=function(e){return(0,r.normalizeProps)((0,r.createComponentVNode)(2,a.Box,Object.assign({},l(e))))};t.FlexItem=f,f.defaultHooks=o.pureComponentHooks,s.Item=f},function(e,t,n){"use strict";t.__esModule=!0,t.DraggableControl=void 0;var r=n(2),o=n(55),i=n(9),a=n(116);var u=function(e,t){return e.screenX*t[0]+e.screenY*t[1]},c=function(e){var t,n;function i(t){var n;return(n=e.call(this,t)||this).inputRef=(0,r.createRef)(),n.state={value:t.value,dragging:!1,editing:!1,internalValue:null,origin:null,suppressingFlicker:!1},n.flickerTimer=null,n.suppressFlicker=function(){var e=n.props.suppressFlicker;e>0&&(n.setState({suppressingFlicker:!0}),clearTimeout(n.flickerTimer),n.flickerTimer=setTimeout((function(){return n.setState({suppressingFlicker:!1})}),e))},n.handleDragStart=function(e){var t=n.props,r=t.value,o=t.dragMatrix;n.state.editing||(document.body.style["pointer-events"]="none",n.ref=e.target,n.setState({dragging:!1,origin:u(e,o),value:r,internalValue:r}),n.timer=setTimeout((function(){n.setState({dragging:!0})}),250),n.dragInterval=setInterval((function(){var t=n.state,r=t.dragging,o=t.value,i=n.props.onDrag;r&&i&&i(e,o)}),500),document.addEventListener("mousemove",n.handleDragMove),document.addEventListener("mouseup",n.handleDragEnd))},n.handleDragMove=function(e){var t=n.props,r=t.minValue,i=t.maxValue,a=t.step,c=t.stepPixelSize,s=t.dragMatrix;n.setState((function(t){var n=Object.assign({},t),l=u(e,s)-n.origin;if(t.dragging){var f=Number.isFinite(r)?r%a:0;n.internalValue=(0,o.clamp)(n.internalValue+l*a/c,r-a,i+a),n.value=(0,o.clamp)(n.internalValue-n.internalValue%a+f,r,i),n.origin=u(e,s)}else Math.abs(l)>4&&(n.dragging=!0);return n}))},n.handleDragEnd=function(e){var t=n.props,r=t.onChange,o=t.onDrag,i=n.state,a=i.dragging,u=i.value,c=i.internalValue;if(document.body.style["pointer-events"]="auto",clearTimeout(n.timer),clearInterval(n.dragInterval),n.setState({dragging:!1,editing:!a,origin:null}),document.removeEventListener("mousemove",n.handleDragMove),document.removeEventListener("mouseup",n.handleDragEnd),a)n.suppressFlicker(),r&&r(e,u),o&&o(e,u);else if(n.inputRef){var s=n.inputRef.current;s.value=c;try{s.focus(),s.select()}catch(l){}}},n}return n=e,(t=i).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n,i.prototype.render=function(){var e=this,t=this.state,n=t.dragging,i=t.editing,u=t.value,c=t.suppressingFlicker,s=this.props,l=s.animated,f=s.value,d=s.unit,p=s.minValue,h=s.maxValue,v=s.format,g=s.onChange,m=s.onDrag,y=s.children,b=s.height,_=s.lineHeight,w=s.fontSize,x=f;(n||c)&&(x=u);var E=function(e){return e+(d?" "+d:"")},C=l&&!n&&!c&&(0,r.createComponentVNode)(2,a.AnimatedNumber,{value:x,format:v,children:E})||E(v?v(x):x),S=(0,r.createVNode)(64,"input","NumberInput__input",null,1,{style:{display:i?undefined:"none",height:b,"line-height":_,"font-size":w},onBlur:function(t){if(i){var n=(0,o.clamp)(t.target.value,p,h);e.setState({editing:!1,value:n}),e.suppressFlicker(),g&&g(t,n),m&&m(t,n)}},onKeyDown:function(t){if(13===t.keyCode){var n=(0,o.clamp)(t.target.value,p,h);return e.setState({editing:!1,value:n}),e.suppressFlicker(),g&&g(t,n),void(m&&m(t,n))}27!==t.keyCode||e.setState({editing:!1})}},null,this.inputRef);return y({dragging:n,editing:i,value:f,displayValue:x,displayElement:C,inputElement:S,handleDragStart:this.handleDragStart})},i}(r.Component);t.DraggableControl=c,c.defaultHooks=i.pureComponentHooks,c.defaultProps={minValue:-Infinity,maxValue:+Infinity,step:1,stepPixelSize:1,suppressFlicker:50,dragMatrix:[1,0]}},function(e,t,n){"use strict";t.__esModule=!0,t.Window=void 0;var r=n(2),o=n(9),i=n(423),a=n(36),u=n(20),c=n(49),s=n(112),l=n(159),f=n(114),d=n(54),p=n(115);var h=(0,d.createLogger)("Window"),v=function(e){var t,n;function c(){return e.apply(this,arguments)||this}n=e,(t=c).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var d=c.prototype;return d.componentDidMount=function(){(0,p.refocusLayout)()},d.render=function(){var e=this.props,t=e.resizable,n=e.theme,c=e.children,d=(0,a.useBackend)(this.context),v=d.config,g=d.debugLayout,y=v.observer?v.statusi;)o.push(arguments[i++]);if(r=t,(p(t)||e!==undefined)&&!ie(e))return d(t)||(t=function(e,t){if("function"==typeof r&&(t=r.call(this,e,t)),!ie(t))return t}),o[1]=t,H.apply(null,o)}});Y.prototype[D]||k(Y.prototype,D,Y.prototype.valueOf),j(Y,"Symbol"),T[R]=!0},function(e,t,n){"use strict";var r=n(0),o=n(5),i=n(3),a=n(14),u=n(4),c=n(11).f,s=n(125),l=i.Symbol;if(o&&"function"==typeof l&&(!("description"in l.prototype)||l().description!==undefined)){var f={},d=function(){var e=arguments.length<1||arguments[0]===undefined?undefined:String(arguments[0]),t=this instanceof d?new l(e):e===undefined?l():l(e);return""===e&&(f[t]=!0),t};s(d,l);var p=d.prototype=l.prototype;p.constructor=d;var h=p.toString,v="Symbol(test)"==String(l("test")),g=/^Symbol\((.*)\)[^)]+$/;c(p,"description",{configurable:!0,get:function(){var e=u(this)?this.valueOf():this,t=h.call(e);if(a(f,e))return"";var n=v?t.slice(7,-1):t.replace(g,"$1");return""===n?undefined:n}}),r({global:!0,forced:!0},{Symbol:d})}},function(e,t,n){"use strict";n(22)("asyncIterator")},function(e,t,n){"use strict";n(22)("hasInstance")},function(e,t,n){"use strict";n(22)("isConcatSpreadable")},function(e,t,n){"use strict";n(22)("iterator")},function(e,t,n){"use strict";n(22)("match")},function(e,t,n){"use strict";n(22)("replace")},function(e,t,n){"use strict";n(22)("search")},function(e,t,n){"use strict";n(22)("species")},function(e,t,n){"use strict";n(22)("split")},function(e,t,n){"use strict";n(22)("toPrimitive")},function(e,t,n){"use strict";n(22)("toStringTag")},function(e,t,n){"use strict";n(22)("unscopables")},function(e,t,n){"use strict";var r=n(0),o=n(1),i=n(50),a=n(4),u=n(12),c=n(8),s=n(45),l=n(62),f=n(63),d=n(10),p=n(92),h=d("isConcatSpreadable"),v=p>=51||!o((function(){var e=[];return e[h]=!1,e.concat()[0]!==e})),g=f("concat"),m=function(e){if(!a(e))return!1;var t=e[h];return t!==undefined?!!t:i(e)};r({target:"Array",proto:!0,forced:!v||!g},{concat:function(e){var t,n,r,o,i,a=u(this),f=l(a,0),d=0;for(t=-1,r=arguments.length;t9007199254740991)throw TypeError("Maximum allowed index exceeded");for(n=0;n=9007199254740991)throw TypeError("Maximum allowed index exceeded");s(f,d++,i)}return f.length=d,f}})},function(e,t,n){"use strict";var r=n(0),o=n(133),i=n(40);r({target:"Array",proto:!0},{copyWithin:o}),i("copyWithin")},function(e,t,n){"use strict";var r=n(0),o=n(15).every,i=n(34),a=n(19),u=i("every"),c=a("every");r({target:"Array",proto:!0,forced:!u||!c},{every:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(0),o=n(93),i=n(40);r({target:"Array",proto:!0},{fill:o}),i("fill")},function(e,t,n){"use strict";var r=n(0),o=n(15).filter,i=n(63),a=n(19),u=i("filter"),c=a("filter");r({target:"Array",proto:!0,forced:!u||!c},{filter:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(0),o=n(15).find,i=n(40),a=n(19),u=!0,c=a("find");"find"in[]&&Array(1).find((function(){u=!1})),r({target:"Array",proto:!0,forced:u||!c},{find:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}}),i("find")},function(e,t,n){"use strict";var r=n(0),o=n(15).findIndex,i=n(40),a=n(19),u=!0,c=a("findIndex");"findIndex"in[]&&Array(1).findIndex((function(){u=!1})),r({target:"Array",proto:!0,forced:u||!c},{findIndex:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}}),i("findIndex")},function(e,t,n){"use strict";var r=n(0),o=n(134),i=n(12),a=n(8),u=n(26),c=n(62);r({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:undefined,t=i(this),n=a(t.length),r=c(t,0);return r.length=o(r,t,t,n,0,e===undefined?1:u(e)),r}})},function(e,t,n){"use strict";var r=n(0),o=n(134),i=n(12),a=n(8),u=n(27),c=n(62);r({target:"Array",proto:!0},{flatMap:function(e){var t,n=i(this),r=a(n.length);return u(e),(t=c(n,0)).length=o(t,n,n,r,0,1,e,arguments.length>1?arguments[1]:undefined),t}})},function(e,t,n){"use strict";var r=n(0),o=n(194);r({target:"Array",proto:!0,forced:[].forEach!=o},{forEach:o})},function(e,t,n){"use strict";var r=n(15).forEach,o=n(34),i=n(19),a=o("forEach"),u=i("forEach");e.exports=a&&u?[].forEach:function(e){return r(this,e,arguments.length>1?arguments[1]:undefined)}},function(e,t,n){"use strict";var r=n(0),o=n(196);r({target:"Array",stat:!0,forced:!n(72)((function(e){Array.from(e)}))},{from:o})},function(e,t,n){"use strict";var r=n(44),o=n(12),i=n(135),a=n(94),u=n(8),c=n(45),s=n(95);e.exports=function(e){var t,n,l,f,d,p,h=o(e),v="function"==typeof this?this:Array,g=arguments.length,m=g>1?arguments[1]:undefined,y=m!==undefined,b=s(h),_=0;if(y&&(m=r(m,g>2?arguments[2]:undefined,2)),b==undefined||v==Array&&a(b))for(n=new v(t=u(h.length));t>_;_++)p=y?m(h[_],_):h[_],c(n,_,p);else for(d=(f=b.call(h)).next,n=new v;!(l=d.call(f)).done;_++)p=y?i(f,m,[l.value,_],!0):l.value,c(n,_,p);return n.length=_,n}},function(e,t,n){"use strict";var r=n(0),o=n(59).includes,i=n(40);r({target:"Array",proto:!0,forced:!n(19)("indexOf",{ACCESSORS:!0,1:0})},{includes:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}}),i("includes")},function(e,t,n){"use strict";var r=n(0),o=n(59).indexOf,i=n(34),a=n(19),u=[].indexOf,c=!!u&&1/[1].indexOf(1,-0)<0,s=i("indexOf"),l=a("indexOf",{ACCESSORS:!0,1:0});r({target:"Array",proto:!0,forced:c||!s||!l},{indexOf:function(e){return c?u.apply(this,arguments)||0:o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";n(0)({target:"Array",stat:!0},{isArray:n(50)})},function(e,t,n){"use strict";var r=n(137).IteratorPrototype,o=n(38),i=n(42),a=n(39),u=n(64),c=function(){return this};e.exports=function(e,t,n){var s=t+" Iterator";return e.prototype=o(r,{next:i(1,n)}),a(e,s,!1,!0),u[s]=c,e}},function(e,t,n){"use strict";var r=n(0),o=n(56),i=n(21),a=n(34),u=[].join,c=o!=Object,s=a("join",",");r({target:"Array",proto:!0,forced:c||!s},{join:function(e){return u.call(i(this),e===undefined?",":e)}})},function(e,t,n){"use strict";var r=n(0),o=n(139);r({target:"Array",proto:!0,forced:o!==[].lastIndexOf},{lastIndexOf:o})},function(e,t,n){"use strict";var r=n(0),o=n(15).map,i=n(63),a=n(19),u=i("map"),c=a("map");r({target:"Array",proto:!0,forced:!u||!c},{map:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(0),o=n(1),i=n(45);r({target:"Array",stat:!0,forced:o((function(){function e(){}return!(Array.of.call(e)instanceof e)}))},{of:function(){for(var e=0,t=arguments.length,n=new("function"==typeof this?this:Array)(t);t>e;)i(n,e,arguments[e++]);return n.length=t,n}})},function(e,t,n){"use strict";var r=n(0),o=n(73).left,i=n(34),a=n(19),u=i("reduce"),c=a("reduce",{1:0});r({target:"Array",proto:!0,forced:!u||!c},{reduce:function(e){return o(this,e,arguments.length,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(0),o=n(73).right,i=n(34),a=n(19),u=i("reduceRight"),c=a("reduce",{1:0});r({target:"Array",proto:!0,forced:!u||!c},{reduceRight:function(e){return o(this,e,arguments.length,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(0),o=n(4),i=n(50),a=n(37),u=n(8),c=n(21),s=n(45),l=n(10),f=n(63),d=n(19),p=f("slice"),h=d("slice",{ACCESSORS:!0,0:0,1:2}),v=l("species"),g=[].slice,m=Math.max;r({target:"Array",proto:!0,forced:!p||!h},{slice:function(e,t){var n,r,l,f=c(this),d=u(f.length),p=a(e,d),h=a(t===undefined?d:t,d);if(i(f)&&("function"!=typeof(n=f.constructor)||n!==Array&&!i(n.prototype)?o(n)&&null===(n=n[v])&&(n=undefined):n=undefined,n===Array||n===undefined))return g.call(f,p,h);for(r=new(n===undefined?Array:n)(m(h-p,0)),l=0;p1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(0),o=n(27),i=n(12),a=n(1),u=n(34),c=[],s=c.sort,l=a((function(){c.sort(undefined)})),f=a((function(){c.sort(null)})),d=u("sort");r({target:"Array",proto:!0,forced:l||!f||!d},{sort:function(e){return e===undefined?s.call(i(this)):s.call(i(this),o(e))}})},function(e,t,n){"use strict";n(51)("Array")},function(e,t,n){"use strict";var r=n(0),o=n(37),i=n(26),a=n(8),u=n(12),c=n(62),s=n(45),l=n(63),f=n(19),d=l("splice"),p=f("splice",{ACCESSORS:!0,0:0,1:2}),h=Math.max,v=Math.min;r({target:"Array",proto:!0,forced:!d||!p},{splice:function(e,t){var n,r,l,f,d,p,g=u(this),m=a(g.length),y=o(e,m),b=arguments.length;if(0===b?n=r=0:1===b?(n=0,r=m-y):(n=b-2,r=v(h(i(t),0),m-y)),m+n-r>9007199254740991)throw TypeError("Maximum allowed length exceeded");for(l=c(g,r),f=0;fm-r+n;f--)delete g[f-1]}else if(n>r)for(f=m-r;f>y;f--)p=f+n-1,(d=f+r-1)in g?g[p]=g[d]:delete g[p];for(f=0;f>1,v=23===t?o(2,-24)-o(2,-77):0,g=e<0||0===e&&1/e<0?1:0,m=0;for((e=r(e))!=e||e===1/0?(s=e!=e?1:0,c=p):(c=i(a(e)/u),e*(l=o(2,-c))<1&&(c--,l*=2),(e+=c+h>=1?v/l:v*o(2,1-h))*l>=2&&(c++,l/=2),c+h>=p?(s=0,c=p):c+h>=1?(s=(e*l-1)*o(2,t),c+=h):(s=e*o(2,h-1)*o(2,t),c=0));t>=8;f[m++]=255&s,s/=256,t-=8);for(c=c<0;f[m++]=255&c,c/=256,d-=8);return f[--m]|=128*g,f},unpack:function(e,t){var n,r=e.length,i=8*r-t-1,a=(1<>1,c=i-7,s=r-1,l=e[s--],f=127&l;for(l>>=7;c>0;f=256*f+e[s],s--,c-=8);for(n=f&(1<<-c)-1,f>>=-c,c+=t;c>0;n=256*n+e[s],s--,c-=8);if(0===f)f=1-u;else{if(f===a)return n?NaN:l?-1/0:1/0;n+=o(2,t),f-=u}return(l?-1:1)*n*o(2,f-t)}}},function(e,t,n){"use strict";var r=n(0),o=n(7);r({target:"ArrayBuffer",stat:!0,forced:!o.NATIVE_ARRAY_BUFFER_VIEWS},{isView:o.isView})},function(e,t,n){"use strict";var r=n(0),o=n(1),i=n(74),a=n(6),u=n(37),c=n(8),s=n(41),l=i.ArrayBuffer,f=i.DataView,d=l.prototype.slice;r({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:o((function(){return!new l(2).slice(1,undefined).byteLength}))},{slice:function(e,t){if(d!==undefined&&t===undefined)return d.call(a(this),e);for(var n=a(this).byteLength,r=u(e,n),o=u(t===undefined?n:t,n),i=new(s(this,l))(c(o-r)),p=new f(this),h=new f(i),v=0;r9999?"+":"";return n+o(i(e),n?6:4,0)+"-"+o(this.getUTCMonth()+1,2,0)+"-"+o(this.getUTCDate(),2,0)+"T"+o(this.getUTCHours(),2,0)+":"+o(this.getUTCMinutes(),2,0)+":"+o(this.getUTCSeconds(),2,0)+"."+o(t,3,0)+"Z"}:c},function(e,t,n){"use strict";var r=n(0),o=n(1),i=n(12),a=n(29);r({target:"Date",proto:!0,forced:o((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}))},{toJSON:function(e){var t=i(this),n=a(t);return"number"!=typeof n||isFinite(n)?t.toISOString():null}})},function(e,t,n){"use strict";var r=n(25),o=n(224),i=n(10)("toPrimitive"),a=Date.prototype;i in a||r(a,i,o)},function(e,t,n){"use strict";var r=n(6),o=n(29);e.exports=function(e){if("string"!==e&&"number"!==e&&"default"!==e)throw TypeError("Incorrect hint");return o(r(this),"number"!==e)}},function(e,t,n){"use strict";var r=n(18),o=Date.prototype,i=o.toString,a=o.getTime;new Date(NaN)+""!="Invalid Date"&&r(o,"toString",(function(){var e=a.call(this);return e==e?i.call(this):"Invalid Date"}))},function(e,t,n){"use strict";n(0)({target:"Function",proto:!0},{bind:n(141)})},function(e,t,n){"use strict";var r=n(4),o=n(11),i=n(31),a=n(10)("hasInstance"),u=Function.prototype;a in u||o.f(u,a,{value:function(e){if("function"!=typeof this||!r(e))return!1;if(!r(this.prototype))return e instanceof this;for(;e=i(e);)if(this.prototype===e)return!0;return!1}})},function(e,t,n){"use strict";var r=n(5),o=n(11).f,i=Function.prototype,a=i.toString,u=/^\s*function ([^ (]*)/;r&&!("name"in i)&&o(i,"name",{configurable:!0,get:function(){try{return a.call(this).match(u)[1]}catch(e){return""}}})},function(e,t,n){"use strict";var r=n(3);n(39)(r.JSON,"JSON",!0)},function(e,t,n){"use strict";var r=n(75),o=n(142);e.exports=r("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),o)},function(e,t,n){"use strict";var r=n(0),o=n(143),i=Math.acosh,a=Math.log,u=Math.sqrt,c=Math.LN2;r({target:"Math",stat:!0,forced:!i||710!=Math.floor(i(Number.MAX_VALUE))||i(Infinity)!=Infinity},{acosh:function(e){return(e=+e)<1?NaN:e>94906265.62425156?a(e)+c:o(e-1+u(e-1)*u(e+1))}})},function(e,t,n){"use strict";var r=n(0),o=Math.asinh,i=Math.log,a=Math.sqrt;r({target:"Math",stat:!0,forced:!(o&&1/o(0)>0)},{asinh:function u(e){return isFinite(e=+e)&&0!=e?e<0?-u(-e):i(e+a(e*e+1)):e}})},function(e,t,n){"use strict";var r=n(0),o=Math.atanh,i=Math.log;r({target:"Math",stat:!0,forced:!(o&&1/o(-0)<0)},{atanh:function(e){return 0==(e=+e)?e:i((1+e)/(1-e))/2}})},function(e,t,n){"use strict";var r=n(0),o=n(102),i=Math.abs,a=Math.pow;r({target:"Math",stat:!0},{cbrt:function(e){return o(e=+e)*a(i(e),1/3)}})},function(e,t,n){"use strict";var r=n(0),o=Math.floor,i=Math.log,a=Math.LOG2E;r({target:"Math",stat:!0},{clz32:function(e){return(e>>>=0)?31-o(i(e+.5)*a):32}})},function(e,t,n){"use strict";var r=n(0),o=n(77),i=Math.cosh,a=Math.abs,u=Math.E;r({target:"Math",stat:!0,forced:!i||i(710)===Infinity},{cosh:function(e){var t=o(a(e)-1)+1;return(t+1/(t*u*u))*(u/2)}})},function(e,t,n){"use strict";var r=n(0),o=n(77);r({target:"Math",stat:!0,forced:o!=Math.expm1},{expm1:o})},function(e,t,n){"use strict";n(0)({target:"Math",stat:!0},{fround:n(239)})},function(e,t,n){"use strict";var r=n(102),o=Math.abs,i=Math.pow,a=i(2,-52),u=i(2,-23),c=i(2,127)*(2-u),s=i(2,-126);e.exports=Math.fround||function(e){var t,n,i=o(e),l=r(e);return ic||n!=n?l*Infinity:l*n}},function(e,t,n){"use strict";var r=n(0),o=Math.hypot,i=Math.abs,a=Math.sqrt;r({target:"Math",stat:!0,forced:!!o&&o(Infinity,NaN)!==Infinity},{hypot:function(e,t){for(var n,r,o=0,u=0,c=arguments.length,s=0;u0?(r=n/s)*r:n;return s===Infinity?Infinity:s*a(o)}})},function(e,t,n){"use strict";var r=n(0),o=n(1),i=Math.imul;r({target:"Math",stat:!0,forced:o((function(){return-5!=i(4294967295,5)||2!=i.length}))},{imul:function(e,t){var n=+e,r=+t,o=65535&n,i=65535&r;return 0|o*i+((65535&n>>>16)*i+o*(65535&r>>>16)<<16>>>0)}})},function(e,t,n){"use strict";var r=n(0),o=Math.log,i=Math.LOG10E;r({target:"Math",stat:!0},{log10:function(e){return o(e)*i}})},function(e,t,n){"use strict";n(0)({target:"Math",stat:!0},{log1p:n(143)})},function(e,t,n){"use strict";var r=n(0),o=Math.log,i=Math.LN2;r({target:"Math",stat:!0},{log2:function(e){return o(e)/i}})},function(e,t,n){"use strict";n(0)({target:"Math",stat:!0},{sign:n(102)})},function(e,t,n){"use strict";var r=n(0),o=n(1),i=n(77),a=Math.abs,u=Math.exp,c=Math.E;r({target:"Math",stat:!0,forced:o((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(e){return a(e=+e)<1?(i(e)-i(-e))/2:(u(e-1)-u(-e-1))*(c/2)}})},function(e,t,n){"use strict";var r=n(0),o=n(77),i=Math.exp;r({target:"Math",stat:!0},{tanh:function(e){var t=o(e=+e),n=o(-e);return t==Infinity?1:n==Infinity?-1:(t-n)/(i(e)+i(-e))}})},function(e,t,n){"use strict";n(39)(Math,"Math",!0)},function(e,t,n){"use strict";var r=n(0),o=Math.ceil,i=Math.floor;r({target:"Math",stat:!0},{trunc:function(e){return(e>0?i:o)(e)}})},function(e,t,n){"use strict";var r=n(5),o=n(3),i=n(60),a=n(18),u=n(14),c=n(28),s=n(76),l=n(29),f=n(1),d=n(38),p=n(43).f,h=n(16).f,v=n(11).f,g=n(53).trim,m=o.Number,y=m.prototype,b="Number"==c(d(y)),_=function(e){var t,n,r,o,i,a,u,c,s=l(e,!1);if("string"==typeof s&&s.length>2)if(43===(t=(s=g(s)).charCodeAt(0))||45===t){if(88===(n=s.charCodeAt(2))||120===n)return NaN}else if(48===t){switch(s.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+s}for(a=(i=s.slice(2)).length,u=0;uo)return NaN;return parseInt(i,r)}return+s};if(i("Number",!m(" 0o1")||!m("0b1")||m("+0x1"))){for(var w,x=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof x&&(b?f((function(){y.valueOf.call(n)})):"Number"!=c(n))?s(new m(_(t)),n,x):_(t)},E=r?p(m):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),C=0;E.length>C;C++)u(m,w=E[C])&&!u(x,w)&&v(x,w,h(m,w));x.prototype=y,y.constructor=x,a(o,"Number",x)}},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{EPSILON:Math.pow(2,-52)})},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{isFinite:n(253)})},function(e,t,n){"use strict";var r=n(3).isFinite;e.exports=Number.isFinite||function(e){return"number"==typeof e&&r(e)}},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{isInteger:n(144)})},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{isNaN:function(e){return e!=e}})},function(e,t,n){"use strict";var r=n(0),o=n(144),i=Math.abs;r({target:"Number",stat:!0},{isSafeInteger:function(e){return o(e)&&i(e)<=9007199254740991}})},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{MAX_SAFE_INTEGER:9007199254740991})},function(e,t,n){"use strict";n(0)({target:"Number",stat:!0},{MIN_SAFE_INTEGER:-9007199254740991})},function(e,t,n){"use strict";var r=n(0),o=n(260);r({target:"Number",stat:!0,forced:Number.parseFloat!=o},{parseFloat:o})},function(e,t,n){"use strict";var r=n(3),o=n(53).trim,i=n(78),a=r.parseFloat,u=1/a(i+"-0")!=-Infinity;e.exports=u?function(e){var t=o(String(e)),n=a(t);return 0===n&&"-"==t.charAt(0)?-0:n}:a},function(e,t,n){"use strict";var r=n(0),o=n(145);r({target:"Number",stat:!0,forced:Number.parseInt!=o},{parseInt:o})},function(e,t,n){"use strict";var r=n(0),o=n(26),i=n(263),a=n(101),u=n(1),c=1..toFixed,s=Math.floor,l=function f(e,t,n){return 0===t?n:t%2==1?f(e,t-1,n*e):f(e*e,t/2,n)};r({target:"Number",proto:!0,forced:c&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!u((function(){c.call({})}))},{toFixed:function(e){var t,n,r,u,c=i(this),f=o(e),d=[0,0,0,0,0,0],p="",h="0",v=function(e,t){for(var n=-1,r=t;++n<6;)r+=e*d[n],d[n]=r%1e7,r=s(r/1e7)},g=function(e){for(var t=6,n=0;--t>=0;)n+=d[t],d[t]=s(n/e),n=n%e*1e7},m=function(){for(var e=6,t="";--e>=0;)if(""!==t||0===e||0!==d[e]){var n=String(d[e]);t=""===t?n:t+a.call("0",7-n.length)+n}return t};if(f<0||f>20)throw RangeError("Incorrect fraction digits");if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return String(c);if(c<0&&(p="-",c=-c),c>1e-21)if(n=(t=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}(c*l(2,69,1))-69)<0?c*l(2,-t,1):c/l(2,t,1),n*=4503599627370496,(t=52-t)>0){for(v(0,n),r=f;r>=7;)v(1e7,0),r-=7;for(v(l(10,r,1),0),r=t-1;r>=23;)g(1<<23),r-=23;g(1<0?p+((u=h.length)<=f?"0."+a.call("0",f-u)+h:h.slice(0,u-f)+"."+h.slice(u-f)):p+h}})},function(e,t,n){"use strict";var r=n(28);e.exports=function(e){if("number"!=typeof e&&"Number"!=r(e))throw TypeError("Incorrect invocation");return+e}},function(e,t,n){"use strict";var r=n(0),o=n(265);r({target:"Object",stat:!0,forced:Object.assign!==o},{assign:o})},function(e,t,n){"use strict";var r=n(5),o=n(1),i=n(61),a=n(90),u=n(68),c=n(12),s=n(56),l=Object.assign,f=Object.defineProperty;e.exports=!l||o((function(){if(r&&1!==l({b:1},l(f({},"a",{enumerable:!0,get:function(){f(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},n=Symbol();return e[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(e){t[e]=e})),7!=l({},e)[n]||"abcdefghijklmnopqrst"!=i(l({},t)).join("")}))?function(e,t){for(var n=c(e),o=arguments.length,l=1,f=a.f,d=u.f;o>l;)for(var p,h=s(arguments[l++]),v=f?i(h).concat(f(h)):i(h),g=v.length,m=0;g>m;)p=v[m++],r&&!d.call(h,p)||(n[p]=h[p]);return n}:l},function(e,t,n){"use strict";n(0)({target:"Object",stat:!0,sham:!n(5)},{create:n(38)})},function(e,t,n){"use strict";var r=n(0),o=n(5),i=n(79),a=n(12),u=n(27),c=n(11);o&&r({target:"Object",proto:!0,forced:i},{__defineGetter__:function(e,t){c.f(a(this),e,{get:u(t),enumerable:!0,configurable:!0})}})},function(e,t,n){"use strict";var r=n(0),o=n(5);r({target:"Object",stat:!0,forced:!o,sham:!o},{defineProperties:n(129)})},function(e,t,n){"use strict";var r=n(0),o=n(5);r({target:"Object",stat:!0,forced:!o,sham:!o},{defineProperty:n(11).f})},function(e,t,n){"use strict";var r=n(0),o=n(5),i=n(79),a=n(12),u=n(27),c=n(11);o&&r({target:"Object",proto:!0,forced:i},{__defineSetter__:function(e,t){c.f(a(this),e,{set:u(t),enumerable:!0,configurable:!0})}})},function(e,t,n){"use strict";var r=n(0),o=n(146).entries;r({target:"Object",stat:!0},{entries:function(e){return o(e)}})},function(e,t,n){"use strict";var r=n(0),o=n(66),i=n(1),a=n(4),u=n(47).onFreeze,c=Object.freeze;r({target:"Object",stat:!0,forced:i((function(){c(1)})),sham:!o},{freeze:function(e){return c&&a(e)?c(u(e)):e}})},function(e,t,n){"use strict";var r=n(0),o=n(67),i=n(45);r({target:"Object",stat:!0},{fromEntries:function(e){var t={};return o(e,(function(e,n){i(t,e,n)}),undefined,!0),t}})},function(e,t,n){"use strict";var r=n(0),o=n(1),i=n(21),a=n(16).f,u=n(5),c=o((function(){a(1)}));r({target:"Object",stat:!0,forced:!u||c,sham:!u},{getOwnPropertyDescriptor:function(e,t){return a(i(e),t)}})},function(e,t,n){"use strict";var r=n(0),o=n(5),i=n(88),a=n(21),u=n(16),c=n(45);r({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(e){for(var t,n,r=a(e),o=u.f,s=i(r),l={},f=0;s.length>f;)(n=o(r,t=s[f++]))!==undefined&&c(l,t,n);return l}})},function(e,t,n){"use strict";var r=n(0),o=n(1),i=n(131).f;r({target:"Object",stat:!0,forced:o((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:i})},function(e,t,n){"use strict";var r=n(0),o=n(1),i=n(12),a=n(31),u=n(98);r({target:"Object",stat:!0,forced:o((function(){a(1)})),sham:!u},{getPrototypeOf:function(e){return a(i(e))}})},function(e,t,n){"use strict";n(0)({target:"Object",stat:!0},{is:n(147)})},function(e,t,n){"use strict";var r=n(0),o=n(1),i=n(4),a=Object.isExtensible;r({target:"Object",stat:!0,forced:o((function(){a(1)}))},{isExtensible:function(e){return!!i(e)&&(!a||a(e))}})},function(e,t,n){"use strict";var r=n(0),o=n(1),i=n(4),a=Object.isFrozen;r({target:"Object",stat:!0,forced:o((function(){a(1)}))},{isFrozen:function(e){return!i(e)||!!a&&a(e)}})},function(e,t,n){"use strict";var r=n(0),o=n(1),i=n(4),a=Object.isSealed;r({target:"Object",stat:!0,forced:o((function(){a(1)}))},{isSealed:function(e){return!i(e)||!!a&&a(e)}})},function(e,t,n){"use strict";var r=n(0),o=n(12),i=n(61);r({target:"Object",stat:!0,forced:n(1)((function(){i(1)}))},{keys:function(e){return i(o(e))}})},function(e,t,n){"use strict";var r=n(0),o=n(5),i=n(79),a=n(12),u=n(29),c=n(31),s=n(16).f;o&&r({target:"Object",proto:!0,forced:i},{__lookupGetter__:function(e){var t,n=a(this),r=u(e,!0);do{if(t=s(n,r))return t.get}while(n=c(n))}})},function(e,t,n){"use strict";var r=n(0),o=n(5),i=n(79),a=n(12),u=n(29),c=n(31),s=n(16).f;o&&r({target:"Object",proto:!0,forced:i},{__lookupSetter__:function(e){var t,n=a(this),r=u(e,!0);do{if(t=s(n,r))return t.set}while(n=c(n))}})},function(e,t,n){"use strict";var r=n(0),o=n(4),i=n(47).onFreeze,a=n(66),u=n(1),c=Object.preventExtensions;r({target:"Object",stat:!0,forced:u((function(){c(1)})),sham:!a},{preventExtensions:function(e){return c&&o(e)?c(i(e)):e}})},function(e,t,n){"use strict";var r=n(0),o=n(4),i=n(47).onFreeze,a=n(66),u=n(1),c=Object.seal;r({target:"Object",stat:!0,forced:u((function(){c(1)})),sham:!a},{seal:function(e){return c&&o(e)?c(i(e)):e}})},function(e,t,n){"use strict";n(0)({target:"Object",stat:!0},{setPrototypeOf:n(46)})},function(e,t,n){"use strict";var r=n(96),o=n(18),i=n(289);r||o(Object.prototype,"toString",i,{unsafe:!0})},function(e,t,n){"use strict";var r=n(96),o=n(71);e.exports=r?{}.toString:function(){return"[object "+o(this)+"]"}},function(e,t,n){"use strict";var r=n(0),o=n(146).values;r({target:"Object",stat:!0},{values:function(e){return o(e)}})},function(e,t,n){"use strict";var r=n(0),o=n(145);r({global:!0,forced:parseInt!=o},{parseInt:o})},function(e,t,n){"use strict";var r,o,i,a,u=n(0),c=n(33),s=n(3),l=n(32),f=n(148),d=n(18),p=n(65),h=n(39),v=n(51),g=n(4),m=n(27),y=n(52),b=n(28),_=n(86),w=n(67),x=n(72),E=n(41),C=n(103).set,S=n(150),N=n(151),k=n(293),O=n(152),A=n(294),I=n(30),T=n(60),M=n(10),V=n(92),L=M("species"),P="Promise",j=I.get,B=I.set,F=I.getterFor(P),R=f,D=s.TypeError,K=s.document,z=s.process,U=l("fetch"),Y=O.f,H=Y,W="process"==b(z),$=!!(K&&K.createEvent&&s.dispatchEvent),G=T(P,(function(){if(!(_(R)!==String(R))){if(66===V)return!0;if(!W&&"function"!=typeof PromiseRejectionEvent)return!0}if(c&&!R.prototype["finally"])return!0;if(V>=51&&/native code/.test(R))return!1;var e=R.resolve(1),t=function(e){e((function(){}),(function(){}))};return(e.constructor={})[L]=t,!(e.then((function(){}))instanceof t)})),q=G||!x((function(e){R.all(e)["catch"]((function(){}))})),X=function(e){var t;return!(!g(e)||"function"!=typeof(t=e.then))&&t},Q=function(e,t,n){if(!t.notified){t.notified=!0;var r=t.reactions;S((function(){for(var o=t.value,i=1==t.state,a=0;r.length>a;){var u,c,s,l=r[a++],f=i?l.ok:l.fail,d=l.resolve,p=l.reject,h=l.domain;try{f?(i||(2===t.rejection&&te(e,t),t.rejection=1),!0===f?u=o:(h&&h.enter(),u=f(o),h&&(h.exit(),s=!0)),u===l.promise?p(D("Promise-chain cycle")):(c=X(u))?c.call(u,d,p):d(u)):p(o)}catch(v){h&&!s&&h.exit(),p(v)}}t.reactions=[],t.notified=!1,n&&!t.rejection&&Z(e,t)}))}},J=function(e,t,n){var r,o;$?((r=K.createEvent("Event")).promise=t,r.reason=n,r.initEvent(e,!1,!0),s.dispatchEvent(r)):r={promise:t,reason:n},(o=s["on"+e])?o(r):"unhandledrejection"===e&&k("Unhandled promise rejection",n)},Z=function(e,t){C.call(s,(function(){var n,r=t.value;if(ee(t)&&(n=A((function(){W?z.emit("unhandledRejection",r,e):J("unhandledrejection",e,r)})),t.rejection=W||ee(t)?2:1,n.error))throw n.value}))},ee=function(e){return 1!==e.rejection&&!e.parent},te=function(e,t){C.call(s,(function(){W?z.emit("rejectionHandled",e):J("rejectionhandled",e,t.value)}))},ne=function(e,t,n,r){return function(o){e(t,n,o,r)}},re=function(e,t,n,r){t.done||(t.done=!0,r&&(t=r),t.value=n,t.state=2,Q(e,t,!0))},oe=function ie(e,t,n,r){if(!t.done){t.done=!0,r&&(t=r);try{if(e===n)throw D("Promise can't be resolved itself");var o=X(n);o?S((function(){var r={done:!1};try{o.call(n,ne(ie,e,r,t),ne(re,e,r,t))}catch(i){re(e,r,i,t)}})):(t.value=n,t.state=1,Q(e,t,!1))}catch(i){re(e,{done:!1},i,t)}}};G&&(R=function(e){y(this,R,P),m(e),r.call(this);var t=j(this);try{e(ne(oe,this,t),ne(re,this,t))}catch(n){re(this,t,n)}},(r=function(e){B(this,{type:P,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:undefined})}).prototype=p(R.prototype,{then:function(e,t){var n=F(this),r=Y(E(this,R));return r.ok="function"!=typeof e||e,r.fail="function"==typeof t&&t,r.domain=W?z.domain:undefined,n.parent=!0,n.reactions.push(r),0!=n.state&&Q(this,n,!1),r.promise},"catch":function(e){return this.then(undefined,e)}}),o=function(){var e=new r,t=j(e);this.promise=e,this.resolve=ne(oe,e,t),this.reject=ne(re,e,t)},O.f=Y=function(e){return e===R||e===i?new o(e):H(e)},c||"function"!=typeof f||(a=f.prototype.then,d(f.prototype,"then",(function(e,t){var n=this;return new R((function(e,t){a.call(n,e,t)})).then(e,t)}),{unsafe:!0}),"function"==typeof U&&u({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return N(R,U.apply(s,arguments))}}))),u({global:!0,wrap:!0,forced:G},{Promise:R}),h(R,P,!1,!0),v(P),i=l(P),u({target:P,stat:!0,forced:G},{reject:function(e){var t=Y(this);return t.reject.call(undefined,e),t.promise}}),u({target:P,stat:!0,forced:c||G},{resolve:function(e){return N(c&&this===i?R:this,e)}}),u({target:P,stat:!0,forced:q},{all:function(e){var t=this,n=Y(t),r=n.resolve,o=n.reject,i=A((function(){var n=m(t.resolve),i=[],a=0,u=1;w(e,(function(e){var c=a++,s=!1;i.push(undefined),u++,n.call(t,e).then((function(e){s||(s=!0,i[c]=e,--u||r(i))}),o)})),--u||r(i)}));return i.error&&o(i.value),n.promise},race:function(e){var t=this,n=Y(t),r=n.reject,o=A((function(){var o=m(t.resolve);w(e,(function(e){o.call(t,e).then(n.resolve,r)}))}));return o.error&&r(o.value),n.promise}})},function(e,t,n){"use strict";var r=n(3);e.exports=function(e,t){var n=r.console;n&&n.error&&(1===arguments.length?n.error(e):n.error(e,t))}},function(e,t,n){"use strict";e.exports=function(e){try{return{error:!1,value:e()}}catch(t){return{error:!0,value:t}}}},function(e,t,n){"use strict";var r=n(0),o=n(33),i=n(148),a=n(1),u=n(32),c=n(41),s=n(151),l=n(18);r({target:"Promise",proto:!0,real:!0,forced:!!i&&a((function(){i.prototype["finally"].call({then:function(){}},(function(){}))}))},{"finally":function(e){var t=c(this,u("Promise")),n="function"==typeof e;return this.then(n?function(n){return s(t,e()).then((function(){return n}))}:e,n?function(n){return s(t,e()).then((function(){throw n}))}:e)}}),o||"function"!=typeof i||i.prototype["finally"]||l(i.prototype,"finally",u("Promise").prototype["finally"])},function(e,t,n){"use strict";var r=n(0),o=n(32),i=n(27),a=n(6),u=n(1),c=o("Reflect","apply"),s=Function.apply;r({target:"Reflect",stat:!0,forced:!u((function(){c((function(){}))}))},{apply:function(e,t,n){return i(e),a(n),c?c(e,t,n):s.call(e,t,n)}})},function(e,t,n){"use strict";var r=n(0),o=n(32),i=n(27),a=n(6),u=n(4),c=n(38),s=n(141),l=n(1),f=o("Reflect","construct"),d=l((function(){function e(){}return!(f((function(){}),[],e)instanceof e)})),p=!l((function(){f((function(){}))})),h=d||p;r({target:"Reflect",stat:!0,forced:h,sham:h},{construct:function(e,t){i(e),a(t);var n=arguments.length<3?e:i(arguments[2]);if(p&&!d)return f(e,t,n);if(e==n){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var r=[null];return r.push.apply(r,t),new(s.apply(e,r))}var o=n.prototype,l=c(u(o)?o:Object.prototype),h=Function.apply.call(e,l,t);return u(h)?h:l}})},function(e,t,n){"use strict";var r=n(0),o=n(5),i=n(6),a=n(29),u=n(11);r({target:"Reflect",stat:!0,forced:n(1)((function(){Reflect.defineProperty(u.f({},1,{value:1}),1,{value:2})})),sham:!o},{defineProperty:function(e,t,n){i(e);var r=a(t,!0);i(n);try{return u.f(e,r,n),!0}catch(o){return!1}}})},function(e,t,n){"use strict";var r=n(0),o=n(6),i=n(16).f;r({target:"Reflect",stat:!0},{deleteProperty:function(e,t){var n=i(o(e),t);return!(n&&!n.configurable)&&delete e[t]}})},function(e,t,n){"use strict";var r=n(0),o=n(4),i=n(6),a=n(14),u=n(16),c=n(31);r({target:"Reflect",stat:!0},{get:function s(e,t){var n,r,l=arguments.length<3?e:arguments[2];return i(e)===l?e[t]:(n=u.f(e,t))?a(n,"value")?n.value:n.get===undefined?undefined:n.get.call(l):o(r=c(e))?s(r,t,l):void 0}})},function(e,t,n){"use strict";var r=n(0),o=n(5),i=n(6),a=n(16);r({target:"Reflect",stat:!0,sham:!o},{getOwnPropertyDescriptor:function(e,t){return a.f(i(e),t)}})},function(e,t,n){"use strict";var r=n(0),o=n(6),i=n(31);r({target:"Reflect",stat:!0,sham:!n(98)},{getPrototypeOf:function(e){return i(o(e))}})},function(e,t,n){"use strict";n(0)({target:"Reflect",stat:!0},{has:function(e,t){return t in e}})},function(e,t,n){"use strict";var r=n(0),o=n(6),i=Object.isExtensible;r({target:"Reflect",stat:!0},{isExtensible:function(e){return o(e),!i||i(e)}})},function(e,t,n){"use strict";n(0)({target:"Reflect",stat:!0},{ownKeys:n(88)})},function(e,t,n){"use strict";var r=n(0),o=n(32),i=n(6);r({target:"Reflect",stat:!0,sham:!n(66)},{preventExtensions:function(e){i(e);try{var t=o("Object","preventExtensions");return t&&t(e),!0}catch(n){return!1}}})},function(e,t,n){"use strict";var r=n(0),o=n(6),i=n(4),a=n(14),u=n(1),c=n(11),s=n(16),l=n(31),f=n(42);r({target:"Reflect",stat:!0,forced:u((function(){var e=c.f({},"a",{configurable:!0});return!1!==Reflect.set(l(e),"a",1,e)}))},{set:function d(e,t,n){var r,u,p=arguments.length<4?e:arguments[3],h=s.f(o(e),t);if(!h){if(i(u=l(e)))return d(u,t,n,p);h=f(0)}if(a(h,"value")){if(!1===h.writable||!i(p))return!1;if(r=s.f(p,t)){if(r.get||r.set||!1===r.writable)return!1;r.value=n,c.f(p,t,r)}else c.f(p,t,f(0,n));return!0}return h.set!==undefined&&(h.set.call(p,n),!0)}})},function(e,t,n){"use strict";var r=n(0),o=n(6),i=n(138),a=n(46);a&&r({target:"Reflect",stat:!0},{setPrototypeOf:function(e,t){o(e),i(t);try{return a(e,t),!0}catch(n){return!1}}})},function(e,t,n){"use strict";var r=n(5),o=n(3),i=n(60),a=n(76),u=n(11).f,c=n(43).f,s=n(104),l=n(80),f=n(105),d=n(18),p=n(1),h=n(30).set,v=n(51),g=n(10)("match"),m=o.RegExp,y=m.prototype,b=/a/g,_=/a/g,w=new m(b)!==b,x=f.UNSUPPORTED_Y;if(r&&i("RegExp",!w||x||p((function(){return _[g]=!1,m(b)!=b||m(_)==_||"/a/i"!=m(b,"i")})))){for(var E=function(e,t){var n,r=this instanceof E,o=s(e),i=t===undefined;if(!r&&o&&e.constructor===E&&i)return e;w?o&&!i&&(e=e.source):e instanceof E&&(i&&(t=l.call(e)),e=e.source),x&&(n=!!t&&t.indexOf("y")>-1)&&(t=t.replace(/y/g,""));var u=a(w?new m(e,t):m(e,t),r?this:y,E);return x&&n&&h(u,{sticky:n}),u},C=function(e){e in E||u(E,e,{configurable:!0,get:function(){return m[e]},set:function(t){m[e]=t}})},S=c(m),N=0;S.length>N;)C(S[N++]);y.constructor=E,E.prototype=y,d(o,"RegExp",E)}v("RegExp")},function(e,t,n){"use strict";var r=n(5),o=n(11),i=n(80),a=n(105).UNSUPPORTED_Y;r&&("g"!=/./g.flags||a)&&o.f(RegExp.prototype,"flags",{configurable:!0,get:i})},function(e,t,n){"use strict";var r=n(18),o=n(6),i=n(1),a=n(80),u=RegExp.prototype,c=u.toString,s=i((function(){return"/a/b"!=c.call({source:"a",flags:"b"})})),l="toString"!=c.name;(s||l)&&r(RegExp.prototype,"toString",(function(){var e=o(this),t=String(e.source),n=e.flags;return"/"+t+"/"+String(n===undefined&&e instanceof RegExp&&!("flags"in u)?a.call(e):n)}),{unsafe:!0})},function(e,t,n){"use strict";var r=n(75),o=n(142);e.exports=r("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),o)},function(e,t,n){"use strict";var r=n(0),o=n(106).codeAt;r({target:"String",proto:!0},{codePointAt:function(e){return o(this,e)}})},function(e,t,n){"use strict";var r,o=n(0),i=n(16).f,a=n(8),u=n(107),c=n(17),s=n(108),l=n(33),f="".endsWith,d=Math.min,p=s("endsWith");o({target:"String",proto:!0,forced:!!(l||p||(r=i(String.prototype,"endsWith"),!r||r.writable))&&!p},{endsWith:function(e){var t=String(c(this));u(e);var n=arguments.length>1?arguments[1]:undefined,r=a(t.length),o=n===undefined?r:d(a(n),r),i=String(e);return f?f.call(t,i,o):t.slice(o-i.length,o)===i}})},function(e,t,n){"use strict";var r=n(0),o=n(37),i=String.fromCharCode,a=String.fromCodePoint;r({target:"String",stat:!0,forced:!!a&&1!=a.length},{fromCodePoint:function(e){for(var t,n=[],r=arguments.length,a=0;r>a;){if(t=+arguments[a++],o(t,1114111)!==t)throw RangeError(t+" is not a valid code point");n.push(t<65536?i(t):i(55296+((t-=65536)>>10),t%1024+56320))}return n.join("")}})},function(e,t,n){"use strict";var r=n(0),o=n(107),i=n(17);r({target:"String",proto:!0,forced:!n(108)("includes")},{includes:function(e){return!!~String(i(this)).indexOf(o(e),arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(106).charAt,o=n(30),i=n(97),a=o.set,u=o.getterFor("String Iterator");i(String,"String",(function(e){a(this,{type:"String Iterator",string:String(e),index:0})}),(function(){var e,t=u(this),n=t.string,o=t.index;return o>=n.length?{value:undefined,done:!0}:(e=r(n,o),t.index+=e.length,{value:e,done:!1})}))},function(e,t,n){"use strict";var r=n(82),o=n(6),i=n(8),a=n(17),u=n(109),c=n(83);r("match",1,(function(e,t,n){return[function(t){var n=a(this),r=t==undefined?undefined:t[e];return r!==undefined?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var a=o(e),s=String(this);if(!a.global)return c(a,s);var l=a.unicode;a.lastIndex=0;for(var f,d=[],p=0;null!==(f=c(a,s));){var h=String(f[0]);d[p]=h,""===h&&(a.lastIndex=u(s,i(a.lastIndex),l)),p++}return 0===p?null:d}]}))},function(e,t,n){"use strict";var r=n(0),o=n(100).end;r({target:"String",proto:!0,forced:n(154)},{padEnd:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(0),o=n(100).start;r({target:"String",proto:!0,forced:n(154)},{padStart:function(e){return o(this,e,arguments.length>1?arguments[1]:undefined)}})},function(e,t,n){"use strict";var r=n(0),o=n(21),i=n(8);r({target:"String",stat:!0},{raw:function(e){for(var t=o(e.raw),n=i(t.length),r=arguments.length,a=[],u=0;n>u;)a.push(String(t[u++])),u]*>)/g,v=/\$([$&'`]|\d\d?)/g;r("replace",2,(function(e,t,n,r){var g=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,m=r.REPLACE_KEEPS_$0,y=g?"$":"$0";return[function(n,r){var o=c(this),i=n==undefined?undefined:n[e];return i!==undefined?i.call(n,o,r):t.call(String(o),n,r)},function(e,r){if(!g&&m||"string"==typeof r&&-1===r.indexOf(y)){var i=n(t,e,this,r);if(i.done)return i.value}var c=o(e),p=String(this),h="function"==typeof r;h||(r=String(r));var v=c.global;if(v){var _=c.unicode;c.lastIndex=0}for(var w=[];;){var x=l(c,p);if(null===x)break;if(w.push(x),!v)break;""===String(x[0])&&(c.lastIndex=s(p,a(c.lastIndex),_))}for(var E,C="",S=0,N=0;N=S&&(C+=p.slice(S,O)+V,S=O+k.length)}return C+p.slice(S)}];function b(e,n,r,o,a,u){var c=r+e.length,s=o.length,l=v;return a!==undefined&&(a=i(a),l=h),t.call(u,l,(function(t,i){var u;switch(i.charAt(0)){case"$":return"$";case"&":return e;case"`":return n.slice(0,r);case"'":return n.slice(c);case"<":u=a[i.slice(1,-1)];break;default:var l=+i;if(0===l)return t;if(l>s){var f=p(l/10);return 0===f?t:f<=s?o[f-1]===undefined?i.charAt(1):o[f-1]+i.charAt(1):t}u=o[l-1]}return u===undefined?"":u}))}}))},function(e,t,n){"use strict";var r=n(82),o=n(6),i=n(17),a=n(147),u=n(83);r("search",1,(function(e,t,n){return[function(t){var n=i(this),r=t==undefined?undefined:t[e];return r!==undefined?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var i=o(e),c=String(this),s=i.lastIndex;a(s,0)||(i.lastIndex=0);var l=u(i,c);return a(i.lastIndex,s)||(i.lastIndex=s),null===l?-1:l.index}]}))},function(e,t,n){"use strict";var r=n(82),o=n(104),i=n(6),a=n(17),u=n(41),c=n(109),s=n(8),l=n(83),f=n(81),d=n(1),p=[].push,h=Math.min,v=!d((function(){return!RegExp(4294967295,"y")}));r("split",2,(function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(a(this)),i=n===undefined?4294967295:n>>>0;if(0===i)return[];if(e===undefined)return[r];if(!o(e))return t.call(r,e,i);for(var u,c,s,l=[],d=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),h=0,v=new RegExp(e.source,d+"g");(u=f.call(v,r))&&!((c=v.lastIndex)>h&&(l.push(r.slice(h,u.index)),u.length>1&&u.index=i));)v.lastIndex===u.index&&v.lastIndex++;return h===r.length?!s&&v.test("")||l.push(""):l.push(r.slice(h)),l.length>i?l.slice(0,i):l}:"0".split(undefined,0).length?function(e,n){return e===undefined&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var o=a(this),i=t==undefined?undefined:t[e];return i!==undefined?i.call(t,o,n):r.call(String(o),t,n)},function(e,o){var a=n(r,e,this,o,r!==t);if(a.done)return a.value;var f=i(e),d=String(this),p=u(f,RegExp),g=f.unicode,m=(f.ignoreCase?"i":"")+(f.multiline?"m":"")+(f.unicode?"u":"")+(v?"y":"g"),y=new p(v?f:"^(?:"+f.source+")",m),b=o===undefined?4294967295:o>>>0;if(0===b)return[];if(0===d.length)return null===l(y,d)?[d]:[];for(var _=0,w=0,x=[];w1?arguments[1]:undefined,t.length)),r=String(e);return f?f.call(t,r,n):t.slice(n,n+r.length)===r}})},function(e,t,n){"use strict";var r=n(0),o=n(53).trim;r({target:"String",proto:!0,forced:n(110)("trim")},{trim:function(){return o(this)}})},function(e,t,n){"use strict";var r=n(0),o=n(53).end,i=n(110)("trimEnd"),a=i?function(){return o(this)}:"".trimEnd;r({target:"String",proto:!0,forced:i},{trimEnd:a,trimRight:a})},function(e,t,n){"use strict";var r=n(0),o=n(53).start,i=n(110)("trimStart"),a=i?function(){return o(this)}:"".trimStart;r({target:"String",proto:!0,forced:i},{trimStart:a,trimLeft:a})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("anchor")},{anchor:function(e){return o(this,"a","name",e)}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("big")},{big:function(){return o(this,"big","","")}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("blink")},{blink:function(){return o(this,"blink","","")}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("bold")},{bold:function(){return o(this,"b","","")}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("fixed")},{fixed:function(){return o(this,"tt","","")}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("fontcolor")},{fontcolor:function(e){return o(this,"font","color",e)}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("fontsize")},{fontsize:function(e){return o(this,"font","size",e)}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("italics")},{italics:function(){return o(this,"i","","")}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("link")},{link:function(e){return o(this,"a","href",e)}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("small")},{small:function(){return o(this,"small","","")}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("strike")},{strike:function(){return o(this,"strike","","")}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("sub")},{sub:function(){return o(this,"sub","","")}})},function(e,t,n){"use strict";var r=n(0),o=n(23);r({target:"String",proto:!0,forced:n(24)("sup")},{sup:function(){return o(this,"sup","","")}})},function(e,t,n){"use strict";n(35)("Float32",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";var r=n(26);e.exports=function(e){var t=r(e);if(t<0)throw RangeError("The argument can't be less than 0");return t}},function(e,t,n){"use strict";n(35)("Float64",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(35)("Int8",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(35)("Int16",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(35)("Int32",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(35)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(35)("Uint8",(function(e){return function(t,n,r){return e(this,t,n,r)}}),!0)},function(e,t,n){"use strict";n(35)("Uint16",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";n(35)("Uint32",(function(e){return function(t,n,r){return e(this,t,n,r)}}))},function(e,t,n){"use strict";var r=n(7),o=n(133),i=r.aTypedArray;(0,r.exportTypedArrayMethod)("copyWithin",(function(e,t){return o.call(i(this),e,t,arguments.length>2?arguments[2]:undefined)}))},function(e,t,n){"use strict";var r=n(7),o=n(15).every,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("every",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(7),o=n(93),i=r.aTypedArray;(0,r.exportTypedArrayMethod)("fill",(function(e){return o.apply(i(this),arguments)}))},function(e,t,n){"use strict";var r=n(7),o=n(15).filter,i=n(41),a=r.aTypedArray,u=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("filter",(function(e){for(var t=o(a(this),e,arguments.length>1?arguments[1]:undefined),n=i(this,this.constructor),r=0,c=t.length,s=new(u(n))(c);c>r;)s[r]=t[r++];return s}))},function(e,t,n){"use strict";var r=n(7),o=n(15).find,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("find",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(7),o=n(15).findIndex,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("findIndex",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(7),o=n(15).forEach,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("forEach",(function(e){o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(111);(0,n(7).exportTypedArrayStaticMethod)("from",n(156),r)},function(e,t,n){"use strict";var r=n(7),o=n(59).includes,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("includes",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(7),o=n(59).indexOf,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("indexOf",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(3),o=n(7),i=n(136),a=n(10)("iterator"),u=r.Uint8Array,c=i.values,s=i.keys,l=i.entries,f=o.aTypedArray,d=o.exportTypedArrayMethod,p=u&&u.prototype[a],h=!!p&&("values"==p.name||p.name==undefined),v=function(){return c.call(f(this))};d("entries",(function(){return l.call(f(this))})),d("keys",(function(){return s.call(f(this))})),d("values",v,!h),d(a,v,!h)},function(e,t,n){"use strict";var r=n(7),o=r.aTypedArray,i=r.exportTypedArrayMethod,a=[].join;i("join",(function(e){return a.apply(o(this),arguments)}))},function(e,t,n){"use strict";var r=n(7),o=n(139),i=r.aTypedArray;(0,r.exportTypedArrayMethod)("lastIndexOf",(function(e){return o.apply(i(this),arguments)}))},function(e,t,n){"use strict";var r=n(7),o=n(15).map,i=n(41),a=r.aTypedArray,u=r.aTypedArrayConstructor;(0,r.exportTypedArrayMethod)("map",(function(e){return o(a(this),e,arguments.length>1?arguments[1]:undefined,(function(e,t){return new(u(i(e,e.constructor)))(t)}))}))},function(e,t,n){"use strict";var r=n(7),o=n(111),i=r.aTypedArrayConstructor;(0,r.exportTypedArrayStaticMethod)("of",(function(){for(var e=0,t=arguments.length,n=new(i(this))(t);t>e;)n[e]=arguments[e++];return n}),o)},function(e,t,n){"use strict";var r=n(7),o=n(73).left,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduce",(function(e){return o(i(this),e,arguments.length,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(7),o=n(73).right,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("reduceRight",(function(e){return o(i(this),e,arguments.length,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(7),o=r.aTypedArray,i=r.exportTypedArrayMethod,a=Math.floor;i("reverse",(function(){for(var e,t=o(this).length,n=a(t/2),r=0;r1?arguments[1]:undefined,1),n=this.length,r=a(e),u=o(r.length),s=0;if(u+t>n)throw RangeError("Wrong length");for(;si;)l[i]=n[i++];return l}),i((function(){new Int8Array(1).slice()})))},function(e,t,n){"use strict";var r=n(7),o=n(15).some,i=r.aTypedArray;(0,r.exportTypedArrayMethod)("some",(function(e){return o(i(this),e,arguments.length>1?arguments[1]:undefined)}))},function(e,t,n){"use strict";var r=n(7),o=r.aTypedArray,i=r.exportTypedArrayMethod,a=[].sort;i("sort",(function(e){return a.call(o(this),e)}))},function(e,t,n){"use strict";var r=n(7),o=n(8),i=n(37),a=n(41),u=r.aTypedArray;(0,r.exportTypedArrayMethod)("subarray",(function(e,t){var n=u(this),r=n.length,c=i(e,r);return new(a(n,n.constructor))(n.buffer,n.byteOffset+c*n.BYTES_PER_ELEMENT,o((t===undefined?r:i(t,r))-c))}))},function(e,t,n){"use strict";var r=n(3),o=n(7),i=n(1),a=r.Int8Array,u=o.aTypedArray,c=o.exportTypedArrayMethod,s=[].toLocaleString,l=[].slice,f=!!a&&i((function(){s.call(new a(1))}));c("toLocaleString",(function(){return s.apply(f?l.call(u(this)):u(this),arguments)}),i((function(){return[1,2].toLocaleString()!=new a([1,2]).toLocaleString()}))||!i((function(){a.prototype.toLocaleString.call([1,2])})))},function(e,t,n){"use strict";var r=n(7).exportTypedArrayMethod,o=n(1),i=n(3).Uint8Array,a=i&&i.prototype||{},u=[].toString,c=[].join;o((function(){u.call({})}))&&(u=function(){return c.call(this)});var s=a.toString!=u;r("toString",u,s)},function(e,t,n){"use strict";var r,o=n(3),i=n(65),a=n(47),u=n(75),c=n(157),s=n(4),l=n(30).enforce,f=n(124),d=!o.ActiveXObject&&"ActiveXObject"in o,p=Object.isExtensible,h=function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}},v=e.exports=u("WeakMap",h,c);if(f&&d){r=c.getConstructor(h,"WeakMap",!0),a.REQUIRED=!0;var g=v.prototype,m=g["delete"],y=g.has,b=g.get,_=g.set;i(g,{"delete":function(e){if(s(e)&&!p(e)){var t=l(this);return t.frozen||(t.frozen=new r),m.call(this,e)||t.frozen["delete"](e)}return m.call(this,e)},has:function(e){if(s(e)&&!p(e)){var t=l(this);return t.frozen||(t.frozen=new r),y.call(this,e)||t.frozen.has(e)}return y.call(this,e)},get:function(e){if(s(e)&&!p(e)){var t=l(this);return t.frozen||(t.frozen=new r),y.call(this,e)?b.call(this,e):t.frozen.get(e)}return b.call(this,e)},set:function(e,t){if(s(e)&&!p(e)){var n=l(this);n.frozen||(n.frozen=new r),y.call(this,e)?_.call(this,e,t):n.frozen.set(e,t)}else _.call(this,e,t);return this}})}},function(e,t,n){"use strict";n(75)("WeakSet",(function(e){return function(){return e(this,arguments.length?arguments[0]:undefined)}}),n(157))},function(e,t,n){"use strict";var r=n(0),o=n(3),i=n(103);r({global:!0,bind:!0,enumerable:!0,forced:!o.setImmediate||!o.clearImmediate},{setImmediate:i.set,clearImmediate:i.clear})},function(e,t,n){"use strict";var r=n(0),o=n(3),i=n(150),a=n(28),u=o.process,c="process"==a(u);r({global:!0,enumerable:!0,noTargetGet:!0},{queueMicrotask:function(e){var t=c&&u.domain;i(t?t.bind(e):e)}})},function(e,t,n){"use strict";var r=n(0),o=n(3),i=n(70),a=[].slice,u=function(e){return function(t,n){var r=arguments.length>2,o=r?a.call(arguments,2):undefined;return e(r?function(){("function"==typeof t?t:Function(t)).apply(this,o)}:t,n)}};r({global:!0,bind:!0,forced:/MSIE .\./.test(i)},{setTimeout:u(o.setTimeout),setInterval:u(o.setInterval)})},function(e,t,n){"use strict";t.__esModule=!0,t._CI=Oe,t._HI=B,t._M=Ae,t._MCCC=Ve,t._ME=Te,t._MFCC=Le,t._MP=Ne,t._MR=ye,t.__render=Re,t.createComponentVNode=function(e,t,n,r,o){var a=new A(1,null,null,e=function(e,t){if(12&e)return e;if(t.prototype&&t.prototype.render)return 4;if(t.render)return 32776;return 8}(e,t),r,function(e,t,n){var r=(32768&e?t.render:t).defaultProps;if(i(r))return n;if(i(n))return l(r,null);return k(n,r)}(e,t,n),function(e,t,n){if(4&e)return n;var r=(32768&e?t.render:t).defaultHooks;if(i(r))return n;if(i(n))return r;return k(n,r)}(e,t,o),t);C.createVNode&&C.createVNode(a);return a},t.createFragment=M,t.createPortal=function(e,t){var n=B(e);return I(1024,1024,null,n,0,null,n.key,t)},t.createRef=function(){return{current:null}},t.createRenderer=function(e){return function(t,n,r,o){e||(e=t),De(n,e,r,o)}},t.createTextVNode=T,t.createVNode=I,t.directClone=V,t.findDOMfromVNode=b,t.forwardRef=function(e){return{render:e}},t.getFlagsForElementVnode=function(e){switch(e){case"svg":return 32;case"input":return 64;case"select":return 256;case"textarea":return 128;case"$F":return 8192;default:return 1}},t.linkEvent=function(e,t){if(u(t))return{data:e,event:t};return null},t.normalizeProps=function(e){var t=e.props;if(t){var n=e.flags;481&n&&(void 0!==t.children&&i(e.children)&&j(e,t.children),void 0!==t.className&&(e.className=t.className||null,t.className=undefined)),void 0!==t.key&&(e.key=t.key,t.key=undefined),void 0!==t.ref&&(e.ref=8&n?l(e.ref,t.ref):t.ref,t.ref=undefined)}return e},t.render=De,t.rerender=We,t.version=t.options=t.Fragment=t.EMPTY_OBJ=t.Component=void 0;var r=Array.isArray;function o(e){var t=typeof e;return"string"===t||"number"===t}function i(e){return null==e}function a(e){return null===e||!1===e||!0===e||void 0===e}function u(e){return"function"==typeof e}function c(e){return"string"==typeof e}function s(e){return null===e}function l(e,t){var n={};if(e)for(var r in e)n[r]=e[r];if(t)for(var o in t)n[o]=t[o];return n}function f(e){return!s(e)&&"object"==typeof e}var d={};t.EMPTY_OBJ=d;function p(e){return e.substr(2).toLowerCase()}function h(e,t){e.appendChild(t)}function v(e,t,n){s(n)?h(e,t):e.insertBefore(t,n)}function g(e,t){e.removeChild(t)}function m(e){for(var t=0;t0,h=s(d),v=c(d)&&"$"===d[0];p||h||v?(n=n||t.slice(0,l),(p||v)&&(f=V(f)),(h||v)&&(f.key="$"+l),n.push(f)):n&&n.push(f),f.flags|=65536}}i=0===(n=n||t).length?1:8}else(n=t).flags|=65536,81920&t.flags&&(n=V(t)),i=2;return e.children=n,e.childFlags=i,e}function B(e){return a(e)||o(e)?T(e,null):r(e)?M(e,0,null):16384&e.flags?V(e):e}var F="http://www.w3.org/1999/xlink",R="http://www.w3.org/XML/1998/namespace",D={"xlink:actuate":F,"xlink:arcrole":F,"xlink:href":F,"xlink:role":F,"xlink:show":F,"xlink:title":F,"xlink:type":F,"xml:base":R,"xml:lang":R,"xml:space":R};function K(e){return{onClick:e,onDblClick:e,onFocusIn:e,onFocusOut:e,onKeyDown:e,onKeyPress:e,onKeyUp:e,onMouseDown:e,onMouseMove:e,onMouseUp:e,onTouchEnd:e,onTouchMove:e,onTouchStart:e}}var z=K(0),U=K(null),Y=K(!0);function H(e,t){var n=t.$EV;return n||(n=t.$EV=K(null)),n[e]||1==++z[e]&&(U[e]=function(e){var t="onClick"===e||"onDblClick"===e?function(e){return function(t){0===t.button?$(t,!0,e,Q(t)):t.stopPropagation()}}(e):function(e){return function(t){$(t,!1,e,Q(t))}}(e);return document.addEventListener(p(e),t),t}(e)),n}function W(e,t){var n=t.$EV;n&&n[e]&&(0==--z[e]&&(document.removeEventListener(p(e),U[e]),U[e]=null),n[e]=null)}function $(e,t,n,r){var o=function(e){return u(e.composedPath)?e.composedPath()[0]:e.target}(e);do{if(t&&o.disabled)return;var i=o.$EV;if(i){var a=i[n];if(a&&(r.dom=o,a.event?a.event(a.data,e):a(e),e.cancelBubble))return}o=o.parentNode}while(!s(o))}function G(){this.cancelBubble=!0,this.immediatePropagationStopped||this.stopImmediatePropagation()}function q(){return this.defaultPrevented}function X(){return this.cancelBubble}function Q(e){var t={dom:document};return e.isDefaultPrevented=q,e.isPropagationStopped=X,e.stopPropagation=G,Object.defineProperty(e,"currentTarget",{configurable:!0,get:function(){return t.dom}}),t}function J(e,t,n){if(e[t]){var r=e[t];r.event?r.event(r.data,n):r(n)}else{var o=t.toLowerCase();e[o]&&e[o](n)}}function Z(e,t){var n=function(n){var r=this.$V;if(r){var o=r.props||d,i=r.dom;if(c(e))J(o,e,n);else for(var a=0;a-1&&t.options[a]&&(u=t.options[a].value),n&&i(u)&&(u=e.defaultValue),ae(r,u)}}var se,le,fe=Z("onInput",pe),de=Z("onChange");function pe(e,t,n){var r=e.value,o=t.value;if(i(r)){if(n){var a=e.defaultValue;i(a)||a===o||(t.defaultValue=a,t.value=a)}}else o!==r&&(t.defaultValue=r,t.value=r)}function he(e,t,n,r,o,i){64&e?ie(r,n):256&e?ce(r,n,o,t):128&e&&pe(r,n,o),i&&(n.$V=t)}function ve(e,t,n){64&e?function(e,t){te(t.type)?(ee(e,"change",re),ee(e,"click",oe)):ee(e,"input",ne)}(t,n):256&e?function(e){ee(e,"change",ue)}(t):128&e&&function(e,t){ee(e,"input",fe),t.onChange&&ee(e,"change",de)}(t,n)}function ge(e){return e.type&&te(e.type)?!i(e.checked):!i(e.value)}function me(e){e&&!O(e,null)&&e.current&&(e.current=null)}function ye(e,t,n){e&&(u(e)||void 0!==e.current)&&n.push((function(){O(e,t)||void 0===e.current||(e.current=t)}))}function be(e,t){_e(e),_(e,t)}function _e(e){var t,n=e.flags,r=e.children;if(481&n){t=e.ref;var o=e.props;me(t);var a=e.childFlags;if(!s(o))for(var c=Object.keys(o),l=0,f=c.length;l0;for(var u in a&&(i=ge(n))&&ve(t,r,n),n)Se(u,null,n[u],r,o,i,null);a&&he(t,e,r,n,!0,i)}function ke(e,t,n){var r=B(e.render(t,e.state,n)),o=n;return u(e.getChildContext)&&(o=l(n,e.getChildContext())),e.$CX=o,r}function Oe(e,t,n,r,o,i){var a=new t(n,r),c=a.$N=Boolean(t.getDerivedStateFromProps||a.getSnapshotBeforeUpdate);if(a.$SVG=o,a.$L=i,e.children=a,a.$BS=!1,a.context=r,a.props===d&&(a.props=n),c)a.state=x(a,n,a.state);else if(u(a.componentWillMount)){a.$BR=!0,a.componentWillMount();var l=a.$PS;if(!s(l)){var f=a.state;if(s(f))a.state=l;else for(var p in l)f[p]=l[p];a.$PS=null}a.$BR=!1}return a.$LI=ke(a,n,r),a}function Ae(e,t,n,r,o,i){var a=e.flags|=16384;481&a?Te(e,t,n,r,o,i):4&a?function(e,t,n,r,o,i){var a=Oe(e,e.type,e.props||d,n,r,i);Ae(a.$LI,t,a.$CX,r,o,i),Ve(e.ref,a,i)}(e,t,n,r,o,i):8&a?(!function(e,t,n,r,o,i){Ae(e.children=B(function(e,t){return 32768&e.flags?e.type.render(e.props||d,e.ref,t):e.type(e.props||d,t)}(e,n)),t,n,r,o,i)}(e,t,n,r,o,i),Le(e,i)):512&a||16&a?Ie(e,t,o):8192&a?function(e,t,n,r,o,i){var a=e.children,u=e.childFlags;12&u&&0===a.length&&(u=e.childFlags=2,a=e.children=L());2===u?Ae(a,n,o,r,o,i):Me(a,n,t,r,o,i)}(e,n,t,r,o,i):1024&a&&function(e,t,n,r,o){Ae(e.children,e.ref,t,!1,null,o);var i=L();Ie(i,n,r),e.dom=i.dom}(e,n,t,o,i)}function Ie(e,t,n){var r=e.dom=document.createTextNode(e.children);s(t)||v(t,r,n)}function Te(e,t,n,r,o,a){var u=e.flags,c=e.props,l=e.className,f=e.children,d=e.childFlags,p=e.dom=function(e,t){return t?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e)}(e.type,r=r||(32&u)>0);if(i(l)||""===l||(r?p.setAttribute("class",l):p.className=l),16===d)S(p,f);else if(1!==d){var h=r&&"foreignObject"!==e.type;2===d?(16384&f.flags&&(e.children=f=V(f)),Ae(f,p,n,h,null,a)):8!==d&&4!==d||Me(f,p,n,h,null,a)}s(t)||v(t,p,o),s(c)||Ne(e,u,c,p,r),ye(e.ref,p,a)}function Me(e,t,n,r,o,i){for(var a=0;a0,s!==l){var h=s||d;if((u=l||d)!==d)for(var v in(f=(448&o)>0)&&(p=ge(u)),u){var g=h[v],m=u[v];g!==m&&Se(v,g,m,c,r,p,e)}if(h!==d)for(var y in h)i(u[y])&&!i(h[y])&&Se(y,h[y],null,c,r,p,e)}var b=t.children,_=t.className;e.className!==_&&(i(_)?c.removeAttribute("class"):r?c.setAttribute("class",_):c.className=_);4096&o?function(e,t){e.textContent!==t&&(e.textContent=t)}(c,b):je(e.childFlags,t.childFlags,e.children,b,c,n,r&&"foreignObject"!==t.type,null,e,a);f&&he(o,t,c,u,!1,p);var w=t.ref,x=e.ref;x!==w&&(me(x),ye(w,c,a))}(e,t,r,o,p,f):4&p?function(e,t,n,r,o,i,a){var c=t.children=e.children;if(s(c))return;c.$L=a;var f=t.props||d,p=t.ref,h=e.ref,v=c.state;if(!c.$N){if(u(c.componentWillReceiveProps)){if(c.$BR=!0,c.componentWillReceiveProps(f,r),c.$UN)return;c.$BR=!1}s(c.$PS)||(v=l(v,c.$PS),c.$PS=null)}Be(c,v,f,n,r,o,!1,i,a),h!==p&&(me(h),ye(p,c,a))}(e,t,n,r,o,c,f):8&p?function(e,t,n,r,o,a,c){var s=!0,l=t.props||d,f=t.ref,p=e.props,h=!i(f),v=e.children;h&&u(f.onComponentShouldUpdate)&&(s=f.onComponentShouldUpdate(p,l));if(!1!==s){h&&u(f.onComponentWillUpdate)&&f.onComponentWillUpdate(p,l);var g=t.type,m=B(32768&t.flags?g.render(l,f,r):g(l,r));Pe(v,m,n,r,o,a,c),t.children=m,h&&u(f.onComponentDidUpdate)&&f.onComponentDidUpdate(p,l)}else t.children=v}(e,t,n,r,o,c,f):16&p?function(e,t){var n=t.children,r=t.dom=e.dom;n!==e.children&&(r.nodeValue=n)}(e,t):512&p?t.dom=e.dom:8192&p?function(e,t,n,r,o,i){var a=e.children,u=t.children,c=e.childFlags,s=t.childFlags,l=null;12&s&&0===u.length&&(s=t.childFlags=2,u=t.children=L());var f=0!=(2&s);if(12&c){var d=a.length;(8&c&&8&s||f||!f&&u.length>d)&&(l=b(a[d-1],!1).nextSibling)}je(c,s,a,u,n,r,o,l,e,i)}(e,t,n,r,o,f):function(e,t,n,r){var o=e.ref,i=t.ref,u=t.children;if(je(e.childFlags,t.childFlags,e.children,u,o,n,!1,null,e,r),t.dom=e.dom,o!==i&&!a(u)){var c=u.dom;g(o,c),h(i,c)}}(e,t,r,f)}function je(e,t,n,r,o,i,a,u,c,s){switch(e){case 2:switch(t){case 2:Pe(n,r,o,i,a,u,s);break;case 1:be(n,o);break;case 16:_e(n),S(o,r);break;default:!function(e,t,n,r,o,i){_e(e),Me(t,n,r,o,b(e,!0),i),_(e,n)}(n,r,o,i,a,s)}break;case 1:switch(t){case 2:Ae(r,o,i,a,u,s);break;case 1:break;case 16:S(o,r);break;default:Me(r,o,i,a,u,s)}break;case 16:switch(t){case 16:!function(e,t,n){e!==t&&(""!==e?n.firstChild.nodeValue=t:S(n,t))}(n,r,o);break;case 2:xe(o),Ae(r,o,i,a,u,s);break;case 1:xe(o);break;default:xe(o),Me(r,o,i,a,u,s)}break;default:switch(t){case 16:we(n),S(o,r);break;case 2:Ee(o,c,n),Ae(r,o,i,a,u,s);break;case 1:Ee(o,c,n);break;default:var l=0|n.length,f=0|r.length;0===l?f>0&&Me(r,o,i,a,u,s):0===f?Ee(o,c,n):8===t&&8===e?function(e,t,n,r,o,i,a,u,c,s){var l,f,d=i-1,p=a-1,h=0,v=e[h],g=t[h];e:{for(;v.key===g.key;){if(16384&g.flags&&(t[h]=g=V(g)),Pe(v,g,n,r,o,u,s),e[h]=g,++h>d||h>p)break e;v=e[h],g=t[h]}for(v=e[d],g=t[p];v.key===g.key;){if(16384&g.flags&&(t[p]=g=V(g)),Pe(v,g,n,r,o,u,s),e[d]=g,d--,p--,h>d||h>p)break e;v=e[d],g=t[p]}}if(h>d){if(h<=p)for(f=(l=p+1)p)for(;h<=d;)be(e[h++],n);else!function(e,t,n,r,o,i,a,u,c,s,l,f,d){var p,h,v,g=0,m=u,y=u,_=i-u+1,x=a-u+1,E=new Int32Array(x+1),C=_===r,S=!1,N=0,k=0;if(o<4||(_|x)<32)for(g=m;g<=i;++g)if(p=e[g],ku?S=!0:N=u,16384&h.flags&&(t[u]=h=V(h)),Pe(p,h,c,n,s,l,d),++k;break}!C&&u>a&&be(p,c)}else C||be(p,c);else{var O={};for(g=y;g<=a;++g)O[t[g].key]=g;for(g=m;g<=i;++g)if(p=e[g],km;)be(e[m++],c);E[u-y]=g+1,N>u?S=!0:N=u,16384&(h=t[u]).flags&&(t[u]=h=V(h)),Pe(p,h,c,n,s,l,d),++k}else C||be(p,c);else C||be(p,c)}if(C)Ee(c,f,e),Me(t,c,n,s,l,d);else if(S){var A=function(e){var t=0,n=0,r=0,o=0,i=0,a=0,u=0,c=e.length;c>Fe&&(Fe=c,se=new Int32Array(c),le=new Int32Array(c));for(;n>1]]0&&(le[n]=se[i-1]),se[i]=n)}i=o+1;var s=new Int32Array(i);a=se[i-1];for(;i-- >0;)s[i]=a,a=le[a],se[i]=0;return s}(E);for(u=A.length-1,g=x-1;g>=0;g--)0===E[g]?(16384&(h=t[N=g+y]).flags&&(t[N]=h=V(h)),Ae(h,c,n,s,(v=N+1)=0;g--)0===E[g]&&(16384&(h=t[N=g+y]).flags&&(t[N]=h=V(h)),Ae(h,c,n,s,(v=N+1)a?a:i,d=0;da)for(d=f;d=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var u=n.call(i,"catchLoc"),c=n.call(i,"finallyLoc");if(u&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),w(n),s}},"catch":function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;w(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:E(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),s}},e}(e.exports);try{regeneratorRuntime=r}catch(o){Function("r","regeneratorRuntime = r")(r)}},function(e,t,n){"use strict";!function(t,n){var r,o,i=t.html5||{},a=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,c=0,s={};function l(){var e=h.elements;return"string"==typeof e?e.split(" "):e}function f(e){var t=s[e._html5shiv];return t||(t={},c++,e._html5shiv=c,s[c]=t),t}function d(e,t,r){return t||(t=n),o?t.createElement(e):(r||(r=f(t)),!(i=r.cache[e]?r.cache[e].cloneNode():u.test(e)?(r.cache[e]=r.createElem(e)).cloneNode():r.createElem(e)).canHaveChildren||a.test(e)||i.tagUrn?i:r.frag.appendChild(i));var i}function p(e){e||(e=n);var t=f(e);return!h.shivCSS||r||t.hasCSS||(t.hasCSS=!!function(e,t){var n=e.createElement("p"),r=e.getElementsByTagName("head")[0]||e.documentElement;return n.innerHTML="x",r.insertBefore(n.lastChild,r.firstChild)}(e,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),o||function(e,t){t.cache||(t.cache={},t.createElem=e.createElement,t.createFrag=e.createDocumentFragment,t.frag=t.createFrag()),e.createElement=function(n){return h.shivMethods?d(n,e,t):t.createElem(n)},e.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/[\w\-:]+/g,(function(e){return t.createElem(e),t.frag.createElement(e),'c("'+e+'")'}))+");return n}")(h,t.frag)}(e,t),e}!function(){try{var e=n.createElement("a");e.innerHTML="",r="hidden"in e,o=1==e.childNodes.length||function(){n.createElement("a");var e=n.createDocumentFragment();return"undefined"==typeof e.cloneNode||"undefined"==typeof e.createDocumentFragment||"undefined"==typeof e.createElement}()}catch(t){r=!0,o=!0}}();var h={elements:i.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:"3.7.3",shivCSS:!1!==i.shivCSS,supportsUnknownElements:o,shivMethods:!1!==i.shivMethods,type:"default",shivDocument:p,createElement:d,createDocumentFragment:function(e,t){if(e||(e=n),o)return e.createDocumentFragment();for(var r=(t=t||f(e)).frag.cloneNode(),i=0,a=l(),u=a.length;i3?u(a):null,b=String(a.key),_=String(a.char),w=a.location,x=a.keyCode||(a.keyCode=b)&&b.charCodeAt(0)||0,E=a.charCode||(a.charCode=_)&&_.charCodeAt(0)||0,C=a.bubbles,S=a.cancelable,N=a.repeat,k=a.locale,O=a.view||e;if(a.which||(a.which=a.keyCode),"initKeyEvent"in d)d.initKeyEvent(t,C,S,O,p,v,h,g,x,E);else if(0>>0),t=Element.prototype,n=t.querySelector,r=t.querySelectorAll;function o(t,n,r){t.setAttribute(e,null);var o=n.call(t,String(r).replace(/(^|,\s*)(:scope([ >]|$))/g,(function(t,n,r,o){return n+"["+e+"]"+(o||" ")})));return t.removeAttribute(e),o}t.querySelector=function(e){return o(this,n,e)},t.querySelectorAll=function(e){return o(this,r,e)}}()}}(window),function(e){var t=e.WeakMap||function(){var e,t=0,n=!1,r=!1;function o(t,o,i){r=i,n=!1,e=undefined,t.dispatchEvent(o)}function i(e){this.value=e}function u(){t++,this.__ce__=new a("@DOMMap:"+t+Math.random())}return i.prototype.handleEvent=function(t){n=!0,r?t.currentTarget.removeEventListener(t.type,this,!1):e=this.value},u.prototype={constructor:u,"delete":function(e){return o(e,this.__ce__,!0),n},get:function(t){o(t,this.__ce__,!1);var n=e;return e=undefined,n},has:function(e){return o(e,this.__ce__,!1),n},set:function(e,t){return o(e,this.__ce__,!0),e.addEventListener(this.__ce__.type,new i(t),!1),this}},u}();function n(){}function r(e,t,n){function o(e){o.once&&(e.currentTarget.removeEventListener(e.type,t,o),o.removed=!0),o.passive&&(e.preventDefault=r.preventDefault),"function"==typeof o.callback?o.callback.call(this,e):o.callback&&o.callback.handleEvent(e),o.passive&&delete e.preventDefault}return o.type=e,o.callback=t,o.capture=!!n.capture,o.passive=!!n.passive,o.once=!!n.once,o.removed=!1,o}n.prototype=(Object.create||Object)(null),r.preventDefault=function(){};var o,i,a=e.CustomEvent,u=e.dispatchEvent,c=e.addEventListener,s=e.removeEventListener,l=0,f=function(){l++},d=[].indexOf||function(e){for(var t=this.length;t--&&this[t]!==e;);return t},p=function(e){return"".concat(e.capture?"1":"0",e.passive?"1":"0",e.once?"1":"0")};try{c("_",f,{once:!0}),u(new a("_")),u(new a("_")),s("_",f,{once:!0})}catch(h){}1!==l&&(i=new t,o=function(e){if(e){var t=e.prototype;t.addEventListener=function(e){return function(t,o,a){if(a&&"boolean"!=typeof a){var u,c,s,l=i.get(this),f=p(a);l||i.set(this,l=new n),t in l||(l[t]={handler:[],wrap:[]}),c=l[t],(u=d.call(c.handler,o))<0?(u=c.handler.push(o)-1,c.wrap[u]=s=new n):s=c.wrap[u],f in s||(s[f]=r(t,o,a),e.call(this,t,s[f],s[f].capture))}else e.call(this,t,o,a)}}(t.addEventListener),t.removeEventListener=function(e){return function(t,n,r){if(r&&"boolean"!=typeof r){var o,a,u,c,s=i.get(this);if(s&&t in s&&(u=s[t],-1<(a=d.call(u.handler,n))&&(o=p(r))in(c=u.wrap[a]))){for(o in e.call(this,t,c[o],c[o].capture),delete c[o],c)return;u.handler.splice(a,1),u.wrap.splice(a,1),0===u.handler.length&&delete s[t]}}else e.call(this,t,n,r)}}(t.removeEventListener)}},e.EventTarget?o(EventTarget):(o(e.Text),o(e.Element||e.HTMLElement),o(e.HTMLDocument),o(e.Window||{prototype:e}),o(e.XMLHttpRequest)))}(window)},function(e,t,n){"use strict";!function(e){if("undefined"!=typeof e.setAttribute){var t=function(e){return e.replace(/-[a-z]/g,(function(e){return e[1].toUpperCase()}))};e.setProperty=function(e,n){var r=t(e);if(!n)return this.removeAttribute(r);var o=String(n);return this.setAttribute(r,o)},e.getPropertyValue=function(e){var n=t(e);return this.getAttribute(n)||null},e.removeProperty=function(e){var n=t(e),r=this.getAttribute(n);return this.removeAttribute(n),r}}}(CSSStyleDeclaration.prototype)},function(e,t,n){"use strict";window.Int32Array||(window.Int32Array=Array)},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){},function(e,t,n){"use strict";(function(e){
/*! loadCSS. [c]2017 Filament Group, Inc. MIT License */
-var n;n=void 0!==e?e:void 0,t.loadCSS=function(e,t,r,o){var i,a=n.document,u=a.createElement("link");if(t)i=t;else{var c=(a.body||a.getElementsByTagName("head")[0]).childNodes;i=c[c.length-1]}var s=a.styleSheets;if(o)for(var l in o)o.hasOwnProperty(l)&&u.setAttribute(l,o[l]);u.rel="stylesheet",u.href=e,u.media="only x",function p(e){if(a.body)return e();setTimeout((function(){p(e)}))}((function(){i.parentNode.insertBefore(u,t?i:i.nextSibling)}));var f=function h(e){for(var t=u.href,n=s.length;n--;)if(s[n].href===t)return e();setTimeout((function(){h(e)}))};function d(){u.addEventListener&&u.removeEventListener("load",d),u.media=r||"all"}return u.addEventListener&&u.addEventListener("load",d),u.onloadcssdefined=f,f(d),u}}).call(this,n(121))},function(e,t,n){"use strict";t.__esModule=!0,t.vecNormalize=t.vecLength=t.vecInverse=t.vecScale=t.vecDivide=t.vecMultiply=t.vecSubtract=t.vecAdd=t.vecCreate=void 0;var r=n(113);t.vecCreate=function(){for(var e=arguments.length,t=new Array(e),n=0;n1?o-1:0),a=1;a1?t-1:0),r=1;r=0||(o[n]=e[n]);return o}(e,["className"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["BlockQuote",t])},n)))}},function(e,t,n){"use strict";var r,o;t.__esModule=!0,t.VNodeFlags=t.ChildFlags=void 0,t.VNodeFlags=r,function(e){e[e.HtmlElement=1]="HtmlElement",e[e.ComponentUnknown=2]="ComponentUnknown",e[e.ComponentClass=4]="ComponentClass",e[e.ComponentFunction=8]="ComponentFunction",e[e.Text=16]="Text",e[e.SvgElement=32]="SvgElement",e[e.InputElement=64]="InputElement",e[e.TextareaElement=128]="TextareaElement",e[e.SelectElement=256]="SelectElement",e[e.Void=512]="Void",e[e.Portal=1024]="Portal",e[e.ReCreate=2048]="ReCreate",e[e.ContentEditable=4096]="ContentEditable",e[e.Fragment=8192]="Fragment",e[e.InUse=16384]="InUse",e[e.ForwardRef=32768]="ForwardRef",e[e.Normalized=65536]="Normalized",e[e.ForwardRefComponent=32776]="ForwardRefComponent",e[e.FormElement=448]="FormElement",e[e.Element=481]="Element",e[e.Component=14]="Component",e[e.DOMRef=2033]="DOMRef",e[e.InUseOrNormalized=81920]="InUseOrNormalized",e[e.ClearInUse=-16385]="ClearInUse",e[e.ComponentKnown=12]="ComponentKnown"}(r||(t.VNodeFlags=r={})),t.ChildFlags=o,function(e){e[e.UnknownChildren=0]="UnknownChildren",e[e.HasInvalidChildren=1]="HasInvalidChildren",e[e.HasVNodeChildren=2]="HasVNodeChildren",e[e.HasNonKeyedChildren=4]="HasNonKeyedChildren",e[e.HasKeyedChildren=8]="HasKeyedChildren",e[e.HasTextChildren=16]="HasTextChildren",e[e.MultipleChildren=12]="MultipleChildren"}(o||(t.ChildFlags=o={}))},function(e,t,n){"use strict";t.__esModule=!0,t.ByondUi=void 0;var r=n(3),o=n(9),i=n(405),a=n(20),u=n(52),c=n(13);function s(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var l=(0,u.createLogger)("ByondUi"),f=[];window.addEventListener("beforeunload",(function(){for(var e=0;e=0||(o[n]=e[n]);return o}(t,["data","rangeX","rangeY","fillColor","strokeColor","strokeWidth"]),g=this.state.viewBox,m=function(e,t,n,r){if(0===e.length)return[];var i=(0,o.zipWith)(Math.min).apply(void 0,e),a=(0,o.zipWith)(Math.max).apply(void 0,e);return n!==undefined&&(i[0]=n[0],a[0]=n[1]),r!==undefined&&(i[1]=r[0],a[1]=r[1]),(0,o.map)((function(e){return(0,o.zipWith)((function(e,t,n,r){return(e-t)/(n-t)*r}))(e,i,a,t)}))(e)}(i,g,a,c);if(m.length>0){var y=m[0],b=m[m.length-1];m.push([g[0]+h,b[1]]),m.push([g[0]+h,-h]),m.push([-h,-h]),m.push([-h,y[1]])}var _=function(e){for(var t="",n=0;n=0||(o[n]=e[n]);return o}(t,["children","color","title","buttons"]);return(0,r.createComponentVNode)(2,o.Box,{mb:1,children:[(0,r.createVNode)(1,"div","Table",[(0,r.createVNode)(1,"div","Table__cell",(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Button,Object.assign({fluid:!0,color:c,icon:n?"chevron-down":"chevron-right",onClick:function(){return e.setState({open:!n})}},f,{children:s}))),2),l&&(0,r.createVNode)(1,"div","Table__cell Table__cell--collapsing",l,0)],0),n&&(0,r.createComponentVNode)(2,o.Box,{mt:1,children:a})]})},a}(r.Component);t.Collapsible=a},function(e,t,n){"use strict";t.__esModule=!0,t.ColorBox=void 0;var r=n(3),o=n(9),i=n(13);var a=function(e){var t=e.content,n=(e.children,e.className),a=e.color,u=e.backgroundColor,c=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["content","children","className","color","backgroundColor"]);return c.color=t?null:"transparent",c.backgroundColor=a||u,(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["ColorBox",n,(0,i.computeBoxClassName)(c)]),t||".",0,Object.assign({},(0,i.computeBoxProps)(c))))};t.ColorBox=a,a.defaultHooks=o.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Dropdown=void 0;var r=n(3),o=n(9),i=n(13),a=n(118);function u(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var c=function(e){var t,n;function c(t){var n;return(n=e.call(this,t)||this).state={selected:t.selected,open:!1},n.handleClick=function(){n.state.open&&n.setOpen(!1)},n}n=e,(t=c).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var s=c.prototype;return s.componentWillUnmount=function(){window.removeEventListener("click",this.handleClick)},s.setOpen=function(e){var t=this;this.setState({open:e}),e?(setTimeout((function(){return window.addEventListener("click",t.handleClick)})),this.menuRef.focus()):window.removeEventListener("click",this.handleClick)},s.setSelected=function(e){this.setState({selected:e}),this.setOpen(!1),this.props.onSelected(e)},s.buildMenu=function(){var e=this,t=this.props.options,n=(void 0===t?[]:t).map((function(t){return(0,r.createVNode)(1,"div","Dropdown__menuentry",t,0,{onClick:function(){e.setSelected(t)}},t)}));return n.length?n:"No Options Found"},s.render=function(){var e=this,t=this.props,n=t.color,c=void 0===n?"default":n,s=t.over,l=t.noscroll,f=t.nochevron,d=t.width,p=(t.onClick,t.selected,t.disabled),h=u(t,["color","over","noscroll","nochevron","width","onClick","selected","disabled"]),v=h.className,g=u(h,["className"]),m=s?!this.state.open:this.state.open,y=this.state.open?(0,r.createVNode)(1,"div",(0,o.classes)([l?"Dropdown__menu-noscroll":"Dropdown__menu",s&&"Dropdown__over"]),this.buildMenu(),0,{tabIndex:"-1",style:{width:d}},null,(function(t){e.menuRef=t})):null;return(0,r.createVNode)(1,"div","Dropdown",[(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({width:d,className:(0,o.classes)(["Dropdown__control","Button","Button--color--"+c,p&&"Button--disabled",v])},g,{onClick:function(){p&&!e.state.open||e.setOpen(!e.state.open)},children:[(0,r.createVNode)(1,"span","Dropdown__selected-text",this.state.selected,0),!!f||(0,r.createVNode)(1,"span","Dropdown__arrow-button",(0,r.createComponentVNode)(2,a.Icon,{name:m?"chevron-up":"chevron-down"}),2)]}))),y],0)},c}(r.Component);t.Dropdown=c},function(e,t,n){"use strict";t.__esModule=!0,t.GridColumn=t.Grid=void 0;var r=n(3),o=n(119),i=n(9);function a(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var u=function(e){var t=e.children,n=a(e,["children"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Table,Object.assign({},n,{children:(0,r.createComponentVNode)(2,o.Table.Row,{children:t})})))};t.Grid=u,u.defaultHooks=i.pureComponentHooks;var c=function(e){var t=e.size,n=void 0===t?1:t,i=e.style,u=a(e,["size","style"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Table.Cell,Object.assign({style:Object.assign({width:n+"%"},i)},u)))};t.GridColumn=c,u.defaultHooks=i.pureComponentHooks,u.Column=c},function(e,t,n){"use strict";t.__esModule=!0,t.Input=void 0;var r=n(3),o=n(9),i=n(13);function a(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var u=function(e){return(0,o.isFalsy)(e)?"":e},c=function(e){var t,n;function c(){var t;return(t=e.call(this)||this).inputRef=(0,r.createRef)(),t.state={editing:!1},t.handleInput=function(e){var n=t.state.editing,r=t.props.onInput;n||t.setEditing(!0),r&&r(e,e.target.value)},t.handleFocus=function(e){t.state.editing||t.setEditing(!0)},t.handleBlur=function(e){var n=t.state.editing,r=t.props.onChange;n&&(t.setEditing(!1),r&&r(e,e.target.value))},t.handleKeyDown=function(e){var n=t.props,r=n.onInput,o=n.onChange,i=n.onEnter;return 13===e.keyCode?(t.setEditing(!1),o&&o(e,e.target.value),r&&r(e,e.target.value),i&&i(e,e.target.value),void(t.props.selfClear?e.target.value="":e.target.blur())):27===e.keyCode?(t.setEditing(!1),e.target.value=u(t.props.value),void e.target.blur()):void 0},t}n=e,(t=c).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var s=c.prototype;return s.componentDidMount=function(){var e=this.props.value,t=this.inputRef.current;t&&(t.value=u(e))},s.componentDidUpdate=function(e,t){var n=this.state.editing,r=e.value,o=this.props.value,i=this.inputRef.current;i&&!n&&r!==o&&(i.value=u(o))},s.setEditing=function(e){this.setState({editing:e})},s.render=function(){var e=this.props,t=(e.selfClear,e.onInput,e.onChange,e.onEnter,e.value,e.maxLength),n=e.placeholder,u=a(e,["selfClear","onInput","onChange","onEnter","value","maxLength","placeholder"]),c=u.className,s=u.fluid,l=a(u,["className","fluid"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["Input",s&&"Input--fluid",c])},l,{children:[(0,r.createVNode)(1,"div","Input__baseline",".",16),(0,r.createVNode)(64,"input","Input__input",null,1,{placeholder:n,onInput:this.handleInput,onFocus:this.handleFocus,onBlur:this.handleBlur,onKeyDown:this.handleKeyDown,maxLength:t},null,this.inputRef)]})))},c}(r.Component);t.Input=c},function(e,t,n){"use strict";t.__esModule=!0,t.Knob=void 0;var r=n(3),o=n(54),i=n(9),a=n(20),u=n(13),c=n(165),s=n(120);t.Knob=function(e){if(a.IS_IE8)return(0,r.normalizeProps)((0,r.createComponentVNode)(2,s.NumberInput,Object.assign({},e)));var t=e.animated,n=e.format,l=e.maxValue,f=e.minValue,d=e.onChange,p=e.onDrag,h=e.step,v=e.stepPixelSize,g=e.suppressFlicker,m=e.unit,y=e.value,b=e.className,_=e.style,w=e.fillValue,x=e.color,E=e.ranges,C=void 0===E?{}:E,S=e.size,N=e.bipolar,k=(e.children,function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["animated","format","maxValue","minValue","onChange","onDrag","step","stepPixelSize","suppressFlicker","unit","value","className","style","fillValue","color","ranges","size","bipolar","children"]));return(0,r.normalizeProps)((0,r.createComponentVNode)(2,c.DraggableControl,Object.assign({dragMatrix:[0,-1]},{animated:t,format:n,maxValue:l,minValue:f,onChange:d,onDrag:p,step:h,stepPixelSize:v,suppressFlicker:g,unit:m,value:y},{children:function(e){var t=e.dragging,n=(e.editing,e.value),a=e.displayValue,c=e.displayElement,s=e.inputElement,d=e.handleDragStart,p=(0,o.scale)(null!=w?w:a,f,l),h=(0,o.scale)(a,f,l),v=x||(0,o.keyOfMatchingRange)(null!=w?w:n,C)||"default",g=270*(h-.5);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,i.classes)(["Knob","Knob--color--"+v,N&&"Knob--bipolar",b,(0,u.computeBoxClassName)(k)]),[(0,r.createVNode)(1,"div","Knob__circle",(0,r.createVNode)(1,"div","Knob__cursorBox",(0,r.createVNode)(1,"div","Knob__cursor"),2,{style:{transform:"rotate("+g+"deg)"}}),2),t&&(0,r.createVNode)(1,"div","Knob__popupValue",c,0),(0,r.createVNode)(32,"svg","Knob__ring Knob__ringTrackPivot",(0,r.createVNode)(32,"circle","Knob__ringTrack",null,1,{cx:"50",cy:"50",r:"50"}),2,{viewBox:"0 0 100 100"}),(0,r.createVNode)(32,"svg","Knob__ring Knob__ringFillPivot",(0,r.createVNode)(32,"circle","Knob__ringFill",null,1,{style:{"stroke-dashoffset":((N?2.75:2)-1.5*p)*Math.PI*50},cx:"50",cy:"50",r:"50"}),2,{viewBox:"0 0 100 100"}),s],0,Object.assign({},(0,u.computeBoxProps)(Object.assign({style:Object.assign({"font-size":S+"rem"},_)},k)),{onMouseDown:d})))}})))}},function(e,t,n){"use strict";t.__esModule=!0,t.LabeledControls=void 0;var r=n(3),o=n(164);function i(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var a=function(e){var t=e.children,n=i(e,["children"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Flex,Object.assign({mx:-.5,align:"stretch",justify:"space-between"},n,{children:t})))};t.LabeledControls=a;a.Item=function(e){var t=e.label,n=e.children,a=i(e,["label","children"]);return(0,r.createComponentVNode)(2,o.Flex.Item,{mx:1,children:(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Flex,Object.assign({minWidth:"52px",height:"100%",direction:"column",align:"center",textAlign:"center",justify:"space-between"},a,{children:[(0,r.createComponentVNode)(2,o.Flex.Item),(0,r.createComponentVNode)(2,o.Flex.Item,{children:n}),(0,r.createComponentVNode)(2,o.Flex.Item,{color:"label",children:t})]})))})}},function(e,t,n){"use strict";t.__esModule=!0,t.LabeledListDivider=t.LabeledListItem=t.LabeledList=void 0;var r=n(3),o=n(9),i=n(13),a=n(163),u=function(e){var t=e.children;return(0,r.createVNode)(1,"table","LabeledList",t,0)};t.LabeledList=u,u.defaultHooks=o.pureComponentHooks;var c=function(e){var t=e.className,n=e.label,a=e.labelColor,u=void 0===a?"label":a,c=e.color,s=e.textAlign,l=e.buttons,f=e.content,d=e.children;return(0,r.createVNode)(1,"tr",(0,o.classes)(["LabeledList__row",t]),[(0,r.createComponentVNode)(2,i.Box,{as:"td",color:u,className:(0,o.classes)(["LabeledList__cell","LabeledList__label"]),children:n?n+":":null}),(0,r.createComponentVNode)(2,i.Box,{as:"td",color:c,textAlign:s,className:(0,o.classes)(["LabeledList__cell","LabeledList__content"]),colSpan:l?undefined:2,children:[f,d]}),l&&(0,r.createVNode)(1,"td","LabeledList__cell LabeledList__buttons",l,0)],0)};t.LabeledListItem=c,c.defaultHooks=o.pureComponentHooks;var s=function(e){var t=e.size?(0,i.unit)(Math.max(0,e.size-1)):0;return(0,r.createVNode)(1,"tr","LabeledList__row",(0,r.createVNode)(1,"td",null,(0,r.createComponentVNode)(2,a.Divider),2,{colSpan:3,style:{"padding-top":t,"padding-bottom":t}}),2)};t.LabeledListDivider=s,s.defaultHooks=o.pureComponentHooks,u.Item=c,u.Divider=s},function(e,t,n){"use strict";t.__esModule=!0,t.NanoMap=void 0;var r=n(3),o=n(53),i=n(41),a=function(e,t){var n=(0,i.useBackend)(t).config,a=e.onClick;return(0,r.createComponentVNode)(2,o.Box,{className:"NanoMap__container",children:(0,r.createComponentVNode)(2,o.Box,{as:"img",src:n.map+"_nanomap_z1.png",style:{width:"512px",height:"512px"},onClick:a})})};t.NanoMap=a;a.Marker=function(e){var t=e.x,n=e.y,i=e.icon,a=e.tooltip,u=e.color;return(0,r.createComponentVNode)(2,o.Box,{position:"absolute",className:"NanoMap__marker",top:2*(255-n)+2+"px",left:2*t+2+"px",children:[(0,r.createComponentVNode)(2,o.Icon,{name:i,color:u,size:.5}),(0,r.createComponentVNode)(2,o.Tooltip,{content:a})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Modal=void 0;var r=n(3),o=n(9),i=n(13),a=n(162);t.Modal=function(e){var t=e.className,n=e.children,u=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["className","children"]);return(0,r.createComponentVNode)(2,a.Dimmer,{children:(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Modal",t,(0,i.computeBoxClassName)(u)]),n,0,Object.assign({},(0,i.computeBoxProps)(u))))})}},function(e,t,n){"use strict";t.__esModule=!0,t.NoticeBox=void 0;var r=n(3),o=n(9),i=n(13);var a=function(e){var t=e.className,n=e.color,a=e.info,u=(e.warning,e.success),c=e.danger,s=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["className","color","info","warning","success","danger"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["NoticeBox",n&&"NoticeBox--color--"+n,a&&"NoticeBox--type--info",u&&"NoticeBox--type--success",c&&"NoticeBox--type--danger",t])},s)))};t.NoticeBox=a,a.defaultHooks=o.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.ProgressBar=void 0;var r=n(3),o=n(54),i=n(9),a=n(13);var u=function(e){var t=e.className,n=e.value,u=e.minValue,c=void 0===u?0:u,s=e.maxValue,l=void 0===s?1:s,f=e.color,d=e.ranges,p=void 0===d?{}:d,h=e.children,v=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["className","value","minValue","maxValue","color","ranges","children"]),g=(0,o.scale)(n,c,l),m=h!==undefined,y=f||(0,o.keyOfMatchingRange)(n,p)||"default";return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,i.classes)(["ProgressBar","ProgressBar--color--"+y,t,(0,a.computeBoxClassName)(v)]),[(0,r.createVNode)(1,"div","ProgressBar__fill ProgressBar__fill--animated",null,1,{style:{width:100*(0,o.clamp01)(g)+"%"}}),(0,r.createVNode)(1,"div","ProgressBar__content",m?h:(0,o.toFixed)(100*g)+"%",0)],4,Object.assign({},(0,a.computeBoxProps)(v))))};t.ProgressBar=u,u.defaultHooks=i.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Section=void 0;var r=n(3),o=n(9),i=n(13);var a=function(e){var t=e.className,n=e.title,a=e.level,u=void 0===a?1:a,c=e.buttons,s=e.content,l=e.children,f=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["className","title","level","buttons","content","children"]),d=!(0,o.isFalsy)(n)||!(0,o.isFalsy)(c),p=!(0,o.isFalsy)(s)||!(0,o.isFalsy)(l);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["Section","Section--level--"+u,t])},f,{children:[d&&(0,r.createVNode)(1,"div","Section__title",[(0,r.createVNode)(1,"span","Section__titleText",n,0),(0,r.createVNode)(1,"div","Section__buttons",c,0)],4),p&&(0,r.createVNode)(1,"div","Section__content",[s,l],0)]})))};t.Section=a,a.defaultHooks=o.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Slider=void 0;var r=n(3),o=n(54),i=n(9),a=n(20),u=n(13),c=n(165),s=n(120);t.Slider=function(e){if(a.IS_IE8)return(0,r.normalizeProps)((0,r.createComponentVNode)(2,s.NumberInput,Object.assign({},e)));var t=e.animated,n=e.format,l=e.maxValue,f=e.minValue,d=e.onChange,p=e.onDrag,h=e.step,v=e.stepPixelSize,g=e.suppressFlicker,m=e.unit,y=e.value,b=e.className,_=e.fillValue,w=e.color,x=e.ranges,E=void 0===x?{}:x,C=e.children,S=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["animated","format","maxValue","minValue","onChange","onDrag","step","stepPixelSize","suppressFlicker","unit","value","className","fillValue","color","ranges","children"]),N=C!==undefined;return(0,r.normalizeProps)((0,r.createComponentVNode)(2,c.DraggableControl,Object.assign({dragMatrix:[1,0]},{animated:t,format:n,maxValue:l,minValue:f,onChange:d,onDrag:p,step:h,stepPixelSize:v,suppressFlicker:g,unit:m,value:y},{children:function(e){var t=e.dragging,n=(e.editing,e.value),a=e.displayValue,c=e.displayElement,s=e.inputElement,d=e.handleDragStart,p=_!==undefined&&null!==_,h=((0,o.scale)(n,f,l),(0,o.scale)(null!=_?_:a,f,l)),v=(0,o.scale)(a,f,l),g=w||(0,o.keyOfMatchingRange)(null!=_?_:n,E)||"default";return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,i.classes)(["Slider","ProgressBar","ProgressBar--color--"+g,b,(0,u.computeBoxClassName)(S)]),[(0,r.createVNode)(1,"div",(0,i.classes)(["ProgressBar__fill",p&&"ProgressBar__fill--animated"]),null,1,{style:{width:100*(0,o.clamp01)(h)+"%",opacity:.4}}),(0,r.createVNode)(1,"div","ProgressBar__fill",null,1,{style:{width:100*(0,o.clamp01)(Math.min(h,v))+"%"}}),(0,r.createVNode)(1,"div","Slider__cursorOffset",[(0,r.createVNode)(1,"div","Slider__cursor"),(0,r.createVNode)(1,"div","Slider__pointer"),t&&(0,r.createVNode)(1,"div","Slider__popupValue",c,0)],0,{style:{width:100*(0,o.clamp01)(v)+"%"}}),(0,r.createVNode)(1,"div","ProgressBar__content",N?C:c,0),s],0,Object.assign({},(0,u.computeBoxProps)(S),{onMouseDown:d})))}})))}},function(e,t,n){"use strict";t.__esModule=!0,t.Tabs=void 0;var r=n(3),o=n(9),i=n(13),a=n(117);function u(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var c=function(e){var t=e.className,n=e.vertical,a=e.children,c=u(e,["className","vertical","children"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Tabs",n?"Tabs--vertical":"Tabs--horizontal",t,(0,i.computeBoxClassName)(c)]),(0,r.createVNode)(1,"div","Tabs__tabBox",a,0),2,Object.assign({},(0,i.computeBoxProps)(c))))};t.Tabs=c;c.Tab=function(e){var t=e.className,n=e.selected,i=e.altSelection,c=u(e,["className","selected","altSelection"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,a.Button,Object.assign({className:(0,o.classes)(["Tabs__tab",n&&"Tabs__tab--selected",i&&n&&"Tabs__tab--altSelection",t]),selected:!i&&n,color:"transparent"},c)))}},function(e,t,n){"use strict";function r(e){var t=0;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(e=function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,t)}(e)))return function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(t=e[Symbol.iterator]()).next.bind(t)}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n",apos:"'"};return e.replace(/ /gi,"\n").replace(/<\/?[a-z0-9-_]+[^>]*>/gi,"").replace(/&(nbsp|amp|quot|lt|gt|apos);/g,(function(e,n){return t[n]})).replace(/?([0-9]+);/gi,(function(e,t){var n=parseInt(t,10);return String.fromCharCode(n)})).replace(/?([0-9a-f]+);/gi,(function(e,t){var n=parseInt(t,16);return String.fromCharCode(n)}))};t.buildQueryString=function(e){return Object.keys(e).map((function(t){return encodeURIComponent(t)+"="+encodeURIComponent(e[t])})).join("&")}},function(e,t,n){var r={"./CrewMonitor.js":424,"./DisposalBin.js":425,"./Wires.js":426};function o(e){var t=i(e);return n(t)}function i(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=i,e.exports=o,o.id=423},function(e,t,n){"use strict";t.__esModule=!0,t.CrewMonitor=void 0;var r=n(3),o=n(113),i=n(41),a=n(67),u=n(53),c=n(119);t.CrewMonitor=function(e,t){var n=(0,i.useBackend)(t),s=n.act,l=n.data,f=(0,o.sortBy)((function(e){return e.name}))(l.crewmembers||[]);return(0,r.createComponentVNode)(2,a.Window,{resizable:!0,children:(0,r.createComponentVNode)(2,a.Window.Content,{children:[f.filter((function(e){return 3===e.sensor_type})).map((function(e){return(0,r.createComponentVNode)(2,u.NanoMap.Marker,{x:e.x,y:e.y,icon:"circle",tooltip:e.name,color:e.dead?"red":"green"},e.ref)})),(0,r.createComponentVNode)(2,u.NanoMap),(0,r.createComponentVNode)(2,u.Box,{className:"NanoMap__contentOffset",children:(0,r.createComponentVNode)(2,u.Box,{bold:!0,m:2,children:(0,r.createComponentVNode)(2,u.Table,{children:[(0,r.createComponentVNode)(2,u.Table.Row,{header:!0,children:[(0,r.createComponentVNode)(2,u.Table.Cell,{children:"Name"}),(0,r.createComponentVNode)(2,u.Table.Cell,{children:"Status"}),(0,r.createComponentVNode)(2,u.Table.Cell,{children:"Location"})]}),f.map((function(e){return(0,r.createComponentVNode)(2,u.Table.Row,{children:[(0,r.createComponentVNode)(2,c.TableCell,{children:[e.name," (",e.assignment,")"]}),(0,r.createComponentVNode)(2,c.TableCell,{children:[(0,r.createComponentVNode)(2,u.Box,{inline:!0,color:e.dead?"red":"green",children:e.dead?"Deceased":"Living"}),e.sensor_type>=2?(0,r.createComponentVNode)(2,u.Box,{inline:!0,children:["(",(0,r.createComponentVNode)(2,u.Box,{inline:!0,color:"red",children:e.brute}),"|",(0,r.createComponentVNode)(2,u.Box,{inline:!0,color:"orange",children:e.fire}),"|",(0,r.createComponentVNode)(2,u.Box,{inline:!0,color:"green",children:e.tox}),"|",(0,r.createComponentVNode)(2,u.Box,{inline:!0,color:"blue",children:e.oxy}),")"]}):null]}),(0,r.createComponentVNode)(2,c.TableCell,{children:3===e.sensor_type?l.isAI?(0,r.createComponentVNode)(2,u.Button,{fluid:!0,content:e.area+" ("+e.x+", "+e.y+")",onClick:function(){return s("track",{track:e.ref})}}):e.area+" ("+e.x+", "+e.y+")":"Not Available"})]},e.name)}))]})})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.DisposalBin=void 0;var r=n(3),o=n(41),i=n(53),a=n(67);t.DisposalBin=function(e,t){var n,u,c=(0,o.useBackend)(t),s=c.act,l=c.data;return 2===l.mode?(n="good",u="Ready"):l.mode<=0?(n="bad",u="N/A"):1===l.mode?(n="average",u="Pressurizing"):(n="average",u="Idle"),(0,r.createComponentVNode)(2,a.Window,{children:(0,r.createComponentVNode)(2,a.Window.Content,{children:(0,r.createComponentVNode)(2,i.Section,{children:[(0,r.createComponentVNode)(2,i.Box,{bold:!0,m:1,children:"Status"}),(0,r.createComponentVNode)(2,i.LabeledList,{children:[(0,r.createComponentVNode)(2,i.LabeledList.Item,{label:"State",color:n,children:u}),(0,r.createComponentVNode)(2,i.LabeledList.Item,{label:"Pressure",children:(0,r.createComponentVNode)(2,i.ProgressBar,{ranges:{bad:[-Infinity,0],average:[0,99],good:[99,Infinity]},value:l.pressure,minValue:0,maxValue:100})})]}),(0,r.createComponentVNode)(2,i.Box,{bold:!0,m:1,children:"Controls"}),(0,r.createComponentVNode)(2,i.LabeledList,{children:[(0,r.createComponentVNode)(2,i.LabeledList.Item,{label:"Handle",children:[(0,r.createComponentVNode)(2,i.Button,{icon:"toggle-off",disabled:l.isAI||l.panel_open,content:"Disengaged",selected:l.flushing?null:"selected",onClick:function(){return s("disengageHandle")}}),(0,r.createComponentVNode)(2,i.Button,{icon:"toggle-on",disabled:l.isAI||l.panel_open,content:"Engaged",selected:l.flushing?"selected":null,onClick:function(){return s("engageHandle")}})]}),(0,r.createComponentVNode)(2,i.LabeledList.Item,{label:"Power",children:[(0,r.createComponentVNode)(2,i.Button,{icon:"toggle-off",disabled:-1===l.mode,content:"Off",selected:l.mode?null:"selected",onClick:function(){return s("pumpOff")}}),(0,r.createComponentVNode)(2,i.Button,{icon:"toggle-on",disabled:-1===l.mode,content:"On",selected:l.mode?"selected":null,onClick:function(){return s("pumpOn")}})]}),(0,r.createComponentVNode)(2,i.LabeledList.Item,{label:"Eject",children:(0,r.createComponentVNode)(2,i.Button,{icon:"sign-out-alt",disabled:l.isAI,content:"Eject Contents",onClick:function(){return s("eject")}})})]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.Wires=void 0;var r=n(3),o=n(41),i=n(53),a=n(67);t.Wires=function(e,t){var n=(0,o.useBackend)(t),u=n.act,c=n.data,s=c.wires||[],l=c.status||[];return(0,r.createComponentVNode)(2,a.Window,{children:(0,r.createComponentVNode)(2,a.Window.Content,{children:[(0,r.createComponentVNode)(2,i.Section,{children:(0,r.createComponentVNode)(2,i.LabeledList,{children:s.map((function(e){return(0,r.createComponentVNode)(2,i.LabeledList.Item,{className:"candystripe",label:e.color_name,labelColor:e.seen_color,color:e.seen_color,buttons:(0,r.createFragment)([(0,r.createComponentVNode)(2,i.Button,{content:e.cut?"Mend":"Cut",onClick:function(){return u("cut",{wire:e.color})}}),(0,r.createComponentVNode)(2,i.Button,{content:"Pulse",onClick:function(){return u("pulse",{wire:e.color})}}),(0,r.createComponentVNode)(2,i.Button,{content:e.attached?"Detach":"Attach",onClick:function(){return u("attach",{wire:e.color})}})],4),children:!!e.wire&&(0,r.createVNode)(1,"i",null,[(0,r.createTextVNode)("("),e.wire,(0,r.createTextVNode)(")")],0)},e.seen_color)}))})}),!!l.length&&(0,r.createComponentVNode)(2,i.Section,{children:l.map((function(e){return(0,r.createComponentVNode)(2,i.Box,{color:"lightgray",mt:.1,children:e},e)}))})]})})}}]);
\ No newline at end of file
+var n;n=void 0!==e?e:void 0,t.loadCSS=function(e,t,r,o){var i,a=n.document,u=a.createElement("link");if(t)i=t;else{var c=(a.body||a.getElementsByTagName("head")[0]).childNodes;i=c[c.length-1]}var s=a.styleSheets;if(o)for(var l in o)o.hasOwnProperty(l)&&u.setAttribute(l,o[l]);u.rel="stylesheet",u.href=e,u.media="only x",function p(e){if(a.body)return e();setTimeout((function(){p(e)}))}((function(){i.parentNode.insertBefore(u,t?i:i.nextSibling)}));var f=function h(e){for(var t=u.href,n=s.length;n--;)if(s[n].href===t)return e();setTimeout((function(){h(e)}))};function d(){u.addEventListener&&u.removeEventListener("load",d),u.media=r||"all"}return u.addEventListener&&u.addEventListener("load",d),u.onloadcssdefined=f,f(d),u}}).call(this,n(121))},function(e,t,n){"use strict";t.__esModule=!0,t.vecNormalize=t.vecLength=t.vecInverse=t.vecScale=t.vecDivide=t.vecMultiply=t.vecSubtract=t.vecAdd=t.vecCreate=void 0;var r=n(113);t.vecCreate=function(){for(var e=arguments.length,t=new Array(e),n=0;n1?o-1:0),a=1;a1?t-1:0),r=1;r=0||(o[n]=e[n]);return o}(e,["className"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["BlockQuote",t])},n)))}},function(e,t,n){"use strict";var r,o;t.__esModule=!0,t.VNodeFlags=t.ChildFlags=void 0,t.VNodeFlags=r,function(e){e[e.HtmlElement=1]="HtmlElement",e[e.ComponentUnknown=2]="ComponentUnknown",e[e.ComponentClass=4]="ComponentClass",e[e.ComponentFunction=8]="ComponentFunction",e[e.Text=16]="Text",e[e.SvgElement=32]="SvgElement",e[e.InputElement=64]="InputElement",e[e.TextareaElement=128]="TextareaElement",e[e.SelectElement=256]="SelectElement",e[e.Void=512]="Void",e[e.Portal=1024]="Portal",e[e.ReCreate=2048]="ReCreate",e[e.ContentEditable=4096]="ContentEditable",e[e.Fragment=8192]="Fragment",e[e.InUse=16384]="InUse",e[e.ForwardRef=32768]="ForwardRef",e[e.Normalized=65536]="Normalized",e[e.ForwardRefComponent=32776]="ForwardRefComponent",e[e.FormElement=448]="FormElement",e[e.Element=481]="Element",e[e.Component=14]="Component",e[e.DOMRef=2033]="DOMRef",e[e.InUseOrNormalized=81920]="InUseOrNormalized",e[e.ClearInUse=-16385]="ClearInUse",e[e.ComponentKnown=12]="ComponentKnown"}(r||(t.VNodeFlags=r={})),t.ChildFlags=o,function(e){e[e.UnknownChildren=0]="UnknownChildren",e[e.HasInvalidChildren=1]="HasInvalidChildren",e[e.HasVNodeChildren=2]="HasVNodeChildren",e[e.HasNonKeyedChildren=4]="HasNonKeyedChildren",e[e.HasKeyedChildren=8]="HasKeyedChildren",e[e.HasTextChildren=16]="HasTextChildren",e[e.MultipleChildren=12]="MultipleChildren"}(o||(t.ChildFlags=o={}))},function(e,t,n){"use strict";t.__esModule=!0,t.ByondUi=void 0;var r=n(2),o=n(9),i=n(406),a=n(20),u=n(54),c=n(13);function s(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var l=(0,u.createLogger)("ByondUi"),f=[];window.addEventListener("beforeunload",(function(){for(var e=0;e=0||(o[n]=e[n]);return o}(t,["data","rangeX","rangeY","fillColor","strokeColor","strokeWidth"]),g=this.state.viewBox,m=function(e,t,n,r){if(0===e.length)return[];var i=(0,o.zipWith)(Math.min).apply(void 0,e),a=(0,o.zipWith)(Math.max).apply(void 0,e);return n!==undefined&&(i[0]=n[0],a[0]=n[1]),r!==undefined&&(i[1]=r[0],a[1]=r[1]),(0,o.map)((function(e){return(0,o.zipWith)((function(e,t,n,r){return(e-t)/(n-t)*r}))(e,i,a,t)}))(e)}(i,g,a,c);if(m.length>0){var y=m[0],b=m[m.length-1];m.push([g[0]+h,b[1]]),m.push([g[0]+h,-h]),m.push([-h,-h]),m.push([-h,y[1]])}var _=function(e){for(var t="",n=0;n=0||(o[n]=e[n]);return o}(t,["children","color","title","buttons"]);return(0,r.createComponentVNode)(2,o.Box,{mb:1,children:[(0,r.createVNode)(1,"div","Table",[(0,r.createVNode)(1,"div","Table__cell",(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Button,Object.assign({fluid:!0,color:c,icon:n?"chevron-down":"chevron-right",onClick:function(){return e.setState({open:!n})}},f,{children:s}))),2),l&&(0,r.createVNode)(1,"div","Table__cell Table__cell--collapsing",l,0)],0),n&&(0,r.createComponentVNode)(2,o.Box,{mt:1,children:a})]})},a}(r.Component);t.Collapsible=a},function(e,t,n){"use strict";t.__esModule=!0,t.ColorBox=void 0;var r=n(2),o=n(9),i=n(13);var a=function(e){var t=e.content,n=(e.children,e.className),a=e.color,u=e.backgroundColor,c=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["content","children","className","color","backgroundColor"]);return c.color=t?null:"transparent",c.backgroundColor=a||u,(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["ColorBox",n,(0,i.computeBoxClassName)(c)]),t||".",0,Object.assign({},(0,i.computeBoxProps)(c))))};t.ColorBox=a,a.defaultHooks=o.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Dropdown=void 0;var r=n(2),o=n(9),i=n(13),a=n(118);function u(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var c=function(e){var t,n;function c(t){var n;return(n=e.call(this,t)||this).state={selected:t.selected,open:!1},n.handleClick=function(){n.state.open&&n.setOpen(!1)},n}n=e,(t=c).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var s=c.prototype;return s.componentWillUnmount=function(){window.removeEventListener("click",this.handleClick)},s.setOpen=function(e){var t=this;this.setState({open:e}),e?(setTimeout((function(){return window.addEventListener("click",t.handleClick)})),this.menuRef.focus()):window.removeEventListener("click",this.handleClick)},s.setSelected=function(e){this.setState({selected:e}),this.setOpen(!1),this.props.onSelected(e)},s.buildMenu=function(){var e=this,t=this.props.options,n=(void 0===t?[]:t).map((function(t){return(0,r.createVNode)(1,"div","Dropdown__menuentry",t,0,{onClick:function(){e.setSelected(t)}},t)}));return n.length?n:"No Options Found"},s.render=function(){var e=this,t=this.props,n=t.color,c=void 0===n?"default":n,s=t.over,l=t.noscroll,f=t.nochevron,d=t.width,p=(t.onClick,t.selected,t.disabled),h=u(t,["color","over","noscroll","nochevron","width","onClick","selected","disabled"]),v=h.className,g=u(h,["className"]),m=s?!this.state.open:this.state.open,y=this.state.open?(0,r.createVNode)(1,"div",(0,o.classes)([l?"Dropdown__menu-noscroll":"Dropdown__menu",s&&"Dropdown__over"]),this.buildMenu(),0,{tabIndex:"-1",style:{width:d}},null,(function(t){e.menuRef=t})):null;return(0,r.createVNode)(1,"div","Dropdown",[(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({width:d,className:(0,o.classes)(["Dropdown__control","Button","Button--color--"+c,p&&"Button--disabled",v])},g,{onClick:function(){p&&!e.state.open||e.setOpen(!e.state.open)},children:[(0,r.createVNode)(1,"span","Dropdown__selected-text",this.state.selected,0),!!f||(0,r.createVNode)(1,"span","Dropdown__arrow-button",(0,r.createComponentVNode)(2,a.Icon,{name:m?"chevron-up":"chevron-down"}),2)]}))),y],0)},c}(r.Component);t.Dropdown=c},function(e,t,n){"use strict";t.__esModule=!0,t.GridColumn=t.Grid=void 0;var r=n(2),o=n(119),i=n(9);function a(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var u=function(e){var t=e.children,n=a(e,["children"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Table,Object.assign({},n,{children:(0,r.createComponentVNode)(2,o.Table.Row,{children:t})})))};t.Grid=u,u.defaultHooks=i.pureComponentHooks;var c=function(e){var t=e.size,n=void 0===t?1:t,i=e.style,u=a(e,["size","style"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Table.Cell,Object.assign({style:Object.assign({width:n+"%"},i)},u)))};t.GridColumn=c,u.defaultHooks=i.pureComponentHooks,u.Column=c},function(e,t,n){"use strict";t.__esModule=!0,t.Input=void 0;var r=n(2),o=n(9),i=n(13);function a(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var u=function(e){return(0,o.isFalsy)(e)?"":e},c=function(e){var t,n;function c(){var t;return(t=e.call(this)||this).inputRef=(0,r.createRef)(),t.state={editing:!1},t.handleInput=function(e){var n=t.state.editing,r=t.props.onInput;n||t.setEditing(!0),r&&r(e,e.target.value)},t.handleFocus=function(e){t.state.editing||t.setEditing(!0)},t.handleBlur=function(e){var n=t.state.editing,r=t.props.onChange;n&&(t.setEditing(!1),r&&r(e,e.target.value))},t.handleKeyDown=function(e){var n=t.props,r=n.onInput,o=n.onChange,i=n.onEnter;return 13===e.keyCode?(t.setEditing(!1),o&&o(e,e.target.value),r&&r(e,e.target.value),i&&i(e,e.target.value),void(t.props.selfClear?e.target.value="":e.target.blur())):27===e.keyCode?(t.setEditing(!1),e.target.value=u(t.props.value),void e.target.blur()):void 0},t}n=e,(t=c).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var s=c.prototype;return s.componentDidMount=function(){var e=this.props.value,t=this.inputRef.current;t&&(t.value=u(e))},s.componentDidUpdate=function(e,t){var n=this.state.editing,r=e.value,o=this.props.value,i=this.inputRef.current;i&&!n&&r!==o&&(i.value=u(o))},s.setEditing=function(e){this.setState({editing:e})},s.render=function(){var e=this.props,t=(e.selfClear,e.onInput,e.onChange,e.onEnter,e.value,e.maxLength),n=e.placeholder,u=a(e,["selfClear","onInput","onChange","onEnter","value","maxLength","placeholder"]),c=u.className,s=u.fluid,l=a(u,["className","fluid"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["Input",s&&"Input--fluid",c])},l,{children:[(0,r.createVNode)(1,"div","Input__baseline",".",16),(0,r.createVNode)(64,"input","Input__input",null,1,{placeholder:n,onInput:this.handleInput,onFocus:this.handleFocus,onBlur:this.handleBlur,onKeyDown:this.handleKeyDown,maxLength:t},null,this.inputRef)]})))},c}(r.Component);t.Input=c},function(e,t,n){"use strict";t.__esModule=!0,t.Knob=void 0;var r=n(2),o=n(55),i=n(9),a=n(20),u=n(13),c=n(165),s=n(120);t.Knob=function(e){if(a.IS_IE8)return(0,r.normalizeProps)((0,r.createComponentVNode)(2,s.NumberInput,Object.assign({},e)));var t=e.animated,n=e.format,l=e.maxValue,f=e.minValue,d=e.onChange,p=e.onDrag,h=e.step,v=e.stepPixelSize,g=e.suppressFlicker,m=e.unit,y=e.value,b=e.className,_=e.style,w=e.fillValue,x=e.color,E=e.ranges,C=void 0===E?{}:E,S=e.size,N=e.bipolar,k=(e.children,function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["animated","format","maxValue","minValue","onChange","onDrag","step","stepPixelSize","suppressFlicker","unit","value","className","style","fillValue","color","ranges","size","bipolar","children"]));return(0,r.normalizeProps)((0,r.createComponentVNode)(2,c.DraggableControl,Object.assign({dragMatrix:[0,-1]},{animated:t,format:n,maxValue:l,minValue:f,onChange:d,onDrag:p,step:h,stepPixelSize:v,suppressFlicker:g,unit:m,value:y},{children:function(e){var t=e.dragging,n=(e.editing,e.value),a=e.displayValue,c=e.displayElement,s=e.inputElement,d=e.handleDragStart,p=(0,o.scale)(null!=w?w:a,f,l),h=(0,o.scale)(a,f,l),v=x||(0,o.keyOfMatchingRange)(null!=w?w:n,C)||"default",g=270*(h-.5);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,i.classes)(["Knob","Knob--color--"+v,N&&"Knob--bipolar",b,(0,u.computeBoxClassName)(k)]),[(0,r.createVNode)(1,"div","Knob__circle",(0,r.createVNode)(1,"div","Knob__cursorBox",(0,r.createVNode)(1,"div","Knob__cursor"),2,{style:{transform:"rotate("+g+"deg)"}}),2),t&&(0,r.createVNode)(1,"div","Knob__popupValue",c,0),(0,r.createVNode)(32,"svg","Knob__ring Knob__ringTrackPivot",(0,r.createVNode)(32,"circle","Knob__ringTrack",null,1,{cx:"50",cy:"50",r:"50"}),2,{viewBox:"0 0 100 100"}),(0,r.createVNode)(32,"svg","Knob__ring Knob__ringFillPivot",(0,r.createVNode)(32,"circle","Knob__ringFill",null,1,{style:{"stroke-dashoffset":((N?2.75:2)-1.5*p)*Math.PI*50},cx:"50",cy:"50",r:"50"}),2,{viewBox:"0 0 100 100"}),s],0,Object.assign({},(0,u.computeBoxProps)(Object.assign({style:Object.assign({"font-size":S+"rem"},_)},k)),{onMouseDown:d})))}})))}},function(e,t,n){"use strict";t.__esModule=!0,t.LabeledControls=void 0;var r=n(2),o=n(164);function i(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var a=function(e){var t=e.children,n=i(e,["children"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Flex,Object.assign({mx:-.5,align:"stretch",justify:"space-between"},n,{children:t})))};t.LabeledControls=a;a.Item=function(e){var t=e.label,n=e.children,a=i(e,["label","children"]);return(0,r.createComponentVNode)(2,o.Flex.Item,{mx:1,children:(0,r.normalizeProps)((0,r.createComponentVNode)(2,o.Flex,Object.assign({minWidth:"52px",height:"100%",direction:"column",align:"center",textAlign:"center",justify:"space-between"},a,{children:[(0,r.createComponentVNode)(2,o.Flex.Item),(0,r.createComponentVNode)(2,o.Flex.Item,{children:n}),(0,r.createComponentVNode)(2,o.Flex.Item,{color:"label",children:t})]})))})}},function(e,t,n){"use strict";t.__esModule=!0,t.LabeledListDivider=t.LabeledListItem=t.LabeledList=void 0;var r=n(2),o=n(9),i=n(13),a=n(163),u=function(e){var t=e.children;return(0,r.createVNode)(1,"table","LabeledList",t,0)};t.LabeledList=u,u.defaultHooks=o.pureComponentHooks;var c=function(e){var t=e.className,n=e.label,a=e.labelColor,u=void 0===a?"label":a,c=e.color,s=e.textAlign,l=e.buttons,f=e.content,d=e.children;return(0,r.createVNode)(1,"tr",(0,o.classes)(["LabeledList__row",t]),[(0,r.createComponentVNode)(2,i.Box,{as:"td",color:u,className:(0,o.classes)(["LabeledList__cell","LabeledList__label"]),children:n?n+":":null}),(0,r.createComponentVNode)(2,i.Box,{as:"td",color:c,textAlign:s,className:(0,o.classes)(["LabeledList__cell","LabeledList__content"]),colSpan:l?undefined:2,children:[f,d]}),l&&(0,r.createVNode)(1,"td","LabeledList__cell LabeledList__buttons",l,0)],0)};t.LabeledListItem=c,c.defaultHooks=o.pureComponentHooks;var s=function(e){var t=e.size?(0,i.unit)(Math.max(0,e.size-1)):0;return(0,r.createVNode)(1,"tr","LabeledList__row",(0,r.createVNode)(1,"td",null,(0,r.createComponentVNode)(2,a.Divider),2,{colSpan:3,style:{"padding-top":t,"padding-bottom":t}}),2)};t.LabeledListDivider=s,s.defaultHooks=o.pureComponentHooks,u.Item=c,u.Divider=s},function(e,t,n){"use strict";t.__esModule=!0,t.NanoMap=void 0;var r=n(2),o=n(49),i=n(36),a=function(e,t){var n=(0,i.useBackend)(t).config,a=e.onClick;return(0,r.createComponentVNode)(2,o.Box,{className:"NanoMap__container",children:(0,r.createComponentVNode)(2,o.Box,{as:"img",src:n.map+"_nanomap_z1.png",style:{width:"512px",height:"512px"},onClick:a})})};t.NanoMap=a;a.Marker=function(e){var t=e.x,n=e.y,i=e.icon,a=e.tooltip,u=e.color;return(0,r.createComponentVNode)(2,o.Box,{position:"absolute",className:"NanoMap__marker",top:2*(255-n)+2+"px",left:2*t+2+"px",children:[(0,r.createComponentVNode)(2,o.Icon,{name:i,color:u,size:.5}),(0,r.createComponentVNode)(2,o.Tooltip,{content:a})]})}},function(e,t,n){"use strict";t.__esModule=!0,t.Modal=void 0;var r=n(2),o=n(9),i=n(13),a=n(162);t.Modal=function(e){var t=e.className,n=e.children,u=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["className","children"]);return(0,r.createComponentVNode)(2,a.Dimmer,{children:(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Modal",t,(0,i.computeBoxClassName)(u)]),n,0,Object.assign({},(0,i.computeBoxProps)(u))))})}},function(e,t,n){"use strict";t.__esModule=!0,t.NoticeBox=void 0;var r=n(2),o=n(9),i=n(13);var a=function(e){var t=e.className,n=e.color,a=e.info,u=(e.warning,e.success),c=e.danger,s=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["className","color","info","warning","success","danger"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["NoticeBox",n&&"NoticeBox--color--"+n,a&&"NoticeBox--type--info",u&&"NoticeBox--type--success",c&&"NoticeBox--type--danger",t])},s)))};t.NoticeBox=a,a.defaultHooks=o.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.ProgressBar=void 0;var r=n(2),o=n(55),i=n(9),a=n(13);var u=function(e){var t=e.className,n=e.value,u=e.minValue,c=void 0===u?0:u,s=e.maxValue,l=void 0===s?1:s,f=e.color,d=e.ranges,p=void 0===d?{}:d,h=e.children,v=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["className","value","minValue","maxValue","color","ranges","children"]),g=(0,o.scale)(n,c,l),m=h!==undefined,y=f||(0,o.keyOfMatchingRange)(n,p)||"default";return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,i.classes)(["ProgressBar","ProgressBar--color--"+y,t,(0,a.computeBoxClassName)(v)]),[(0,r.createVNode)(1,"div","ProgressBar__fill ProgressBar__fill--animated",null,1,{style:{width:100*(0,o.clamp01)(g)+"%"}}),(0,r.createVNode)(1,"div","ProgressBar__content",m?h:(0,o.toFixed)(100*g)+"%",0)],4,Object.assign({},(0,a.computeBoxProps)(v))))};t.ProgressBar=u,u.defaultHooks=i.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Section=void 0;var r=n(2),o=n(9),i=n(13);var a=function(e){var t=e.className,n=e.title,a=e.level,u=void 0===a?1:a,c=e.buttons,s=e.content,l=e.children,f=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["className","title","level","buttons","content","children"]),d=!(0,o.isFalsy)(n)||!(0,o.isFalsy)(c),p=!(0,o.isFalsy)(s)||!(0,o.isFalsy)(l);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,i.Box,Object.assign({className:(0,o.classes)(["Section","Section--level--"+u,t])},f,{children:[d&&(0,r.createVNode)(1,"div","Section__title",[(0,r.createVNode)(1,"span","Section__titleText",n,0),(0,r.createVNode)(1,"div","Section__buttons",c,0)],4),p&&(0,r.createVNode)(1,"div","Section__content",[s,l],0)]})))};t.Section=a,a.defaultHooks=o.pureComponentHooks},function(e,t,n){"use strict";t.__esModule=!0,t.Slider=void 0;var r=n(2),o=n(55),i=n(9),a=n(20),u=n(13),c=n(165),s=n(120);t.Slider=function(e){if(a.IS_IE8)return(0,r.normalizeProps)((0,r.createComponentVNode)(2,s.NumberInput,Object.assign({},e)));var t=e.animated,n=e.format,l=e.maxValue,f=e.minValue,d=e.onChange,p=e.onDrag,h=e.step,v=e.stepPixelSize,g=e.suppressFlicker,m=e.unit,y=e.value,b=e.className,_=e.fillValue,w=e.color,x=e.ranges,E=void 0===x?{}:x,C=e.children,S=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}(e,["animated","format","maxValue","minValue","onChange","onDrag","step","stepPixelSize","suppressFlicker","unit","value","className","fillValue","color","ranges","children"]),N=C!==undefined;return(0,r.normalizeProps)((0,r.createComponentVNode)(2,c.DraggableControl,Object.assign({dragMatrix:[1,0]},{animated:t,format:n,maxValue:l,minValue:f,onChange:d,onDrag:p,step:h,stepPixelSize:v,suppressFlicker:g,unit:m,value:y},{children:function(e){var t=e.dragging,n=(e.editing,e.value),a=e.displayValue,c=e.displayElement,s=e.inputElement,d=e.handleDragStart,p=_!==undefined&&null!==_,h=((0,o.scale)(n,f,l),(0,o.scale)(null!=_?_:a,f,l)),v=(0,o.scale)(a,f,l),g=w||(0,o.keyOfMatchingRange)(null!=_?_:n,E)||"default";return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,i.classes)(["Slider","ProgressBar","ProgressBar--color--"+g,b,(0,u.computeBoxClassName)(S)]),[(0,r.createVNode)(1,"div",(0,i.classes)(["ProgressBar__fill",p&&"ProgressBar__fill--animated"]),null,1,{style:{width:100*(0,o.clamp01)(h)+"%",opacity:.4}}),(0,r.createVNode)(1,"div","ProgressBar__fill",null,1,{style:{width:100*(0,o.clamp01)(Math.min(h,v))+"%"}}),(0,r.createVNode)(1,"div","Slider__cursorOffset",[(0,r.createVNode)(1,"div","Slider__cursor"),(0,r.createVNode)(1,"div","Slider__pointer"),t&&(0,r.createVNode)(1,"div","Slider__popupValue",c,0)],0,{style:{width:100*(0,o.clamp01)(v)+"%"}}),(0,r.createVNode)(1,"div","ProgressBar__content",N?C:c,0),s],0,Object.assign({},(0,u.computeBoxProps)(S),{onMouseDown:d})))}})))}},function(e,t,n){"use strict";t.__esModule=!0,t.Tabs=void 0;var r=n(2),o=n(9),i=n(13),a=n(117);function u(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r=0||(o[n]=e[n]);return o}var c=function(e){var t=e.className,n=e.vertical,a=e.children,c=u(e,["className","vertical","children"]);return(0,r.normalizeProps)((0,r.createVNode)(1,"div",(0,o.classes)(["Tabs",n?"Tabs--vertical":"Tabs--horizontal",t,(0,i.computeBoxClassName)(c)]),(0,r.createVNode)(1,"div","Tabs__tabBox",a,0),2,Object.assign({},(0,i.computeBoxProps)(c))))};t.Tabs=c;c.Tab=function(e){var t=e.className,n=e.selected,i=e.altSelection,c=u(e,["className","selected","altSelection"]);return(0,r.normalizeProps)((0,r.createComponentVNode)(2,a.Button,Object.assign({className:(0,o.classes)(["Tabs__tab",n&&"Tabs__tab--selected",i&&n&&"Tabs__tab--altSelection",t]),selected:!i&&n,color:"transparent"},c)))}},function(e,t,n){"use strict";function r(e){var t=0;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(e=function(e,t){if(!e)return;if("string"==typeof e)return o(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return o(e,t)}(e)))return function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(t=e[Symbol.iterator]()).next.bind(t)}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n",apos:"'"};return e.replace(/ /gi,"\n").replace(/<\/?[a-z0-9-_]+[^>]*>/gi,"").replace(/&(nbsp|amp|quot|lt|gt|apos);/g,(function(e,n){return t[n]})).replace(/?([0-9]+);/gi,(function(e,t){var n=parseInt(t,10);return String.fromCharCode(n)})).replace(/?([0-9a-f]+);/gi,(function(e,t){var n=parseInt(t,16);return String.fromCharCode(n)}))};t.buildQueryString=function(e){return Object.keys(e).map((function(t){return encodeURIComponent(t)+"="+encodeURIComponent(e[t])})).join("&")}},function(e,t,n){var r={"./AtmosAlertConsole.js":425,"./CrewMonitor.js":426,"./DisposalBin.js":427,"./NtosStationAlertConsole.js":428,"./StationAlertConsole.js":167};function o(e){var t=i(e);return n(t)}function i(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=i,e.exports=o,o.id=424},function(e,t,n){"use strict";t.__esModule=!0,t.AtmosAlertConsole=void 0;var r=n(2),o=n(36),i=n(49),a=n(48);t.AtmosAlertConsole=function(e,t){var n=(0,o.useBackend)(t),u=n.act,c=n.data,s=c.priority||[],l=c.minor||[];return(0,r.createComponentVNode)(2,a.Window,{resizable:!0,children:(0,r.createComponentVNode)(2,a.Window.Content,{scrollable:!0,children:(0,r.createComponentVNode)(2,i.Section,{title:"Alarms",children:(0,r.createVNode)(1,"ul",null,[0===s.length&&(0,r.createVNode)(1,"li","color-good","No Priority Alerts",16),s.map((function(e){return(0,r.createVNode)(1,"li",null,(0,r.createComponentVNode)(2,i.Button,{icon:"times",content:e,color:"bad",onClick:function(){return u("clear",{zone:e})}}),2,null,e)})),0===l.length&&(0,r.createVNode)(1,"li","color-good","No Minor Alerts",16),l.map((function(e){return(0,r.createVNode)(1,"li",null,(0,r.createComponentVNode)(2,i.Button,{icon:"times",content:e,color:"average",onClick:function(){return u("clear",{zone:e})}}),2,null,e)}))],0)})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.CrewMonitor=void 0;var r=n(2),o=n(113),i=n(36),a=n(48),u=n(49),c=n(119);t.CrewMonitor=function(e,t){var n=(0,i.useBackend)(t),s=n.act,l=n.data,f=(0,o.sortBy)((function(e){return e.name}))(l.crewmembers||[]);return(0,r.createComponentVNode)(2,a.Window,{resizable:!0,children:(0,r.createComponentVNode)(2,a.Window.Content,{children:[f.filter((function(e){return 3===e.sensor_type})).map((function(e){return(0,r.createComponentVNode)(2,u.NanoMap.Marker,{x:e.x,y:e.y,icon:"circle",tooltip:e.name,color:e.dead?"red":"green"},e.ref)})),(0,r.createComponentVNode)(2,u.NanoMap),(0,r.createComponentVNode)(2,u.Box,{className:"NanoMap__contentOffset",children:(0,r.createComponentVNode)(2,u.Box,{bold:!0,m:2,children:(0,r.createComponentVNode)(2,u.Table,{children:[(0,r.createComponentVNode)(2,u.Table.Row,{header:!0,children:[(0,r.createComponentVNode)(2,u.Table.Cell,{children:"Name"}),(0,r.createComponentVNode)(2,u.Table.Cell,{children:"Status"}),(0,r.createComponentVNode)(2,u.Table.Cell,{children:"Location"})]}),f.map((function(e){return(0,r.createComponentVNode)(2,u.Table.Row,{children:[(0,r.createComponentVNode)(2,c.TableCell,{children:[e.name," (",e.assignment,")"]}),(0,r.createComponentVNode)(2,c.TableCell,{children:[(0,r.createComponentVNode)(2,u.Box,{inline:!0,color:e.dead?"red":"green",children:e.dead?"Deceased":"Living"}),e.sensor_type>=2?(0,r.createComponentVNode)(2,u.Box,{inline:!0,children:["(",(0,r.createComponentVNode)(2,u.Box,{inline:!0,color:"red",children:e.brute}),"|",(0,r.createComponentVNode)(2,u.Box,{inline:!0,color:"orange",children:e.fire}),"|",(0,r.createComponentVNode)(2,u.Box,{inline:!0,color:"green",children:e.tox}),"|",(0,r.createComponentVNode)(2,u.Box,{inline:!0,color:"blue",children:e.oxy}),")"]}):null]}),(0,r.createComponentVNode)(2,c.TableCell,{children:3===e.sensor_type?l.isAI?(0,r.createComponentVNode)(2,u.Button,{fluid:!0,content:e.area+" ("+e.x+", "+e.y+")",onClick:function(){return s("track",{track:e.ref})}}):e.area+" ("+e.x+", "+e.y+")":"Not Available"})]},e.name)}))]})})})]})})}},function(e,t,n){"use strict";t.__esModule=!0,t.DisposalBin=void 0;var r=n(2),o=n(36),i=n(49),a=n(48);t.DisposalBin=function(e,t){var n,u,c=(0,o.useBackend)(t),s=c.act,l=c.data;return 2===l.mode?(n="good",u="Ready"):l.mode<=0?(n="bad",u="N/A"):1===l.mode?(n="average",u="Pressurizing"):(n="average",u="Idle"),(0,r.createComponentVNode)(2,a.Window,{children:(0,r.createComponentVNode)(2,a.Window.Content,{children:(0,r.createComponentVNode)(2,i.Section,{children:[(0,r.createComponentVNode)(2,i.Box,{bold:!0,m:1,children:"Status"}),(0,r.createComponentVNode)(2,i.LabeledList,{children:[(0,r.createComponentVNode)(2,i.LabeledList.Item,{label:"State",color:n,children:u}),(0,r.createComponentVNode)(2,i.LabeledList.Item,{label:"Pressure",children:(0,r.createComponentVNode)(2,i.ProgressBar,{ranges:{bad:[-Infinity,0],average:[0,99],good:[99,Infinity]},value:l.pressure,minValue:0,maxValue:100})})]}),(0,r.createComponentVNode)(2,i.Box,{bold:!0,m:1,children:"Controls"}),(0,r.createComponentVNode)(2,i.LabeledList,{children:[(0,r.createComponentVNode)(2,i.LabeledList.Item,{label:"Handle",children:[(0,r.createComponentVNode)(2,i.Button,{icon:"toggle-off",disabled:l.isAI||l.panel_open,content:"Disengaged",selected:l.flushing?null:"selected",onClick:function(){return s("disengageHandle")}}),(0,r.createComponentVNode)(2,i.Button,{icon:"toggle-on",disabled:l.isAI||l.panel_open,content:"Engaged",selected:l.flushing?"selected":null,onClick:function(){return s("engageHandle")}})]}),(0,r.createComponentVNode)(2,i.LabeledList.Item,{label:"Power",children:[(0,r.createComponentVNode)(2,i.Button,{icon:"toggle-off",disabled:-1===l.mode,content:"Off",selected:l.mode?null:"selected",onClick:function(){return s("pumpOff")}}),(0,r.createComponentVNode)(2,i.Button,{icon:"toggle-on",disabled:-1===l.mode,content:"On",selected:l.mode?"selected":null,onClick:function(){return s("pumpOn")}})]}),(0,r.createComponentVNode)(2,i.LabeledList.Item,{label:"Eject",children:(0,r.createComponentVNode)(2,i.Button,{icon:"sign-out-alt",disabled:l.isAI,content:"Eject Contents",onClick:function(){return s("eject")}})})]})]})})})}},function(e,t,n){"use strict";t.__esModule=!0,t.NtosStationAlertConsole=void 0;var r=n(2),o=n(48),i=n(167);t.NtosStationAlertConsole=function(){return(0,r.createComponentVNode)(2,o.NtosWindow,{resizable:!0,children:(0,r.createComponentVNode)(2,o.NtosWindow.Content,{scrollable:!0,children:(0,r.createComponentVNode)(2,i.StationAlertConsoleContent)})})}}]);
\ No newline at end of file
diff --git a/tools/send2server.py b/tools/send2server.py
new file mode 100644
index 00000000000..fd255a3cfb5
--- /dev/null
+++ b/tools/send2server.py
@@ -0,0 +1,14 @@
+# Script to send world/Topic announcements to a server via automated tooling
+# Author: AffectedArc07
+# Takes a message as command line argument
+# Example: python send2server.py "This is a message that will be sent to the server"
+import socket, struct, urllib.parse, sys
+
+message = sys.argv[1]
+commskey = "YOURKEYHERE"
+
+sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+cmd = "?hostannounce&key={}&message={}".format(urllib.parse.quote(commskey), urllib.parse.quote(message))
+query = b"\x00\x83" + struct.pack('>H', len(cmd) + 6) + b"\x00\x00\x00\x00\x00" + cmd.encode() + b"\x00"
+sock.connect(("localhost", 6666))
+sock.sendall(query)
|