diff --git a/code/ATMOSPHERICS/components/shutoff.dm b/code/ATMOSPHERICS/components/shutoff.dm index 62587c44df..de69f5e395 100644 --- a/code/ATMOSPHERICS/components/shutoff.dm +++ b/code/ATMOSPHERICS/components/shutoff.dm @@ -1,3 +1,5 @@ +GLOBAL_LIST_EMPTY(shutoff_valves) + /obj/machinery/atmospherics/valve/shutoff icon = 'icons/atmos/clamp.dmi' icon_state = "map_vclamp0" @@ -18,8 +20,13 @@ /obj/machinery/atmospherics/valve/shutoff/Initialize() . = ..() open() + GLOB.shutoff_valves += src hide(1) +/obj/machinery/atmospherics/valve/shutoff/Destroy() + GLOB.shutoff_valves -= src + ..() + /obj/machinery/atmospherics/valve/shutoff/attack_ai(mob/user as mob) return src.attack_hand(user) diff --git a/code/game/machinery/computer/shutoff_monitor.dm b/code/game/machinery/computer/shutoff_monitor.dm new file mode 100644 index 0000000000..4dd79376c9 --- /dev/null +++ b/code/game/machinery/computer/shutoff_monitor.dm @@ -0,0 +1,42 @@ +/obj/machinery/computer/shutoff_monitor + name = "automated shutoff valve monitor" + desc = "Console used to remotely monitor shutoff valves on the station." + icon_keyboard = "power_key" + icon_screen = "power:0" + light_color = "#a97faa" + circuit = /obj/item/weapon/circuitboard/shutoff_monitor + +/obj/machinery/computer/shutoff_monitor/attack_hand(var/mob/user) + ..() + ui_interact(user) + +/obj/machinery/computer/shutoff_monitor/attack_robot(var/mob/user) // Borgs and AI will want to see this too + ..() + ui_interact(user) + +/obj/machinery/computer/shutoff_monitor/attack_ai(var/mob/user) + ui_interact(user) + +/obj/machinery/computer/shutoff_monitor/ui_interact(mob/user, ui_key = "shutoff_monitor", var/datum/nanoui/ui = null, var/force_open = 1, var/key_state = null) + var/data[0] + data["valves"] = list() + for(var/obj/machinery/atmospherics/valve/shutoff/S in GLOB.shutoff_valves) + data["valves"][++data["valves"].len] = list("name" = S.name, "enable" = S.close_on_leaks, "open" = S.open, "x" = S.x, "y" = S.y, "z" = S.z) + + // update the ui if it exists, returns null if no ui is passed/found + ui = SSnanoui.try_update_ui(user, src, ui_key, ui, data, force_open) + if(!ui) + // the ui does not exist, so we'll create a new() one + // for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm + ui = new(user, src, ui_key, "shutoff_monitor.tmpl", "Automated Shutoff Valve Monitor", 625, 700, state = key_state) + // when the ui is first opened this is the data it will use + ui.set_initial_data(data) + // open the new ui window + ui.open() + // auto update every 20 Master Controller tick + ui.set_auto_update(20) // Longer term to reduce the rate of data collection and processing + +/obj/machinery/computer/shutoff_monitor/update_icon() + ..() + if(!(stat & (NOPOWER|BROKEN))) + overlays += image('icons/obj/computer.dmi', "ai-fixer-empty", overlay_layer) diff --git a/code/game/objects/items/weapons/circuitboards/computer/computer.dm b/code/game/objects/items/weapons/circuitboards/computer/computer.dm index 8bc26a13f1..2190650d67 100644 --- a/code/game/objects/items/weapons/circuitboards/computer/computer.dm +++ b/code/game/objects/items/weapons/circuitboards/computer/computer.dm @@ -191,3 +191,8 @@ name = T_BOARD("RCON remote control console") build_path = /obj/machinery/computer/rcon origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_POWER = 5) + +/obj/item/weapon/circuitboard/shutoff_monitor + name = T_BOARD("automatic shutoff valve monitor") + build_path = /obj/machinery/computer/shutoff_monitor + origin_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4) \ No newline at end of file diff --git a/code/modules/research/designs/circuits.dm b/code/modules/research/designs/circuits.dm index e2824361bf..fa53ecdd42 100644 --- a/code/modules/research/designs/circuits.dm +++ b/code/modules/research/designs/circuits.dm @@ -287,6 +287,13 @@ CIRCUITS BELOW build_path = /obj/item/weapon/circuitboard/solar_control sort_string = "JAAAF" +/datum/design/circuit/shutoff_monitor + name = "Automatic shutoff valve monitor" + id = "shutoff_monitor" + req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3) + build_path = /obj/item/weapon/circuitboard/shutoff_monitor + sort_string = "JAAAG" + /datum/design/circuit/pacman name = "PACMAN-type generator" id = "pacman" diff --git a/html/changelogs/Atermonera - Shutoff monitor.yml b/html/changelogs/Atermonera - Shutoff monitor.yml new file mode 100644 index 0000000000..cf2408d560 --- /dev/null +++ b/html/changelogs/Atermonera - Shutoff monitor.yml @@ -0,0 +1,4 @@ +author: Atermonera +delete-after: True +changes: + - rscadd: "Added a shutoff monitoring console, which displays the status and location of all automatic shutoff valves. Currently mapped into the atmos monitoring room and the auxiliary engineering room on deck 1." \ No newline at end of file diff --git a/maps/southern_cross/southern_cross-1.dmm b/maps/southern_cross/southern_cross-1.dmm index 2885ea1322..aae7a8f826 100644 --- a/maps/southern_cross/southern_cross-1.dmm +++ b/maps/southern_cross/southern_cross-1.dmm @@ -2074,7 +2074,7 @@ "aNT" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/powered/pump/filled,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled,/area/engineering/auxiliary_engineering) "aNU" = (/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{dir = 1},/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) "aNV" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"},/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) -"aNW" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"},/obj/structure/table/steel,/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 6},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) +"aNW" = (/obj/machinery/atmospherics/valve/shutoff{name = "Deck 1 Central automatic shutoff valve"},/turf/simulated/floor/plating,/area/maintenance/substation/firstdeck) "aNX" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"},/obj/effect/wingrille_spawn/reinforced,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/engineering/auxiliary_engineering) "aNY" = (/obj/machinery/atmospherics/binary/passive_gate{dir = 8; target_pressure = 4500},/obj/machinery/camera/network/engineering{c_tag = "ENG - Auxiliary Engineering Station"; dir = 4},/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) "aNZ" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"},/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) @@ -2082,7 +2082,7 @@ "aOb" = (/obj/machinery/atmospherics/pipe/simple/visible/red,/obj/machinery/atmospherics/pipe/simple/visible/cyan{dir = 4; icon_state = "intact"},/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) "aOc" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan,/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) "aOd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/substation/firstdeck) -"aOe" = (/obj/machinery/atmospherics/valve/shutoff,/turf/simulated/floor/plating,/area/maintenance/substation/firstdeck) +"aOe" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4; icon_state = "intact"},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/computer/shutoff_monitor,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) "aOf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/firstdeck/aftstarboard) "aOg" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/firstdeck/aftstarboard) "aOh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/plating,/area/maintenance/firstdeck/aftstarboard) @@ -2152,7 +2152,7 @@ "aPt" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/powered/pump/filled,/obj/machinery/light,/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled,/area/engineering/auxiliary_engineering) "aPu" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 9; icon_state = "intact"},/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) "aPv" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) -"aPw" = (/obj/structure/table/steel,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) +"aPw" = (/obj/structure/table/steel,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 6},/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) "aPx" = (/obj/machinery/door/firedoor/border_only,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/engineering/auxiliary_engineering) "aPy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) "aPz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/steel_dirty,/area/engineering/auxiliary_engineering) @@ -3954,7 +3954,7 @@ "byb" = (/obj/structure/table/reinforced,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/machinery/newscaster{pixel_y = -30},/obj/effect/floor_decal/borderfloor{dir = 10},/obj/effect/floor_decal/corner/yellow/border{dir = 10},/turf/simulated/floor/tiled,/area/engineering/atmos/monitoring) "byc" = (/obj/effect/floor_decal/borderfloor/corner{dir = 8},/obj/effect/floor_decal/corner/yellow/bordercorner{dir = 8},/turf/simulated/floor/tiled,/area/engineering/atmos/monitoring) "byd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 8},/turf/simulated/floor/tiled,/area/engineering/atmos/monitoring) -"bye" = (/obj/effect/floor_decal/borderfloor/corner,/obj/effect/floor_decal/corner/yellow/bordercorner,/turf/simulated/floor/tiled,/area/engineering/atmos/monitoring) +"bye" = (/obj/effect/floor_decal/borderfloor/corner,/obj/effect/floor_decal/corner/yellow/bordercorner,/obj/machinery/computer/shutoff_monitor,/turf/simulated/floor/tiled,/area/engineering/atmos/monitoring) "byf" = (/obj/machinery/computer/atmoscontrol,/obj/structure/extinguisher_cabinet{pixel_x = 28; pixel_y = 0},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/yellow/border{dir = 6},/turf/simulated/floor/tiled,/area/engineering/atmos/monitoring) "byg" = (/obj/structure/table/steel,/obj/item/weapon/paper{info = "The big blue box recently installed in here is a 'grid checker' which will shut off the power if a dangerous power spike from the engine erupts into the powernet. Shutting everything down protects everything from electrical damage, however the outages can be disruptive to colony operations, so it is designed to restore power after a somewhat significant delay, up to ten minutes or so. The grid checker can be manually hacked in order to end the outage sooner. To do that, you must cut three specific wires which do not cause a red light to shine, then pulse a fourth wire. Electrical protection is highly recommended when doing maintenance on the grid checker."; name = "grid checker info"},/turf/simulated/floor/plating,/area/maintenance/substation/engineering) "byh" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/light/small,/turf/simulated/floor/plating,/area/maintenance/substation/engineering) @@ -11009,7 +11009,7 @@ "edK" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals4,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/hallway/primary/thirddeck/port) "edL" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/thirddeck/port) "edM" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/tiled,/area/hallway/primary/thirddeck/port) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11134,7 +11134,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalsalsaltaltaltaluanDanDalualtaltaltanEaeFanFanGanHanHanIanHanHanJanKanLanManNanNanNanNanOamtaeFanPaioadladlaaaaaaajpanQanRanSanianiaoJaoKanialHanVanWanXanYanZanZaoaaobaocaodaoealIaofalIaogalIalIaohaoiaojajxaaaaaaadFadFaiyaokaeZaolaomaonaonaonaonaooaopaoqaoraosaosaotaosaosaouaovaeZdXOdXQdXPdXRapiatLdXSapidXUdXWdXVdXXaSNaSNdXYaSNaZYdXZcfodXHdYadXodYbdYcdXJdXMdXLdXKdYddXodXodYfdYedXoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaakLatTatTakLakLakLakLaoxaoxaoyaoyaoyaoyaoyaeFaeFaeFaeFaeFaeFaeFaeFaozahcaoAaeFaoBaoBaoBaeFaeFaeFaeFafMaoCaoDadlaaaaaaajpaoEaoFaoGaoHaoIapOarganialHanjaoLaoMaoNaEyanZaoOaoPaoQaoRaoSaoTaoUaoVaoWaoXalIaoYaoZapaajxaaaaaaadFapbapcapdaeZaeZaeZaikapeapeapeaikapfaikapgaikaeZaeZaeZaeZaeZaeZaeZaphaphaphaphaphdYgdYgalralralralralralrdYidYhalralrdXZdYjdYkdWHdXodYldXKdXJdXMdXLdXKdYldXodYmdYodYndXodXoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafakLakLapjapkaplapmapnakLapoapoappapqaprapsaptapuapvapwapxapyapyapzapuapAapAapBapCapDapEapFapCapGafMadlapHapIapJadlaaaaaaajpapKapLapManiapNaNGaNHanialHanjanjanjanjanjapPapQapQapQapRapSapTapUapVapWapXalIapYapZaqaajxaaaaaaadFaqbaghaqcaqdaqeaqfaqgaqhaqiaqjaqgaqkaqlaqlaqmaqnaqoaqoaqpaqqaqraqmaqsaqtaquaqvaqwaqxaqxalraqydYpaqAaqBaqCalOdYqatMalrdYtdYsdXodXodXodYudYwdYvdYydYxdYAdYzdXodYBdYDdYCdYFdYEdYGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaakLakLaqDaqDapkaqEaqFaqFaqGaqHaqIaqJaqKaqLaqMaqNapuapvaqOaqPapyapyapyapuaqQaqQaqRaqSaqTaqUaqVapCaqWaqXaqYaqZaraarbadlaaaaaaajoarcardareaniarfaOdaOeanialHarhariarjarkarlarmarnarkaroarparqarrarsartaruarvalIarwapZarxajwaaaaaaadFaryaghaghaghaghagharzarAarBarCarDarEarFarFaqmarGarHaqoarIaqqaqqaqmarJarKarLdYHarNarOarPdYIarRarRarRarRarRarRalOalralrdYKdYJdXodYLdYNdYMaShdYOdYRdYQaShdYSdYUdYTdYWdYVdXodXodXodXodXoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaadaaaaaaakLakLaqDaqDapkaqEaqFaqFaqGaqHaqIaqJaqKaqLaqMaqNapuapvaqOaqPapyapyapyapuaqQaqQaqRaqSaqTaqUaqVapCaqWaqXaqYaqZaraarbadlaaaaaaajoarcardareaniarfaOdaNWanialHarhariarjarkarlarmarnarkaroarparqarrarsartaruarvalIarwapZarxajwaaaaaaadFaryaghaghaghaghagharzarAarBarCarDarEarFarFaqmarGarHaqoarIaqqaqqaqmarJarKarLdYHarNarOarPdYIarRarRarRarRarRarRalOalralrdYKdYJdXodYLdYNdYMaShdYOdYRdYQaShdYSdYUdYTdYWdYVdXodXodXodXodXoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaakLarSapkakLakLakLakLakLakLarTarUarUarUarVarWarXapuarYapyaqParZasaasbapuascasdaseapCasfasgashapCasiasjaskaslasmasnadlasoasoaspasqasrajSamxarfaOdaOzanialHalHalHalHalHalHalHalHalHalHalHalIalIalIamHassastalIasuasvaswasxasyasyadFaszaghasAasAasAasAaqgasBasCasDaqgasEasFasGaqmasHasIasJarIasKaqqaqmasLasMasNasOasOasOaphalralralralralralralOalPalrdYXdYYdXHdZadYZdZcdZbdZedZddZfdZddZgdZddZhdZddZjdZidZldZkdZndZmdXoaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaakLasPapkakLasQasQasQasQasQarTasRasSasTasUasVasWasXasYapuasZapuapuapuapuataatbatcatdapCapCapCapCateadlarUarUadlatfarUatgathatiatjatkatlatmatmaOWaOXatmaurauraurauratoatoatoatoatoatpatqatratsattatuatvatwatpatxatyatzatAatBatCatDatEadFatDatDatDatDaqgaqgaqgaqgatFatGatHatIaqmaqmaqmaqmatJaqmatKaSzatNbDEatOatDatPatQatRatSatSatSatSatSalralOalOalrdZodZqdZpdZsdZrdZtdZbdZudYTdYTdYTdZwdZvdZxdZbdZzdZydZAdXKdZBdXKdXoaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaafaaaaaaaaaatTatUapkakLasQasQasQasQasQatVatWatXatYatZauaaubaucaudatZaueaucaufatWaugauhauiaujaukaukaukaulaumaunauoaupauqauzausautauuaukauvauwauxauyauBauDauCauFauEavLauGavMauratoatoatoatoatoatpauIauJauKattauLauMauNatpauOauPauQauRauSauTauUauVauWauXauYauZavaavbauRavcauSauSavdasFauRaveavfavgavaavhauRaviavaavjavkauRavlavmauSavnatSatSatSatSatSalravoalOalrdZCdZEdZDdZGdZFdZbdZbdZHdZbdZbdZbdZbdZbdZIdZbdZKdZJdZLdXKdXKdXKdXoaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11159,7 +11159,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaCsaLAaFOaFQaFQaFQaFQaFQaFQaFQaFRaEPaEPaEPaLBaLCaKJaKJaKJaKJaKJaKpaLDaLEaLFaKqaAcaAcaAcaLGaybaLHaKsaLIaLlaLJaKtaaaaaaaaaaaaaLKaLLaLMaLLaLNaaaaaaaLOaLOaLPaJUaLQaLRaLRaLRaLRaLRaLRaLSaLSaLSaLRaLRaLRaLRaKyaLTaLtaLUaKzaElaDkaDjaDjaLVaLWaGyaGyaKhaLXaLXaJwaLXaLXaKhaGyaGyaGBaLYaDjaDjaDjaafaafaafaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaCsaEEaFOaFQaFQaFQaFQaFQaFQaFQaFRaLZaEPaEPaFTaMaaKJaKJaKJaKJaKJaKpaKqaMbaKqaKqaMcaMdaMeaMfaMfaMgaKsaMhaLlaMiaKtaaaaaaaaaaaaaMjaMkaMlaMmaMjaaaaaaaaaaLOaMnaJUaMoaMpaMqaMraMsaMtaLSaMuebhaMwaMxaMybCFaLRaMAaMBaLtaLuaKzaMCaDjaDjaMDaMEaLWaGyaGyaHOaMFaKhaMGaKhaHlaHOaGyaGyaGBaMHaMIaDjaDkaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaCsaEEaFOaFPaFQaFQaFQaFQaFQaFPaFRaMJaMKaMLaMMaCsaMNaKJaKJaKJaKJaMfaDOaDOaDOaybaybaybaybaMfaMOaLHaKsaKsaMPaKsaKtaMQaMQaMQaMRaMjaMSaMTaMUaMjaMVaMQaMQaMQaMWaMXaMWaLRaMqaMYaMZaNbaNaaNdaNcaNfaNeaNgbCFaLRaKzaKzaNhaKzaKzaNiaDkaDjaNjaNkaLWaGyaGyaKhaNlaNmaJwaNmaNnaKhaGyaGyaGBaNkaJyaDjaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaCsaNoaNpaNqaNraNraNsaNtaNtaNuaNvaNwaCtaCtaCtaCsaMfaMfaMfaMfaMfaMfaNxaNxaNxaNyaNzaybaNAaNBaAcaNCaNDaNEaNFaPEaPiaMQaNIaNJaNKaNLaNMaNNaNMaNLaNOaNPaNQaMQaNRaNSaNRaLRaNTaNUaNVaNWaNXaNYaNZaOaaObaOcbCFaLRaPFaQjaOfaOgaOhaOiaAIaOjaOkaNkaGxaGyaGyaHOaHUaOlaOmaOnaHUaHOaGyaGyaGBaNkaJyaDjaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaCsaNoaNpaNqaNraNraNsaNtaNtaNuaNvaNwaCtaCtaCtaCsaMfaMfaMfaMfaMfaMfaNxaNxaNxaNyaNzaybaNAaNBaAcaNCaNDaNEaNFaPEaPiaMQaNIaNJaNKaNLaNMaNNaNMaNLaNOaNPaNQaMQaNRaNSaNRaLRaNTaNUaNVaOeaNXaNYaNZaOaaObaOcbCFaLRaPFaQjaOfaOgaOhaOiaAIaOjaOkaNkaGxaGyaGyaHOaHUaOlaOmaOnaHUaHOaGyaGyaGBaNkaJyaDjaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaafaafaafaCsaCsaOoaOpaOqaOqaOraOqaOqaOsaOtaOuaCuaDOaOvaAcaAcaAcaOwaAcaAcaAcaAcaAcaOxaAcaAcaOyaAcaAcaAcaAcaAcaAcaAcaQmaQkaMQaOAaOAaOBaOCaODaOEaOFaOGaOHaOAaOIaMQaIpaOJaOKaLRaOLaOMaONaOOaOPaOQaORaOSaOTaOUaOVaLRaQxaQyaOYaOZebiaPbaAIaDjaPcaNkaGxaGyaGyaGyaHOaPdaPeaPfaHOaGyaGyaGyaGBaNkaJyaDjaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaCsaCsaCOaDRaCOaCsaCOaDRaCOaCsaCsaCsaDOaOvaMfaFcaFcaFcaFcaFcaMfaPgaPhaMfaMfaMfaMfaMfaMfaMfaFcaFcebjaAcaQAaQzaMQaPjaOAaPkaPlaPlaPmaPnaPnaPoaOAaPpaMQaPqaPraPsaLRaPtaPuaPvaPwaPxaPyaPzaPAaPBaPCaPDaLRaQYaQZaPGaPHaFuaFuaPIaDjaDjaNkaPJaPKaPKaPKaPKaPKaPKaPKaPKaPKaPKaPKaPLaPMaDjaDjaafaafaafaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaCsaMfaMfaMfaaaaaaaaaaaaaaaaMfaMfaMfaMfaaaaaaaaaaafaaaaaaaaaaFcaFcaAcbqybpyaMQaPNaPOaPPaPQaPRaPSaPTaPUaPVaPWaNMaPXaPYaPZaKTaLRaLRaQaaQbaQcaLSaQdaQeaQfaQgaQhaQiaLRbrrbwSaQlaFuaFuaaaaaaaaaaDjaDjaDjaDjaDjaDjaDjaDjaDjaDjaDjaDjaDjaDjaDjaDjaDjaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11783,3 +11783,4 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa dUOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} + diff --git a/nano/css/shared.css b/nano/css/shared.css index 69d9e1637d..c79d603d94 100644 --- a/nano/css/shared.css +++ b/nano/css/shared.css @@ -190,6 +190,10 @@ h4 { background: #ea0000; } +.greenButton { + background: #00aa00; +} + .yellowButton { background: #cacc00; } diff --git a/nano/templates/shutoff_monitor.tmpl b/nano/templates/shutoff_monitor.tmpl new file mode 100644 index 0000000000..eef6ea4a38 --- /dev/null +++ b/nano/templates/shutoff_monitor.tmpl @@ -0,0 +1,18 @@ +

Automated Shutoff Valve Monitoring Console

+
+{{for data.valves}} +
+
+ {{:value.name}} +
+
+ + {{:helper.link(value.open ? 'Open' : 'Closed', 'alert', null, 'disabled', value.open ? 'greenButton' : 'redButton')}} + {{:helper.link(value.enable ? 'Enabled' : 'Disabled', 'alert', null, 'disabled', value.enable ? 'greenButton' : 'redButton')}} + + + Coordinates: ({{:value.x}}, {{:value.y}}, {{:value.z}}) + +
+
+{{/for}} \ No newline at end of file diff --git a/polaris.dme b/polaris.dme index 5614d5a0ca..28a01d08cd 100644 --- a/polaris.dme +++ b/polaris.dme @@ -723,6 +723,7 @@ #include "code\game\machinery\computer\RCON_Console.dm" #include "code\game\machinery\computer\robot.dm" #include "code\game\machinery\computer\security.dm" +#include "code\game\machinery\computer\shutoff_monitor.dm" #include "code\game\machinery\computer\shuttle.dm" #include "code\game\machinery\computer\skills.dm" #include "code\game\machinery\computer\specops_shuttle.dm"