From 5a0aa4afdd12eb06c446e9bbdceace4727d7d86e Mon Sep 17 00:00:00 2001
From: KingMcDonalds
Date: Sat, 7 Sep 2024 14:08:09 -0700
Subject: [PATCH] lock door script
---
resources/cd_doorlock/.fxap | Bin 0 -> 178 bytes
.../door_data.json | 1 +
.../gabz_locations/247_barbareno_ave.json | 1 +
.../gabz_locations/247_clifton_ave.json | 1 +
.../gabz_locations/247_ineseno_rd.json | 1 +
.../gabz_locations/247_innocence_blvd.json | 1 +
.../gabz_locations/247_paleto.json | 1 +
.../gabz_locations/247_palomino_fwy.json | 1 +
.../gabz_locations/247_sandy.json | 1 +
.../gabz_locations/247_senora_fwy_1.json | 1 +
.../gabz_locations/247_senora_fwy_2.json | 1 +
.../gabz_locations/altruists.json | 1 +
.../gabz_locations/ammunition_chumash.json | 1 +
.../ammunition_cypress_flats.json | 1 +
.../gabz_locations/ammunition_hawick.json | 1 +
.../gabz_locations/ammunition_la_mesa.json | 1 +
.../gabz_locations/ammunition_legion.json | 1 +
.../ammunition_little_seoul.json | 1 +
.../ammunition_morningwood.json | 1 +
.../gabz_locations/ammunition_paleto.json | 1 +
.../gabz_locations/ammunition_route_68.json | 1 +
.../gabz_locations/ammunition_sandy.json | 1 +
.../ammunition_tataviam_mountains.json | 1 +
.../gabz_locations/aztecas.json | 1 +
.../gabz_locations/bahama_mamas.json | 1 +
.../gabz_locations/ballas.json | 1 +
.../barbershop_alhambradrive.json | 1 +
.../gabz_locations/barbershop_carsonave.json | 1 +
.../gabz_locations/barbershop_hawickave.json | 1 +
.../barbershop_magellanave.json | 1 +
.../gabz_locations/barbershop_mirrorpark.json | 1 +
.../gabz_locations/barbershop_paleto.json | 1 +
.../gabz_locations/bean_machine.json | 1 +
.../gabz_locations/bennys.json | 1 +
.../gabz_locations/binco_grapeseed.json | 1 +
.../gabz_locations/binco_innocence_blvd.json | 1 +
.../gabz_locations/binco_paleto.json | 1 +
.../gabz_locations/binco_palomino_ave.json | 1 +
.../gabz_locations/binco_rt68_1.json | 1 +
.../gabz_locations/binco_rt68_2.json | 1 +
.../gabz_locations/binco_sinner_ave.json | 1 +
.../gabz_locations/bolingbroke_prison.json | 1 +
.../gabz_locations/bowling_alley.json | 1 +
.../gabz_locations/davis_pd.json | 1 +
.../gabz_locations/families.json | 1 +
.../gabz_locations/fire_station.json | 1 +
.../gabz_locations/harmony_repair.json | 1 +
.../gabz_locations/haters.json | 1 +
.../gabz_locations/hayes_auto.json | 1 +
.../gabz_locations/import_garage.json | 1 +
.../gabz_locations/impound_lot.json | 1 +
.../gabz_locations/la_mesa_pd.json | 1 +
.../gabz_locations/legion_ammu.json | 1 +
.../gabz_locations/lost_mc.json | 1 +
.../gabz_locations/ls_customs.json | 1 +
.../gabz_locations/ltd_grove.json | 1 +
.../gabz_locations/marabunta.json | 1 +
.../gabz_locations/mba.json | 5 +
.../gabz_locations/mba_mma.json | 5 +
.../gabz_locations/mrpd.json | 1 +
.../gabz_locations/ottos.json | 1 +
.../gabz_locations/pacific_bank.json | 1 +
.../gabz_locations/paleto_bank.json | 1 +
.../gabz_locations/paleto_pd.json | 1 +
.../gabz_locations/park_rangers.json | 1 +
.../gabz_locations/pillbox.json | 1 +
.../gabz_locations/pizzeria.json | 1 +
.../gabz_locations/ponsonbys.json | 1 +
.../gabz_locations/pops_diner.json | 1 +
.../premium_deluxe_motorsport.json | 1 +
.../gabz_locations/record_a_studios.json | 1 +
.../gabz_locations/sandy_pd.json | 1 +
.../suburban_greatoceanhighway.json | 1 +
.../gabz_locations/suburban_hawickave.json | 1 +
.../suburban_prosperitystreet.json | 1 +
.../gabz_locations/suburban_route68.json | 1 +
.../gabz_locations/tattoo_chumash.json | 1 +
.../gabz_locations/tattoo_el_burro.json | 5 +
.../gabz_locations/tattoo_paleto.json | 1 +
.../gabz_locations/tattoo_sandy.json | 1 +
.../gabz_locations/tattoo_vespucci.json | 1 +
.../gabz_locations/tattoo_vinewood.json | 1 +
.../gabz_locations/town_hall.json | 1 +
.../gabz_locations/triad_records.json | 1 +
.../gabz_locations/triads.json | 1 +
.../gabz_locations/tuner_shop.json | 1 +
.../gabz_locations/uwu_cafe.json | 5 +
.../gabz_locations/vagos.json | 1 +
.../gabz_locations/vanilla_unicorn.json | 1 +
.../gabz_locations/weed_camp.json | 1 +
.../location_groups.json | 1 +
.../READ_ME_AFTER_PURCHASING/READ_ME.md | 1 +
resources/cd_doorlock/client/client.lua | Bin 0 -> 26815 bytes
resources/cd_doorlock/client/functions.lua | 75 +++
.../configs/client_customise_me.lua | 334 +++++++++++++
resources/cd_doorlock/configs/config.lua | 198 ++++++++
resources/cd_doorlock/configs/config_ui.js | 13 +
resources/cd_doorlock/configs/locales.lua | 101 ++++
resources/cd_doorlock/configs/locales_ui.js | 198 ++++++++
.../configs/server_customise_me.lua | 464 ++++++++++++++++++
.../cd_doorlock/configs/server_webhooks.lua | 52 ++
resources/cd_doorlock/fxmanifest.lua | 69 +++
resources/cd_doorlock/html/assets/index.css | 1 +
resources/cd_doorlock/html/assets/index.js | 30 ++
.../css/vendor/bootstrap-custom-1.0.0.min.css | 6 +
.../html/css/vendor/bootstrap.min.css | 7 +
resources/cd_doorlock/html/fonts/vcr.woff2 | Bin 0 -> 17992 bytes
resources/cd_doorlock/html/index.html | 21 +
resources/cd_doorlock/server/read_files.js | 40 ++
resources/cd_doorlock/server/server.lua | Bin 0 -> 10200 bytes
.../cd_doorlock/server/version_check.lua | 61 +++
resources/cd_doorlock/sounds/_key_press.ogg | Bin 0 -> 8530 bytes
.../cd_doorlock/sounds/_notification.ogg | Bin 0 -> 7873 bytes
resources/cd_doorlock/sounds/door_click.ogg | Bin 0 -> 16533 bytes
resources/cd_doorlock/sounds/door_metal.ogg | Bin 0 -> 15918 bytes
resources/cd_doorlock/sounds/door_regular.ogg | Bin 0 -> 9134 bytes
resources/cd_doorlock/sounds/door_squeak.ogg | Bin 0 -> 25834 bytes
resources/cd_doorlock/sounds/door_switch.ogg | Bin 0 -> 13986 bytes
resources/cd_doorlock/sounds/door_wooden.ogg | Bin 0 -> 27278 bytes
server.cfg | 2 +-
120 files changed, 1778 insertions(+), 1 deletion(-)
create mode 100644 resources/cd_doorlock/.fxap
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/door_data.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_barbareno_ave.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_clifton_ave.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_ineseno_rd.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_innocence_blvd.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_paleto.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_palomino_fwy.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_sandy.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_senora_fwy_1.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_senora_fwy_2.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/altruists.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_chumash.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_cypress_flats.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_hawick.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_la_mesa.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_legion.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_little_seoul.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_morningwood.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_paleto.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_route_68.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_sandy.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_tataviam_mountains.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/aztecas.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/bahama_mamas.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ballas.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_alhambradrive.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_carsonave.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_hawickave.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_magellanave.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_mirrorpark.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_paleto.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/bean_machine.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/bennys.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_grapeseed.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_innocence_blvd.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_paleto.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_palomino_ave.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_rt68_1.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_rt68_2.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_sinner_ave.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/bolingbroke_prison.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/bowling_alley.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/davis_pd.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/families.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/fire_station.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/harmony_repair.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/haters.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/hayes_auto.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/import_garage.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/impound_lot.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/la_mesa_pd.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/legion_ammu.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/lost_mc.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ls_customs.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ltd_grove.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/marabunta.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/mba.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/mba_mma.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/mrpd.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ottos.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/pacific_bank.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/paleto_bank.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/paleto_pd.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/park_rangers.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/pillbox.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/pizzeria.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ponsonbys.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/pops_diner.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/premium_deluxe_motorsport.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/record_a_studios.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/sandy_pd.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/suburban_greatoceanhighway.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/suburban_hawickave.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/suburban_prosperitystreet.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/suburban_route68.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_chumash.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_el_burro.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_paleto.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_sandy.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_vespucci.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_vinewood.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/town_hall.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/triad_records.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/triads.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tuner_shop.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/uwu_cafe.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/vagos.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/vanilla_unicorn.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/weed_camp.json
create mode 100644 resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/location_groups.json
create mode 100644 resources/cd_doorlock/READ_ME_AFTER_PURCHASING/READ_ME.md
create mode 100644 resources/cd_doorlock/client/client.lua
create mode 100644 resources/cd_doorlock/client/functions.lua
create mode 100644 resources/cd_doorlock/configs/client_customise_me.lua
create mode 100644 resources/cd_doorlock/configs/config.lua
create mode 100644 resources/cd_doorlock/configs/config_ui.js
create mode 100644 resources/cd_doorlock/configs/locales.lua
create mode 100644 resources/cd_doorlock/configs/locales_ui.js
create mode 100644 resources/cd_doorlock/configs/server_customise_me.lua
create mode 100644 resources/cd_doorlock/configs/server_webhooks.lua
create mode 100644 resources/cd_doorlock/fxmanifest.lua
create mode 100644 resources/cd_doorlock/html/assets/index.css
create mode 100644 resources/cd_doorlock/html/assets/index.js
create mode 100644 resources/cd_doorlock/html/css/vendor/bootstrap-custom-1.0.0.min.css
create mode 100644 resources/cd_doorlock/html/css/vendor/bootstrap.min.css
create mode 100644 resources/cd_doorlock/html/fonts/vcr.woff2
create mode 100644 resources/cd_doorlock/html/index.html
create mode 100644 resources/cd_doorlock/server/read_files.js
create mode 100644 resources/cd_doorlock/server/server.lua
create mode 100644 resources/cd_doorlock/server/version_check.lua
create mode 100644 resources/cd_doorlock/sounds/_key_press.ogg
create mode 100644 resources/cd_doorlock/sounds/_notification.ogg
create mode 100644 resources/cd_doorlock/sounds/door_click.ogg
create mode 100644 resources/cd_doorlock/sounds/door_metal.ogg
create mode 100644 resources/cd_doorlock/sounds/door_regular.ogg
create mode 100644 resources/cd_doorlock/sounds/door_squeak.ogg
create mode 100644 resources/cd_doorlock/sounds/door_switch.ogg
create mode 100644 resources/cd_doorlock/sounds/door_wooden.ogg
diff --git a/resources/cd_doorlock/.fxap b/resources/cd_doorlock/.fxap
new file mode 100644
index 0000000000000000000000000000000000000000..d0e103a88f48f49859626e99edc3ca014b78cefa
GIT binary patch
literal 178
zcmV;j08Rf!SV2$$000000GJxg4WrOH7Zl-{ulRTIhTCXAyoDE07tC&^{1RlKoJz`C
zEiBDNX90oReVFR)O=Hhe<*XI@n0+y$LB_);14Tvk@C4z0I#4edXBeaVAR$2Z4?(eJ
z%0fT9|MtUfU1bqB+uuCV9{U;6+K7v5A>`LkJg$a2V
g7qDq97DFWwNVE|q&=H<7h`bt(3fr{ZpK)#a&OwJ$qW}N^
literal 0
HcmV?d00001
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/door_data.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/door_data.json
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/door_data.json
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_barbareno_ave.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_barbareno_ave.json
new file mode 100644
index 000000000..b9ec52edf
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_barbareno_ave.json
@@ -0,0 +1 @@
+{"name":"247_barbareno_ave.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"24/7 Barbareno Rd","door_data":[{"unique_id":"OVMb8tnaXhPt9Mjv52r5n","model_hash":997554217,"text_dimensions":-1.30091333389282,"door_coords":{"x":-3239.898681640625,"y":1005.744873046875,"z":12.97670936584472}},{"unique_id":"5TmyMlEs30UEK3WWELHCh","model_hash":1196685123,"text_dimensions":-1.30091333389282,"door_coords":{"x":-3240.1220703125,"y":1003.1539306640624,"z":12.97670936584472}}],"door_name":"Entrance","default_state":false,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"24/7 Barbareno Rd","door_data":[{"unique_id":"91scw0VFPfuHABTiRy1oF","model_hash":1266035946,"text_dimensions":1.26322402569915,"door_coords":{"x":-3247.664794921875,"y":1000.241455078125,"z":12.98198986053466}}],"door_name":"Office","default_state":true,"state":true,"secret":false,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_clifton_ave.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_clifton_ave.json
new file mode 100644
index 000000000..1533dd92d
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_clifton_ave.json
@@ -0,0 +1 @@
+{"name":"247_clifton_ave.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Clifton Ave","door_data":[{"model_hash":1196685123,"unique_id":"TSEfCo1cShciJUFdTS9sB","text_dimensions":-1.30091333389282,"door_coords":{"x":375.3483276367188,"y":323.79681396484377,"z":103.71237182617188}},{"model_hash":997554217,"unique_id":"Pq5TFcXpie76cOmw2844u","text_dimensions":-1.30091333389282,"door_coords":{"x":377.8703918457031,"y":323.16259765625,"z":103.71237182617188}}],"door_name":"Entrance","secret":false,"state":false,"default_state":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Clifton Ave","door_data":[{"model_hash":1266035946,"unique_id":"jOm6EjixK8Nn6-3Fbnq6D","text_dimensions":1.26322402569915,"door_coords":{"x":373.6778259277344,"y":331.7078552246094,"z":103.7176513671875}}],"door_name":"Office","secret":false,"state":true,"default_state":true,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_ineseno_rd.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_ineseno_rd.json
new file mode 100644
index 000000000..40fbdf01c
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_ineseno_rd.json
@@ -0,0 +1 @@
+{"name":"247_ineseno_rd.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"24/7 Ineseno Rd","door_data":[{"model_hash":997554217,"unique_id":"-PtdqVTsrjnSb7NHZpzvv","text_dimensions":-1.30091333389282,"door_coords":{"x":-3039.006103515625,"y":590.7625122070313,"z":8.05492782592773}},{"model_hash":1196685123,"unique_id":"b0yKpuFoTx03s5cVOrZNB","text_dimensions":-1.30091333389282,"door_coords":{"x":-3038.212890625,"y":588.2858276367188,"z":8.05492782592773}}],"door_name":"Entrance","secret":false,"state":false,"default_state":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"24/7 Ineseno Rd","door_data":[{"model_hash":1266035946,"unique_id":"cuZbXEDUAvDaExZKe1Qjq","text_dimensions":1.26322402569915,"door_coords":{"x":-3044.048828125,"y":582.6897583007813,"z":8.06020927429199}}],"door_name":"Office","secret":false,"state":true,"default_state":true,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_innocence_blvd.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_innocence_blvd.json
new file mode 100644
index 000000000..bf23e9520
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_innocence_blvd.json
@@ -0,0 +1 @@
+{"name":"247_innocence_blvd.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Innocence Blvd","door_data":[{"unique_id":"uyxmAsf2ia9j-Pw9mDcP4","model_hash":1196685123,"text_dimensions":-1.30091333389282,"door_coords":{"x":27.81437492370605,"y":-1349.174560546875,"z":29.64302825927734}},{"unique_id":"aM0dOu02PxdXFjYFLi6VG","model_hash":997554217,"text_dimensions":-1.30091333389282,"door_coords":{"x":30.41495895385742,"y":-1349.174560546875,"z":29.64302825927734}}],"door_name":"Entrance","default_state":false,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Innocence Blvd","door_data":[{"unique_id":"vH0jbNGfCiLL1SOPfccF4","model_hash":1266035946,"text_dimensions":1.26322402569915,"door_coords":{"x":24.26502227783203,"y":-1341.9097900390626,"z":29.6483097076416}}],"door_name":"Office","default_state":true,"state":true,"secret":false,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_paleto.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_paleto.json
new file mode 100644
index 000000000..bdcc39d6f
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_paleto.json
@@ -0,0 +1 @@
+{"name":"247_paleto.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Paleto","door_data":[{"unique_id":"1q_sXeHzdgwCDPQ8dSzbo","model_hash":997554217,"text_dimensions":-1.30091333389282,"door_coords":{"x":163.40753173828126,"y":6636.09228515625,"z":31.8449478149414}},{"unique_id":"MWQDHzd0hbPzsm8-bjze_","model_hash":1196685123,"text_dimensions":-1.30091333389282,"door_coords":{"x":161.56863403320313,"y":6637.93115234375,"z":31.8449478149414}}],"door_name":"Entrance","camera":false,"state":false,"default_state":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Paleto","door_data":[{"unique_id":"YTKS7QC5t-x2CHdeowhBy","model_hash":1266035946,"text_dimensions":1.26322402569915,"door_coords":{"x":164.1958465576172,"y":6645.57763671875,"z":31.85022926330566}}],"door_name":"Office","camera":false,"state":true,"default_state":true,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_palomino_fwy.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_palomino_fwy.json
new file mode 100644
index 000000000..af89719ff
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_palomino_fwy.json
@@ -0,0 +1 @@
+{"name":"247_palomino_fwy.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Palomino Fwy","door_data":[{"unique_id":"SYK42esQuCMsVNidiiMgd","model_hash":997554217,"text_dimensions":-1.30091333389282,"door_coords":{"x":2559.309326171875,"y":386.6825866699219,"z":108.76897430419922}},{"unique_id":"VGxi0LHKfenMLKZqdUEOk","model_hash":1196685123,"text_dimensions":-1.30091333389282,"door_coords":{"x":2559.20556640625,"y":384.0840759277344,"z":108.76897430419922}}],"door_name":"Entrance","default_state":false,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Palomino Fwy","door_data":[{"unique_id":"-0-3Eiy2Ly7F0pRKz6cHj","model_hash":1266035946,"text_dimensions":1.26322402569915,"door_coords":{"x":2551.80517578125,"y":380.8270568847656,"z":108.77425384521485}}],"door_name":"Office","default_state":true,"state":true,"secret":false,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_sandy.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_sandy.json
new file mode 100644
index 000000000..11ddd61f0
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_sandy.json
@@ -0,0 +1 @@
+{"name":"247_sandy.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Sandy","door_data":[{"model_hash":1196685123,"unique_id":"hxlg2JniICt5K_r_cZcWj","text_dimensions":-1.30091333389282,"door_coords":{"x":1963.9178466796876,"y":3740.068603515625,"z":32.48976135253906}},{"model_hash":997554217,"unique_id":"nX-thzFEFEl2rPI6qBzqP","text_dimensions":-1.30091333389282,"door_coords":{"x":1966.1700439453128,"y":3741.368896484375,"z":32.48976135253906}}],"door_name":"Entrance","secret":false,"state":false,"default_state":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Sandy","door_data":[{"model_hash":1266035946,"unique_id":"HV7XlVBBa2zjw1hn9-iKO","text_dimensions":1.26322402569915,"door_coords":{"x":1957.2117919921876,"y":3744.58544921875,"z":32.49504089355469}}],"door_name":"Office","secret":false,"state":true,"default_state":true,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_senora_fwy_1.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_senora_fwy_1.json
new file mode 100644
index 000000000..8521635cd
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_senora_fwy_1.json
@@ -0,0 +1 @@
+{"name":"247_senora_fwy_1.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Senora Fwy 1","door_data":[{"model_hash":997554217,"unique_id":"h7vSO0boKUq-JMtnUdfHm","text_dimensions":-1.30091333389282,"door_coords":{"x":2682.56103515625,"y":3283.692626953125,"z":55.38714981079101}},{"model_hash":1196685123,"unique_id":"uq5_uqKuWOZiDDB9pYMy2","text_dimensions":-1.30091333389282,"door_coords":{"x":2681.294921875,"y":3281.421142578125,"z":55.38714981079101}}],"door_name":"Entrance","camera":false,"state":false,"default_state":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"24/7 Senora Fwy 1","door_data":[{"model_hash":1266035946,"unique_id":"A-yKGdBGkkbz313Nfk7pB","text_dimensions":1.26322402569915,"door_coords":{"x":2673.22119140625,"y":3281.857177734375,"z":55.3924331665039}}],"door_name":"Office","camera":false,"state":true,"default_state":true,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_senora_fwy_2.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_senora_fwy_2.json
new file mode 100644
index 000000000..75992147e
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/247_senora_fwy_2.json
@@ -0,0 +1 @@
+{"name":"247_senora_fwy_2.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"24/7 Senora Fwy 2","door_data":[{"model_hash":1196685123,"unique_id":"xFUJOGYaOCmq_u7pcVaLJ","text_dimensions":-1.30091333389282,"door_coords":{"x":1730.02587890625,"y":6412.068359375,"z":35.1832389831543}},{"model_hash":997554217,"unique_id":"w5EQXW0ZB918n4hlS6n7X","text_dimensions":-1.30091333389282,"door_coords":{"x":1732.3560791015626,"y":6410.9140625,"z":35.1832389831543}}],"door_name":"Entrance","secret":false,"state":false,"default_state":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"24/7 Senora Fwy 2","door_data":[{"model_hash":1266035946,"unique_id":"-I_2AYiwSE1bepHkKsTy1","text_dimensions":1.26322402569915,"door_coords":{"x":1730.0711669921876,"y":6420.154296875,"z":35.18852233886719}}],"door_name":"Office","secret":false,"state":true,"default_state":true,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/altruists.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/altruists.json
new file mode 100644
index 000000000..6fba9a0c0
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/altruists.json
@@ -0,0 +1 @@
+{"name":"altruists.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"altruist"}],"identifier":[]},"location_group":"Altruists","door_data":[{"model_hash":-1578791031,"unique_id":"Pcr0trKIdtIGaWAA0vF8w","text_dimensions":-4.83702678978443,"door_coords":{"x":-1044.7490234375,"y":4914.9716796875,"z":209.19322204589845}},{"model_hash":-13153749,"unique_id":"oHgenjNmHRS7H4JhUBPlY","text_dimensions":4.83666189014911,"door_coords":{"x":-1041.2327880859376,"y":4906.1005859375,"z":209.2002105712891}}],"door_name":"Gate","default_state":true,"state":true,"secret":false,"door_sound":"door_squeak.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"altruist"}],"identifier":[]},"location_group":"Altruists","door_data":[{"model_hash":825709191,"unique_id":"xhl0bDngyO4ooV6hkuQE-","text_dimensions":1.3916357755661,"door_coords":{"x":-1111.6304931640626,"y":4938.296875,"z":218.52578735351566}}],"door_name":"Entrance","default_state":true,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":3,"perms":{"job":[{"grade":0,"name":"altruist"}],"identifier":[]},"location_group":"Altruists","door_data":[{"model_hash":193467871,"unique_id":"SSwORWkwsEgj7UYPHrmlV","text_dimensions":1.39163494110107,"door_coords":{"x":-1108.4287109375,"y":4939.94140625,"z":218.5197906494141}}],"door_name":"Office","default_state":true,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":4,"perms":{"job":[{"grade":0,"name":"altruist"}],"identifier":[]},"location_group":"Altruists","door_data":[{"model_hash":193467871,"unique_id":"g-TPOYyu_L3gO-gqb2w76","text_dimensions":1.39163494110107,"door_coords":{"x":-1111.94873046875,"y":4939.740234375,"z":218.5197906494141}}],"door_name":"Toilet","default_state":true,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":5,"perms":{"job":[{"grade":0,"name":"altruist"}],"identifier":[]},"location_group":"Altruists","door_data":[{"model_hash":193467871,"unique_id":"VinE8-49ASMffoYVtPdG_","text_dimensions":1.39163494110107,"door_coords":{"x":-1109.154052734375,"y":4945.1005859375,"z":218.5197906494141}}],"door_name":"Planning Room","default_state":true,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":6,"perms":{"job":[{"grade":0,"name":"altruist"}],"identifier":[]},"location_group":"Altruists","door_data":[{"model_hash":193467871,"unique_id":"Lu_Y9V5jG34DvGgfZNhfj","text_dimensions":1.39163494110107,"door_coords":{"x":-1100.6943359375,"y":4946.94287109375,"z":218.5197906494141}}],"door_name":"Bar","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":7,"perms":{"job":[{"grade":0,"name":"altruist"}],"identifier":[]},"location_group":"Altruists","door_data":[{"model_hash":825709191,"unique_id":"UU2VZwn41Lj3A3HnlIINn","text_dimensions":1.3916357755661,"door_coords":{"x":-1102.2613525390626,"y":4940.4140625,"z":218.52578735351566}}],"door_name":"Entrance 2","default_state":true,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_chumash.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_chumash.json
new file mode 100644
index 000000000..6aa09a18e
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_chumash.json
@@ -0,0 +1 @@
+{"name":"ammunition_chumash.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Ammunition Chumash","door_data":[{"model_hash":-8873588,"unique_id":"42nrwG7r4ol078MIDmuA6","text_dimensions":-1.30482494086027,"door_coords":{"x":-3163.81494140625,"y":1083.7794189453126,"z":20.98863983154297}},{"model_hash":97297972,"unique_id":"GNeqZoMe0yv0gF81NJjMC","text_dimensions":-1.30065524578094,"door_coords":{"x":-3164.848388671875,"y":1081.39306640625,"z":20.98863983154297}}],"door_name":"Entrance","secret":false,"state":false,"camera":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_cypress_flats.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_cypress_flats.json
new file mode 100644
index 000000000..5bac53c59
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_cypress_flats.json
@@ -0,0 +1 @@
+{"name":"ammunition_cypress_flats.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Ammunition Cypress Flats","door_data":[{"unique_id":"OgkUO7E0xS4pTqkd7F047","model_hash":97297972,"text_dimensions":-1.30065524578094,"door_coords":{"x":813.1778564453125,"y":-2148.27001953125,"z":29.76892471313476}},{"unique_id":"Qkz-vvrvhGHcDoeaeM0r_","model_hash":-8873588,"text_dimensions":-1.30482494086027,"door_coords":{"x":810.5768432617188,"y":-2148.27001953125,"z":29.76892471313476}}],"door_name":"Entrance","secret":false,"state":false,"camera":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Ammunition Cypress Flats","door_data":[{"unique_id":"xJ83I2tQ3vGVfzEMcXWYm","model_hash":44561767,"text_dimensions":1.30005121603608,"door_coords":{"x":826.227783203125,"y":-2157.864990234375,"z":29.71937942504882}}],"door_name":"Shooting Range 1","secret":false,"state":false,"camera":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":3,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Ammunition Cypress Flats","door_data":[{"unique_id":"Ku4-v5aXAvvuftN2lzDnq","model_hash":44561767,"text_dimensions":1.30005121603608,"door_coords":{"x":826.227783203125,"y":-2160.490234375,"z":29.71937942504882}}],"door_name":"Shooting Range 2","secret":false,"state":false,"camera":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":4,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Ammunition Cypress Flats","door_data":[{"unique_id":"QhIDMZBKnii1c81FnK6iD","model_hash":44561767,"text_dimensions":1.30005121603608,"door_coords":{"x":827.2681884765625,"y":-2164.65380859375,"z":29.73662948608398}}],"door_name":"Shooting Range 3","secret":false,"state":true,"camera":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_hawick.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_hawick.json
new file mode 100644
index 000000000..bbc08ccea
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_hawick.json
@@ -0,0 +1 @@
+{"name":"ammunition_hawick.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Ammunition Hawick","door_data":[{"unique_id":"F4MTt71Z6mNWUxyek2QFl","model_hash":-8873588,"text_dimensions":-1.30482494086027,"door_coords":{"x":243.84117126464845,"y":-46.52396011352539,"z":70.09095001220703}},{"unique_id":"WDHopxqPVQebwh6ZL6qjq","model_hash":97297972,"text_dimensions":-1.30065524578094,"door_coords":{"x":244.7306365966797,"y":-44.0802116394043,"z":70.09095001220703}}],"door_name":"Entrance","secret":false,"state":false,"camera":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_la_mesa.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_la_mesa.json
new file mode 100644
index 000000000..6b9ace84c
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_la_mesa.json
@@ -0,0 +1 @@
+{"name":"ammunition_la_mesa.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Ammunition La Mesa","door_data":[{"model_hash":-8873588,"unique_id":"Ll4q5DZAhBZo4ab2zwrCp","text_dimensions":-1.30482494086027,"door_coords":{"x":842.7689208984375,"y":-1024.5428466796876,"z":28.34475135803222}},{"model_hash":97297972,"unique_id":"-sI1zpZJmZw1ZC0tjfTZ7","text_dimensions":-1.30065524578094,"door_coords":{"x":845.3695068359375,"y":-1024.5428466796876,"z":28.34475135803222}}],"door_name":"Entrance","default_state":false,"state":false,"camera":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_legion.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_legion.json
new file mode 100644
index 000000000..434eb7c00
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_legion.json
@@ -0,0 +1 @@
+{"name":"ammunition_legion.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Legion Ammunation","door_data":[{"unique_id":"nbHXWzKoSc4ApI78V6BJw","model_hash":97297972,"text_dimensions":-1.30065524578094,"door_coords":{"x":16.12786865234375,"y":-1114.605224609375,"z":29.94693565368652}},{"unique_id":"8yYae-C57bhKVjbGK7Ey_","model_hash":-8873588,"text_dimensions":-1.30482494086027,"door_coords":{"x":18.5720100402832,"y":-1115.4947509765626,"z":29.94693565368652}}],"door_name":"Entrance","camera":false,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"default_state":true,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Legion Ammunation","door_data":[{"unique_id":"GfkAgH-8LefLBG7RmppsJ","model_hash":44561767,"text_dimensions":1.30005121603608,"door_coords":{"x":7.14657020568847,"y":-1101.1256103515626,"z":29.89739036560058}}],"door_name":"Shooting Range 1","camera":false,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":3,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Legion Ammunation","door_data":[{"unique_id":"Y7COFgBk8mUyhUiu6y057","model_hash":44561767,"text_dimensions":1.30005121603608,"door_coords":{"x":8.04443550109863,"y":-1098.65869140625,"z":29.89739036560058}}],"door_name":"Shooting Range 2","camera":false,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":4,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Legion Ammunation","door_data":[{"unique_id":"uf-m_G0-qE-C7XtOA3cE5","model_hash":44561767,"text_dimensions":1.30005121603608,"door_coords":{"x":8.49085712432861,"y":-1094.3902587890626,"z":29.91464042663574}}],"door_name":"Shooting Range 3","camera":false,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_little_seoul.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_little_seoul.json
new file mode 100644
index 000000000..a2db6713e
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_little_seoul.json
@@ -0,0 +1 @@
+{"name":"ammunition_little_seoul.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Ammunition Chumash","door_data":[{"model_hash":-8873588,"unique_id":"42nrwG7r4ol078MIDmuA6","text_dimensions":-1.30482494086027,"door_coords":{"x":-3163.81494140625,"y":1083.7794189453126,"z":20.98863983154297}},{"model_hash":97297972,"unique_id":"GNeqZoMe0yv0gF81NJjMC","text_dimensions":-1.30065524578094,"door_coords":{"x":-3164.848388671875,"y":1081.39306640625,"z":20.98863983154297}}],"door_name":"Entrance","secret":false,"state":false,"camera":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Ammunition Little Seoul","door_data":[{"model_hash":-8873588,"unique_id":"WgX5-UtzeEA2qdHrmV_rv","text_dimensions":-1.30482494086027,"door_coords":{"x":-662.6419067382813,"y":-944.3221435546876,"z":21.97912979125976}},{"model_hash":97297972,"unique_id":"DoBpWy6QaChGk5N7dZ35u","text_dimensions":-1.30065524578094,"door_coords":{"x":-665.2424926757813,"y":-944.3221435546876,"z":21.97912979125976}}],"door_name":"Entrance","secret":false,"state":false,"camera":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_morningwood.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_morningwood.json
new file mode 100644
index 000000000..7d745ef39
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_morningwood.json
@@ -0,0 +1 @@
+{"name":"ammunition_morningwood.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Ammunition Morningwood","door_data":[{"unique_id":"lJsN8TI5kfGMO_ZMt6ctW","model_hash":-8873588,"text_dimensions":-1.30482494086027,"door_coords":{"x":-1314.461669921875,"y":-391.6475524902344,"z":36.845703125}},{"unique_id":"yJSqd0UGMaeVc_EhtJb6x","model_hash":97297972,"text_dimensions":-1.30065524578094,"door_coords":{"x":-1313.82275390625,"y":-389.1266479492188,"z":36.84570693969726}}],"door_name":"Entrance","camera":false,"state":false,"secret":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_paleto.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_paleto.json
new file mode 100644
index 000000000..e762eedb7
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_paleto.json
@@ -0,0 +1 @@
+{"name":"ammunition_paleto.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Ammunition Paleto","door_data":[{"unique_id":"__xql00Satt4a0JIeZ-HC","model_hash":-8873588,"text_dimensions":-1.30482494086027,"door_coords":{"x":-324.2757263183594,"y":6077.111328125,"z":31.60467720031738}},{"unique_id":"WGKld9NztDBobEWZajB8z","model_hash":97297972,"text_dimensions":-1.30065524578094,"door_coords":{"x":-326.1146240234375,"y":6075.2724609375,"z":31.60467720031738}}],"door_name":"Entrance","default_state":false,"state":false,"secret":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_route_68.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_route_68.json
new file mode 100644
index 000000000..edb1e9e2f
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_route_68.json
@@ -0,0 +1 @@
+{"name":"ammunition_route_68.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Ammunition Route 68","door_data":[{"unique_id":"bts5TB-oW1aJGyGO3x3Ep","model_hash":97297972,"text_dimensions":-1.30065524578094,"door_coords":{"x":-1114.0111083984376,"y":2689.773193359375,"z":18.70404052734375}},{"unique_id":"p64zYLOxypnsP9uIkFyKu","model_hash":-8873588,"text_dimensions":-1.30482494086027,"door_coords":{"x":-1112.0732421875,"y":2691.507568359375,"z":18.70404052734375}}],"door_name":"Entrance","camera":false,"state":false,"default_state":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_sandy.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_sandy.json
new file mode 100644
index 000000000..91daf82ed
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_sandy.json
@@ -0,0 +1 @@
+{"name":"ammunition_sandy.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Ammunition Sandy","door_data":[{"unique_id":"ZOGPzyDA4EMwVoQ_zN7S1","model_hash":-8873588,"text_dimensions":-1.30482494086027,"door_coords":{"x":1699.9344482421876,"y":3753.422119140625,"z":34.85523986816406}},{"unique_id":"RIahRbmdPKtBCU706PhvG","model_hash":97297972,"text_dimensions":-1.30065524578094,"door_coords":{"x":1698.1739501953126,"y":3751.508056640625,"z":34.85523986816406}}],"door_name":"Entrance","default_state":false,"state":false,"secret":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_tataviam_mountains.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_tataviam_mountains.json
new file mode 100644
index 000000000..4f9c66ab5
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ammunition_tataviam_mountains.json
@@ -0,0 +1 @@
+{"name":"ammunition_tataviam_mountains.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Ammunition Tataviam Mountains","door_data":[{"unique_id":"CsZAN8-pTQOzbPwsjnFsG","model_hash":-8873588,"text_dimensions":-1.30482494086027,"door_coords":{"x":2568.30419921875,"y":303.3522644042969,"z":108.88478088378906}},{"unique_id":"-zFFAOgELOjJYzibMZYSt","model_hash":97297972,"text_dimensions":-1.30065524578094,"door_coords":{"x":2570.90478515625,"y":303.3522644042969,"z":108.88478088378906}}],"door_name":"Entrance","camera":false,"state":false,"default_state":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/aztecas.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/aztecas.json
new file mode 100644
index 000000000..f58d9c9cd
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/aztecas.json
@@ -0,0 +1 @@
+{"name":"aztecas.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"aztecas"}],"identifier":[]},"location_group":"Aztecas","door_data":[{"model_hash":903896222,"unique_id":"x6RvS2bKXkW4YVDktAhvK","text_dimensions":-1.28941306484291,"door_coords":{"x":493.0755004882813,"y":-1541.8304443359376,"z":29.44704818725586}}],"door_name":"Entrance","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"aztecas"}],"identifier":[]},"location_group":"Aztecas","door_data":[{"model_hash":-1168990172,"unique_id":"TFRjSnUV9cAYgziPkRaIC","text_dimensions":-1.28941306484291,"door_coords":{"x":496.6208190917969,"y":-1530.5982666015626,"z":29.44704818725586}}],"door_name":"Toilet","secret":false,"state":false,"default_state":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":3,"perms":{"job":[{"grade":0,"name":"aztecas"}],"identifier":[]},"location_group":"Aztecas","door_data":[{"model_hash":-1168990172,"unique_id":"slkOSj-AN5X7qmOmRQNBI","text_dimensions":-1.28941306484291,"door_coords":{"x":491.2002258300781,"y":-1533.0587158203126,"z":29.44644546508789}}],"door_name":"Hallway","secret":false,"state":false,"default_state":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":4,"perms":{"job":[{"grade":0,"name":"aztecas"}],"identifier":[]},"location_group":"Aztecas","door_data":[{"model_hash":-1168990172,"unique_id":"mqbBmp1azrXlExRTyCgkh","text_dimensions":-1.28941306484291,"door_coords":{"x":488.5831604003906,"y":-1534.103271484375,"z":29.44644546508789}}],"door_name":"Office","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":5,"perms":{"job":[{"grade":0,"name":"aztecas"}],"identifier":[]},"location_group":"Aztecas","door_data":[{"model_hash":-1168990172,"unique_id":"RfCkU2mhQzM8gd_i5Roi2","text_dimensions":-1.28941306484291,"door_coords":{"x":490.9441223144531,"y":-1531.2901611328126,"z":29.44672966003418}}],"door_name":"Planning Room","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":6,"perms":{"job":[{"grade":0,"name":"aztecas"}],"identifier":[]},"location_group":"Aztecas","door_data":[{"model_hash":2103001488,"unique_id":"ChQkjIdf5ONYhKBHZG1O-","text_dimensions":-1.28941306484291,"door_coords":{"x":486.0135498046875,"y":-1530.3931884765626,"z":29.44704818725586}}],"door_name":"Rear Entrance","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/bahama_mamas.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/bahama_mamas.json
new file mode 100644
index 000000000..ec1cf0861
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/bahama_mamas.json
@@ -0,0 +1 @@
+{"name":"bahama_mamas.json","imported":false,"data":[{"distance":2,"default_state":true,"secret":false,"id":1,"door_data":[{"model_hash":-224738884,"unique_id":"JAo4tvZlmJuYygRfQTk0W","door_coords":{"x":-1387.035888671875,"y":-586.6932983398438,"z":30.44564437866211},"text_dimensions":-1.33685402944684},{"model_hash":666905606,"unique_id":"ia0M4pUBmyB6Mkj3GASow","door_coords":{"x":-1389.1368408203126,"y":-588.0576782226563,"z":30.44564437866211},"text_dimensions":-1.33693200349807}],"location_group":"Bahama Mama's","state":true,"door_name":"Entrance","door_type":"single","perms":{"ace":[],"job":[{"grade":0,"name":"police"}],"identifier":[],"discord":[]},"lockpickable":false,"door_sound":"door_wooden.ogg","camera":false},{"distance":2,"default_state":true,"secret":false,"id":2,"door_data":[{"model_hash":134859901,"unique_id":"Cp3vhA6Qxvs8bEyh4T42o","door_coords":{"x":-1391.869140625,"y":-592.6160278320313,"z":30.44564628601074},"text_dimensions":-1.38835303857922},{"model_hash":134859901,"unique_id":"KiO7Cd2o9cVcoGSFe2vo-","door_coords":{"x":-1390.44873046875,"y":-594.80322265625,"z":30.44564628601074},"text_dimensions":-1.38835303857922}],"location_group":"Bahama Mama's","state":false,"door_name":"Lobby","door_type":"double","perms":{"ace":[],"job":[{"grade":0,"name":"police"}],"identifier":[],"discord":[]},"lockpickable":false,"auto_lock":"","door_sound":"door_wooden.ogg","camera":false},{"distance":2,"default_state":true,"secret":false,"id":3,"door_data":[{"model_hash":-1266440846,"unique_id":"oGLaeu8HW4kRzYcHWV2kr","door_coords":{"x":-1391.491455078125,"y":-601.4703369140625,"z":30.44564628601074},"text_dimensions":-1.38835303857922}],"location_group":"Bahama Mama's","state":true,"door_name":"Restroom","door_type":"single","perms":{"ace":[],"job":[{"grade":0,"name":"police"}],"identifier":[],"discord":[]},"lockpickable":false,"auto_lock":"","door_sound":"door_wooden.ogg","camera":false},{"distance":2,"default_state":true,"secret":false,"id":4,"door_data":[{"model_hash":-2102541881,"unique_id":"8tfri7pIDOvenZ21cyISR","door_coords":{"x":-1378.585693359375,"y":-621.3177490234375,"z":30.44564628601074},"text_dimensions":-1.38835303857922}],"location_group":"Bahama Mama's","state":true,"door_name":"Office","door_type":"single","perms":{"ace":[],"job":[{"grade":0,"name":"police"}],"identifier":[],"discord":[]},"lockpickable":false,"auto_lock":"","door_sound":"door_wooden.ogg","camera":false},{"distance":2,"default_state":true,"secret":false,"id":5,"door_data":[{"model_hash":-2102541881,"unique_id":"6vOctGe132Pp6y-pR13Mn","door_coords":{"x":-1377.6776123046876,"y":-624.8816528320313,"z":30.44564628601074},"text_dimensions":-1.38835303857922}],"location_group":"Bahama Mama's","state":true,"door_name":"Changing Room","door_type":"single","perms":{"ace":[],"job":[{"grade":0,"name":"police"}],"identifier":[],"discord":[]},"lockpickable":false,"auto_lock":"","door_sound":"door_wooden.ogg","camera":false},{"distance":2,"default_state":true,"secret":false,"id":6,"door_data":[{"model_hash":134859901,"unique_id":"InX5VStdhCXvpxJBo-iVx","door_coords":{"x":-1373.76025390625,"y":-628.7486572265625,"z":30.44564628601074},"text_dimensions":-1.38835303857922}],"location_group":"Bahama Mama's","state":true,"door_name":"Changing Room 2","door_type":"single","perms":{"ace":[],"job":[{"grade":0,"name":"police"}],"identifier":[],"discord":[]},"lockpickable":false,"auto_lock":"","door_sound":"door_wooden.ogg","camera":false}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ballas.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ballas.json
new file mode 100644
index 000000000..c331aec14
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ballas.json
@@ -0,0 +1 @@
+{"name":"ballas.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"ballas"}],"identifier":[]},"location_group":"Ballas","door_data":[{"unique_id":"-jfp4WOTyCfjh2OJNs68S","model_hash":-1052955611,"text_dimensions":-1.30003573931753,"door_coords":{"x":0.2085236608982,"y":-1823.301025390625,"z":29.73543167114257}}],"door_name":"Staircase Entrance","secret":false,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"ballas"}],"identifier":[]},"location_group":"Ballas","door_data":[{"unique_id":"6U0_f3_tre-dP17JvmzAG","model_hash":373216819,"text_dimensions":-1.30003574956208,"door_coords":{"x":-2.02733397483825,"y":-1819.2308349609376,"z":29.34070014953613}}],"door_name":"Toilet","secret":false,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":3,"perms":{"job":[{"grade":0,"name":"ballas"}],"identifier":[]},"location_group":"Ballas","door_data":[{"unique_id":"4LxgCaXnQJXTfgtKiO0p6","model_hash":373216819,"text_dimensions":-1.30003574956208,"door_coords":{"x":0.04164028167724,"y":-1816.7576904296876,"z":29.34070014953613}}],"door_name":"Planning Room","secret":false,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":4,"perms":{"job":[{"grade":0,"name":"ballas"}],"identifier":[]},"location_group":"Ballas","door_data":[{"unique_id":"80i7_bW3A4RRKAbjaN6sG","model_hash":373216819,"text_dimensions":-1.30003574956208,"door_coords":{"x":0.70339083671569,"y":-1814.7305908203128,"z":29.34070014953613}}],"door_name":"Office","secret":false,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":5,"perms":{"job":[{"grade":0,"name":"ballas"}],"identifier":[]},"location_group":"Ballas","door_data":[{"unique_id":"hHN4V6L0UoNctrd7iiIPh","model_hash":-1351120742,"text_dimensions":-1.30003573931753,"door_coords":{"x":-1.87361574172973,"y":-1808.825927734375,"z":25.54070091247558}}],"door_name":"Downstairs Entrance","secret":false,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":6,"perms":{"job":[{"grade":0,"name":"ballas"}],"identifier":[]},"location_group":"Ballas","door_data":[{"unique_id":"LdeCDiKMlXtn-uFT2yZwv","model_hash":373216819,"text_dimensions":-1.30003574956208,"door_coords":{"x":-6.94861030578613,"y":-1819.7347412109376,"z":29.34070014953613}}],"door_name":"Staircase","secret":false,"state":false,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_alhambradrive.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_alhambradrive.json
new file mode 100644
index 000000000..778a26ee6
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_alhambradrive.json
@@ -0,0 +1 @@
+{"name":"barbershop_alhambradrive.json","imported":false,"data":[{"id":3,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Barbershop Alhambra Drive","door_data":[{"unique_id":"lrSEYzDW3Vw-5NiqXFObN","model_hash":-1844444717,"text_dimensions":-1.3004457950592,"door_coords":{"x":1932.9512939453128,"y":3725.154296875,"z":32.99449920654297}}],"door_name":"Enterance","secret":false,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_carsonave.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_carsonave.json
new file mode 100644
index 000000000..ad22acd97
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_carsonave.json
@@ -0,0 +1 @@
+{"name":"barbershop_carsonave.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Barbershop Carson Ave","door_data":[{"unique_id":"6jMkimSD-Liw_mtwIVKb4","model_hash":-1844444717,"text_dimensions":-1.3004457950592,"door_coords":{"x":132.5574951171875,"y":-1710.9951171875,"z":29.44166755676269}}],"door_name":"Enterance","secret":false,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_hawickave.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_hawickave.json
new file mode 100644
index 000000000..3b8fce9a2
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_hawickave.json
@@ -0,0 +1 @@
+{"name":"barbershop_hawickave.json","imported":false,"data":[{"id":5,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Barbershop Hawick Ave","door_data":[{"unique_id":"9sj-1XkysnGycHMcq2Kzm","model_hash":-1844444717,"text_dimensions":-1.3004457950592,"door_coords":{"x":-29.86952590942382,"y":-148.1580047607422,"z":57.22657775878906}}],"door_name":"Enterance","secret":false,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_magellanave.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_magellanave.json
new file mode 100644
index 000000000..e1e92c467
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_magellanave.json
@@ -0,0 +1 @@
+{"name":"barbershop_magellanave.json","imported":false,"data":[{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Barbershop Magellan Ave","door_data":[{"unique_id":"_TdR_cX0s9QYMDE8kXNiP","model_hash":-1844444717,"text_dimensions":-1.3004457950592,"door_coords":{"x":-1287.8558349609376,"y":-1115.7415771484376,"z":7.14017105102539}}],"door_name":"Enterance","secret":false,"state":true,"camera":false,"door_sound":"","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_mirrorpark.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_mirrorpark.json
new file mode 100644
index 000000000..a012b1bce
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_mirrorpark.json
@@ -0,0 +1 @@
+{"name":"barbershop_mirrorpark.json","imported":false,"data":[{"id":4,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Barbershop Mirror Park","door_data":[{"unique_id":"J99Z9HiZSiNBxaHS4P4pL","model_hash":-1844444717,"text_dimensions":-1.3004457950592,"door_coords":{"x":1207.8740234375,"y":-470.0365295410156,"z":66.35810089111328}}],"door_name":"Enterance","secret":false,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_paleto.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_paleto.json
new file mode 100644
index 000000000..cdab47908
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/barbershop_paleto.json
@@ -0,0 +1 @@
+{"name":"barbershop_paleto.json","imported":false,"data":[{"id":6,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Barbershop Paleto","door_data":[{"unique_id":"iVuvzZSbZcz5pi27hyLH7","model_hash":-1844444717,"text_dimensions":-1.3004457950592,"door_coords":{"x":-280.7843933105469,"y":6232.78076171875,"z":31.8455810546875}}],"door_name":"Enterance","secret":false,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/bean_machine.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/bean_machine.json
new file mode 100644
index 000000000..03a70afd9
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/bean_machine.json
@@ -0,0 +1 @@
+{"name":"bean_machine.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Bean Machine","door_data":[{"model_hash":494354570,"unique_id":"Juw1iRqGpsUWuBXoQVGPx","text_dimensions":-1.27720979717712,"door_coords":{"x":128.2133941650391,"y":-1029.455322265625,"z":29.26180076599121}}],"door_name":"Side Entrance","secret":false,"state":false,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Bean Machine","door_data":[{"model_hash":-1182160879,"unique_id":"5UjmU3cLJOdbugOys32QK","text_dimensions":-1.18820981052856,"door_coords":{"x":114.56291198730468,"y":-1039.88818359375,"z":29.34832000732422}},{"model_hash":-747011272,"unique_id":"ifyZx-ErxAQEGWbvBcfh7","text_dimensions":-1.18820981052856,"door_coords":{"x":115.37569427490236,"y":-1037.655029296875,"z":29.34832000732422}}],"door_name":"Main Entrance","secret":false,"state":false,"camera":true,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/bennys.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/bennys.json
new file mode 100644
index 000000000..c87f95994
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/bennys.json
@@ -0,0 +1 @@
+{"name":"bennys.json","imported":false,"data":[{"secret":false,"default_state":true,"door_type":"single","door_name":"Entrance","distance":3,"location_group":"Bennys","perms":{"job":[{"name":"police","grade":0}],"ace":[],"discord":[],"identifier":[]},"door_sound":"","id":1,"door_data":[{"model_hash":-147325430,"unique_id":"y-9Y_MVoOZkMamFoJDBoX","text_dimensions":1.29998779296875,"door_coords":{"z":31.45024108886718,"y":-1315.1455078125,"x":-230.69924926757813}}],"camera":false,"lockpickable":false,"state":true},{"lockpickable":false,"secret":false,"door_type":"garage","door_sound":"","door_name":"Front Garage Door","distance":3,"default_state":true,"perms":{"job":[{"name":"police","grade":0}],"ace":[],"discord":[],"identifier":[]},"location_group":"Bennys","id":2,"door_data":[{"model_hash":-48831039,"unique_id":"sYQIQ1-mrO0kf-x6zTdHh","text_dimensions":0,"door_coords":{"z":32.72236633300781,"y":-1326.9986572265626,"x":-230.8119659423828}}],"auto_lock":"","camera":false,"state":true},{"lockpickable":false,"secret":false,"door_type":"garage","door_sound":"door_click.ogg","door_name":"Side left Garage","distance":3,"default_state":true,"perms":{"job":[{"name":"police","grade":0}],"ace":[],"discord":[],"identifier":[]},"location_group":"Bennys","id":3,"door_data":[{"model_hash":-1453834687,"unique_id":"F92DWnL5Uwu6I8avEIQm-","text_dimensions":0,"door_coords":{"z":30.68654823303222,"y":-1313.28564453125,"x":-207.76943969726566}}],"auto_lock":"","camera":false,"state":true},{"lockpickable":false,"secret":false,"door_type":"garage","door_sound":"door_click.ogg","door_name":"Side Right Garage","distance":3,"default_state":true,"perms":{"job":[{"name":"police","grade":0}],"ace":[],"discord":[],"identifier":[]},"location_group":"Bennys","id":4,"door_data":[{"model_hash":-1453834687,"unique_id":"4O3ICZsesgUj-LZ9-L0Aw","text_dimensions":0,"door_coords":{"z":30.48421478271484,"y":-1313.28564453125,"x":-215.73533630371098}}],"auto_lock":"","camera":false,"state":true},{"lockpickable":false,"secret":false,"door_type":"single","door_sound":"door_metal.ogg","door_name":"Office","distance":2,"default_state":true,"perms":{"job":[{"name":"police","grade":0}],"ace":[],"discord":[],"identifier":[]},"location_group":"Bennys","id":5,"door_data":[{"model_hash":-147325430,"unique_id":"ZmddAR3y-GF2haXKtZWj3","text_dimensions":1.29998779296875,"door_coords":{"z":31.46076011657715,"y":-1322.0712890625,"x":-197.44644165039066}}],"auto_lock":"","camera":false,"state":true},{"lockpickable":false,"secret":false,"door_type":"single","door_sound":"door_metal.ogg","door_name":"Locker Room","distance":2,"default_state":true,"perms":{"job":[{"name":"police","grade":0}],"ace":[],"discord":[],"identifier":[]},"location_group":"Bennys","id":6,"door_data":[{"model_hash":-147325430,"unique_id":"KJhRHlqWomZI5hS9Rv7f-","text_dimensions":1.29998779296875,"door_coords":{"z":31.46076011657715,"y":-1339.141845703125,"x":-197.44644165039066}}],"auto_lock":"","camera":false,"state":false},{"lockpickable":false,"secret":false,"door_type":"single","door_sound":"door_metal.ogg","door_name":"Storage Room","distance":2,"default_state":true,"perms":{"job":[{"name":"police","grade":0}],"ace":[],"discord":[],"identifier":[]},"location_group":"Bennys","id":7,"door_data":[{"model_hash":-147325430,"unique_id":"USUAIufJw2YM7llqrPT17","text_dimensions":1.29998779296875,"door_coords":{"z":31.45024108886718,"y":-1322.0716552734376,"x":-226.0601043701172}}],"auto_lock":"","camera":false,"state":true}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_grapeseed.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_grapeseed.json
new file mode 100644
index 000000000..249c54321
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_grapeseed.json
@@ -0,0 +1 @@
+{"name":"binco_grapeseed.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Binco Grapeseed","door_data":[{"unique_id":"MiwlqKN2xNdVYG_0JYUeQ","model_hash":-1450680917,"text_dimensions":-1.13898681744467,"door_coords":{"x":1686.9937744140626,"y":4821.74267578125,"z":42.2269287109375}},{"unique_id":"Gvfes7RGzNsR0THCNonTT","model_hash":-720292672,"text_dimensions":-1.13898681744467,"door_coords":{"x":1687.2923583984376,"y":4819.48681640625,"z":42.2269287109375}}],"door_name":"Entrance","default_state":false,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_innocence_blvd.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_innocence_blvd.json
new file mode 100644
index 000000000..00dfa533c
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_innocence_blvd.json
@@ -0,0 +1 @@
+{"name":"binco_innocence_blvd.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Binco Innocence Blvd","door_data":[{"model_hash":-720292672,"unique_id":"MDTWRfecpPUtggN6vt5Gy","text_dimensions":-1.13898681744467,"door_coords":{"x":82.37060546875,"y":-1390.476318359375,"z":29.53996086120605}},{"model_hash":-1450680917,"unique_id":"bwmfyj1szAtPfN-FWsQkF","text_dimensions":-1.13898681744467,"door_coords":{"x":82.37060546875,"y":-1392.751708984375,"z":29.53996086120605}}],"door_name":"Entrance","secret":false,"state":false,"camera":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_paleto.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_paleto.json
new file mode 100644
index 000000000..2ee5c17f1
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_paleto.json
@@ -0,0 +1 @@
+{"name":"binco_paleto.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Binco Paleto","door_data":[{"model_hash":-1450680917,"unique_id":"igOHNRPWNHd7uhPr_URfJ","text_dimensions":-1.13898681744467,"door_coords":{"x":-0.04871225357055,"y":6517.453125,"z":32.04166793823242}},{"model_hash":-720292672,"unique_id":"ToHx9chryiz1eIXDsbdkE","text_dimensions":-1.13898681744467,"door_coords":{"x":-1.71715235710144,"y":6515.90625,"z":32.04166793823242}}],"door_name":"Entrance","default_state":false,"state":false,"camera":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_palomino_ave.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_palomino_ave.json
new file mode 100644
index 000000000..2272a2c53
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_palomino_ave.json
@@ -0,0 +1 @@
+{"name":"binco_palomino_ave.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Binco Palomino Ave","door_data":[{"unique_id":"ZdPV4xxQ6Xkt10D7YjzbR","model_hash":-1450680917,"text_dimensions":-1.13898681744467,"door_coords":{"x":-818.77001953125,"y":-1079.534912109375,"z":11.49193000793457}},{"unique_id":"rikw3mFp5dkdt7u4UhDvT","model_hash":-720292672,"text_dimensions":-1.13898681744467,"door_coords":{"x":-816.7994384765625,"y":-1078.397216796875,"z":11.49193000793457}}],"door_name":"Entrance","default_state":false,"state":false,"camera":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_rt68_1.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_rt68_1.json
new file mode 100644
index 000000000..fb6d035fb
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_rt68_1.json
@@ -0,0 +1 @@
+{"name":"binco_rt68_1.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Binco RT68 1","door_data":[{"model_hash":-1450680917,"unique_id":"Vb6RIem7LicAIeAFuzGuN","text_dimensions":-1.13898681744467,"door_coords":{"x":1196.8243408203126,"y":2703.232421875,"z":38.38643646240234}},{"model_hash":-720292672,"unique_id":"MwjND9yVXReTcjCCzyR45","text_dimensions":-1.13898681744467,"door_coords":{"x":1199.0997314453126,"y":2703.232421875,"z":38.38643646240234}}],"door_name":"Entrance","secret":false,"state":false,"camera":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_rt68_2.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_rt68_2.json
new file mode 100644
index 000000000..1291c2180
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_rt68_2.json
@@ -0,0 +1 @@
+{"name":"binco_rt68_2.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Binco RT68 2","door_data":[{"unique_id":"G1mX5P_Rsumh1bxaxd-Dh","model_hash":-720292672,"text_dimensions":-1.13898681744467,"door_coords":{"x":-1094.9736328125,"y":2706.9716796875,"z":19.27168083190918}},{"unique_id":"n37YErHIeXcau2JkSCmYS","model_hash":-1450680917,"text_dimensions":-1.13898681744467,"door_coords":{"x":-1096.669189453125,"y":2705.454345703125,"z":19.27168083190918}}],"door_name":"Entrance","secret":false,"state":false,"camera":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_sinner_ave.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_sinner_ave.json
new file mode 100644
index 000000000..de71c2ab1
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/binco_sinner_ave.json
@@ -0,0 +1 @@
+{"name":"binco_sinner_ave.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Binco Sinner St","door_data":[{"model_hash":-1450680917,"unique_id":"jeaofHSP0oo5YpMzpGn6Q","text_dimensions":-1.13898681744467,"door_coords":{"x":418.5821838378906,"y":-806.3977661132813,"z":29.65496063232422}},{"model_hash":-720292672,"unique_id":"o_cX7EFVTLfXc1-ZCmxrQ","text_dimensions":-1.13898681744467,"door_coords":{"x":418.5821838378906,"y":-808.6731567382813,"z":29.65496063232422}}],"door_name":"Entrance","camera":false,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/bolingbroke_prison.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/bolingbroke_prison.json
new file mode 100644
index 000000000..9f3e996bd
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/bolingbroke_prison.json
@@ -0,0 +1 @@
+{"name":"bolingbroke_prison.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"unique_id":"QzTgDyM4bKzfKAYBBHdUo","model_hash":741314661,"text_dimensions":7.43733577430248,"door_coords":{"x":1844.9984130859376,"y":2604.8125,"z":44.63977813720703}}],"door_name":"Entrance Gate 1","default_state":true,"state":false,"camera":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"secret":false,"distance":10},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"unique_id":"c3EIUl9YdMOuAYGhJQ00s","model_hash":741314661,"text_dimensions":7.43733577430248,"door_coords":{"x":1818.5428466796876,"y":2604.8125,"z":44.61100387573242}}],"door_name":"Entrance Gate 2","default_state":true,"state":false,"camera":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"secret":false,"distance":10},{"id":3,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"unique_id":"d3iCYS92fMePVhJwnhyte","model_hash":741314661,"text_dimensions":7.43733577430248,"door_coords":{"x":1799.6083984375,"y":2616.975341796875,"z":44.6032485961914}}],"door_name":"Side Gate","default_state":true,"state":false,"camera":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"secret":false,"distance":10},{"id":4,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"unique_id":"6LrhgzF1dQ2QQvajRf4U1","model_hash":741314661,"text_dimensions":7.43733577430248,"door_coords":{"x":1835.2855224609376,"y":2689.10205078125,"z":44.4443359375}}],"door_name":"Side Gate 2","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"secret":false,"distance":10},{"id":5,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"unique_id":"kn0dCxk8H-HOG9r_vwJnk","model_hash":741314661,"text_dimensions":7.43733577430248,"door_coords":{"x":1828.994140625,"y":2706.78076171875,"z":44.44318008422851}}],"door_name":"Side Gate 3","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"secret":false,"distance":10},{"id":6,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"unique_id":"Xn5bYO2Eqp7EESOfR31e3","model_hash":741314661,"text_dimensions":7.43733577430248,"door_coords":{"x":1776.7012939453126,"y":2747.14794921875,"z":44.44668960571289}}],"door_name":"Side Gate 4","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"secret":false,"distance":10},{"id":7,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"unique_id":"XH2FDQXK0c3YuQFYyQal1","model_hash":741314661,"text_dimensions":7.43733577430248,"door_coords":{"x":1762.195556640625,"y":2752.48876953125,"z":44.44668960571289}}],"door_name":"Side Gate 5","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"secret":false,"distance":10},{"id":8,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"unique_id":"gj-bcR1nxJZEUqeW02pWJ","model_hash":741314661,"text_dimensions":7.43733577430248,"door_coords":{"x":1662.05615234375,"y":2748.724609375,"z":44.44302368164062}}],"door_name":"Side Gate 6","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"secret":false,"distance":10},{"id":9,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"unique_id":"9GaW4mhZZCXWA4_FCIxXT","model_hash":741314661,"text_dimensions":7.43733577430248,"door_coords":{"x":1648.409423828125,"y":2741.66796875,"z":44.44316864013672}}],"door_name":"Side Gate 7","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"secret":false,"distance":10},{"id":10,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"unique_id":"c7EludI0zQJ-Ie5DRcfib","model_hash":741314661,"text_dimensions":7.43733577430248,"door_coords":{"x":1584.854736328125,"y":2680.023681640625,"z":44.50901794433594}}],"door_name":"Side Gate 8","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"secret":false,"distance":10},{"id":11,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"unique_id":"EpQEG49hwxH8lHUHqg7kQ","model_hash":741314661,"text_dimensions":7.43733577430248,"door_coords":{"x":1575.7176513671876,"y":2667.150634765625,"z":44.50761795043945}}],"door_name":"Side Gate 9","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"secret":false,"distance":10},{"id":12,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"unique_id":"H8YMHfZndIv11V8vA2ZQB","model_hash":741314661,"text_dimensions":7.43733577430248,"door_coords":{"x":1547.7061767578126,"y":2591.2822265625,"z":44.50946807861328}}],"door_name":"Side Gate 10","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"secret":false,"distance":10},{"id":13,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"unique_id":"BDzGwW8nTzMmFVu60g04P","model_hash":741314661,"text_dimensions":7.43733577430248,"door_coords":{"x":1546.9833984375,"y":2576.129638671875,"z":44.39032745361328}}],"door_name":"Side Gate 11","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"secret":false,"distance":10},{"id":14,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"unique_id":"SwrPsEjKsme0tLvssUH47","model_hash":741314661,"text_dimensions":7.43733577430248,"door_coords":{"x":1550.930419921875,"y":2482.743408203125,"z":44.39528656005859}}],"door_name":"Side Gate 12","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"secret":false,"distance":10},{"id":15,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"unique_id":"jW72U84s-0IU7LP6w4UbQ","model_hash":741314661,"text_dimensions":7.43733577430248,"door_coords":{"x":1558.2232666015626,"y":2469.347900390625,"z":44.39436721801758}}],"door_name":"Side Gate 13","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"secret":false,"distance":10},{"id":16,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"unique_id":"6DRUuFMD82SeGu88YPqW6","model_hash":741314661,"text_dimensions":7.43733577430248,"door_coords":{"x":1652.9559326171876,"y":2409.57421875,"z":44.44263458251953}}],"door_name":"Side Gate 14","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"secret":false,"distance":10},{"id":17,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"unique_id":"L9iqdGXJJ6h1QaimdUOmn","model_hash":741314661,"text_dimensions":7.43733577430248,"door_coords":{"x":1667.6715087890626,"y":2407.6494140625,"z":44.4278450012207}}],"door_name":"Side Gate 15","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"secret":false,"distance":10},{"id":18,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"unique_id":"6ZhglyEwlog5PNxf84Yf3","model_hash":741314661,"text_dimensions":7.43733577430248,"door_coords":{"x":1749.141845703125,"y":2419.81201171875,"z":44.4251708984375}}],"door_name":"Side Gate 16","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"secret":false,"distance":10},{"id":19,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"unique_id":"FVz4nUX9A-Ah6WEvmN0op","model_hash":741314661,"text_dimensions":7.43733577430248,"door_coords":{"x":1762.544189453125,"y":2426.5068359375,"z":44.43555068969726}}],"door_name":"Side Gate 17","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"secret":false,"distance":10},{"id":20,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"unique_id":"QFdYs7VrOPNwZ0qCPyImU","model_hash":741314661,"text_dimensions":7.43733577430248,"door_coords":{"x":1808.9915771484376,"y":2474.544921875,"z":44.48077392578125}}],"door_name":"Side Gate 18","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"secret":false,"distance":10},{"id":21,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"unique_id":"xcUuq2QL0TKPa1tHkKJKa","model_hash":741314661,"text_dimensions":7.43733577430248,"door_coords":{"x":1813.749267578125,"y":2488.906982421875,"z":44.46368408203125}}],"door_name":"Side Gate 19","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"secret":false,"distance":10},{"id":22,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"unique_id":"ZkdQ0x2SiuD7rFozaaYSV","model_hash":1373390714,"text_dimensions":1.07979595661163,"door_coords":{"x":1845.3372802734376,"y":2585.348876953125,"z":46.08554077148437}}],"door_name":"Entrance","default_state":true,"state":false,"camera":true,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":23,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":-684929024,"unique_id":"5q5JZjmv3OaPK02siMVkT","text_dimensions":-1.28710997104644,"door_coords":{"x":1835.529052734375,"y":2587.44140625,"z":46.03715515136719}}],"door_name":"Visitors","secret":false,"state":true,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":24,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":2024969025,"unique_id":"rNU4rxdTIgROZ6MRl-2zc","text_dimensions":-1.28710997104644,"door_coords":{"x":1844.4052734375,"y":2576.998291015625,"z":46.03564071655273}}],"door_name":"Information","secret":false,"state":true,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":25,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":2024969025,"unique_id":"tScic_lpw5oAmS9q8ka7v","text_dimensions":-1.28710997104644,"door_coords":{"x":1837.63525390625,"y":2576.992919921875,"z":46.03863525390625}}],"door_name":"Lockers","secret":false,"state":true,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":26,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":-684929024,"unique_id":"FY7FxO-7jNzBhGvuxNYRu","text_dimensions":-1.28710997104644,"door_coords":{"x":1838.618408203125,"y":2593.706298828125,"z":46.03639602661133}}],"door_name":"Mugshot","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":27,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":-684929024,"unique_id":"ZDuVkoFrWO2aOZysw-GLV","text_dimensions":-1.28710997104644,"door_coords":{"x":1827.98291015625,"y":2592.158447265625,"z":46.0372200012207}}],"door_name":"Visitor Inmate Side","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":28,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":1373390714,"unique_id":"YqP7hREWBROSj0F5ry5Pb","text_dimensions":1.07979595661163,"door_coords":{"x":1819.0743408203128,"y":2594.87451171875,"z":46.08699035644531}}],"door_name":"Processing Exit","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":29,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":-1156020871,"unique_id":"OhBtvvpFaqqcSOa1v8gmx","text_dimensions":1.71312944777309,"door_coords":{"x":1797.7608642578126,"y":2596.56494140625,"z":46.3873062133789}}],"door_name":"Side Exit 1","default_state":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":30,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":-1156020871,"unique_id":"lKSzBfnq_FbH-O_0MCWT5","text_dimensions":1.71312944777309,"door_coords":{"x":1798.090087890625,"y":2591.687255859375,"z":46.41783905029297}}],"door_name":"Side Exit 2","secret":false,"state":false,"camera":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":31,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":1373390714,"unique_id":"MSsB9f02yn2aTPJAVpVH8","text_dimensions":1.07979595661163,"door_coords":{"x":1791.59521484375,"y":2551.462158203125,"z":45.75320434570312}}],"door_name":"Canteen Exit","secret":false,"state":true,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":32,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":1373390714,"unique_id":"oeYSRuKshlrQL9oJh4q1n","text_dimensions":1.07979595661163,"door_coords":{"x":1776.1951904296876,"y":2552.563232421875,"z":45.74740600585937}}],"door_name":"Canteen Entrance","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":33,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":2024969025,"unique_id":"3PMVeOU8kiY9grMoKbcGb","text_dimensions":-1.28710997104644,"door_coords":{"x":1786.8311767578126,"y":2560.268798828125,"z":45.69551086425781}}],"door_name":"Canteen Staff","secret":false,"state":true,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":34,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":1373390714,"unique_id":"zo4xwL2CiSzmCOjfz_-f5","text_dimensions":1.07979595661163,"door_coords":{"x":1765.1181640625,"y":2566.52392578125,"z":45.8028450012207}}],"door_name":"Infirmary Entrance","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":35,"perms":{"job":[{"name":"police","grade":0},{"name":"ems","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":2074175368,"unique_id":"sk6XfBvnjAXyK4qYRtf4H","text_dimensions":-1.28710997104644,"door_coords":{"x":1772.8133544921876,"y":2570.29638671875,"z":45.74467468261719}}],"door_name":"Infirmary Reception","default_state":true,"state":true,"secret":false,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":36,"perms":{"job":[{"name":"police","grade":0},{"name":"ems","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":-1624297821,"unique_id":"wEgWyH6eggasb4FE7STx9","text_dimensions":-1.14990198612213,"door_coords":{"x":1766.3250732421876,"y":2574.6982421875,"z":45.75300598144531}},{"model_hash":-1624297821,"unique_id":"N1lIZaTCmyIavZlHAGDhg","text_dimensions":-1.14990198612213,"door_coords":{"x":1764.0250244140626,"y":2574.6982421875,"z":45.75300598144531}}],"door_name":"Infirmary Rooms","default_state":true,"state":true,"secret":false,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":37,"perms":{"job":[{"name":"police","grade":0},{"name":"ems","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":-1624297821,"unique_id":"rTSrmtxDJiC_uCI-PHkEu","text_dimensions":-1.14990198612213,"door_coords":{"x":1764.026123046875,"y":2589.564208984375,"z":45.75308990478515}},{"model_hash":-1624297821,"unique_id":"jkpkL0RNlntlVq1oU2SNY","text_dimensions":-1.14990198612213,"door_coords":{"x":1766.3250732421876,"y":2589.564208984375,"z":45.75308990478515}}],"door_name":"Intensive Care","secret":false,"state":false,"camera":true,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2},{"id":38,"perms":{"job":[{"name":"police","grade":0},{"name":"ems","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":-1624297821,"unique_id":"Nzt_f-JSc2WqdufgJuyiW","text_dimensions":-1.14990198612213,"door_coords":{"x":1767.32080078125,"y":2584.607177734375,"z":45.75344848632812}},{"model_hash":-1624297821,"unique_id":"7Rr8qAvYjw5DqAHy3lbTr","text_dimensions":-1.14990198612213,"door_coords":{"x":1767.32080078125,"y":2582.307861328125,"z":45.75344848632812}}],"door_name":"Surgery","secret":false,"state":false,"camera":true,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2},{"id":39,"perms":{"job":[{"name":"police","grade":0},{"name":"ems","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":-1392981450,"unique_id":"N3Ta7PCYxEwzfF0RJQ7dk","text_dimensions":-1.28710997104644,"door_coords":{"x":1767.3232421875,"y":2580.83203125,"z":45.74782562255859}}],"door_name":"Lab","secret":false,"state":true,"camera":true,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":40,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":-1156020871,"unique_id":"AhMbFuO9JqHGxCpOqCzX1","text_dimensions":1.71312944777309,"door_coords":{"x":1761.397705078125,"y":2529.338134765625,"z":46.25222015380859}}],"door_name":"Staircase 1","secret":false,"state":true,"camera":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":41,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":-1156020871,"unique_id":"qqQsU0rDw3pkeg8D62bqL","text_dimensions":1.71312944777309,"door_coords":{"x":1727.015625,"y":2509.423583984375,"z":46.06240463256836}}],"door_name":"Staircase 2","secret":false,"state":true,"camera":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":42,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":-1156020871,"unique_id":"Yv_V-XJFrpOIJTdevWAKy","text_dimensions":1.71312944777309,"door_coords":{"x":1712.7598876953126,"y":2489.613037109375,"z":46.25222015380859}}],"door_name":"Staircase 3","secret":false,"state":true,"camera":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":43,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":-1156020871,"unique_id":"6ICRJKARjSClFAHK_Bs9y","text_dimensions":1.71312944777309,"door_coords":{"x":1673.03271484375,"y":2489.581298828125,"z":46.25222015380859}}],"door_name":"Staircase 4","secret":false,"state":true,"camera":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":44,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":-1156020871,"unique_id":"KQo78QIcQclTsO9YxT0QO","text_dimensions":1.71312944777309,"door_coords":{"x":1653.7633056640626,"y":2493.57666015625,"z":46.25222015380859}}],"door_name":"Staircase 5","secret":false,"state":true,"camera":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":45,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":-1156020871,"unique_id":"8Z3feyKRR0YhYvakKGVs9","text_dimensions":1.71312944777309,"door_coords":{"x":1623.3203125,"y":2519.109375,"z":46.25222015380859}}],"door_name":"Staircase 6","secret":false,"state":true,"camera":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":46,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":-1156020871,"unique_id":"ylS1DkFrWEIJots3cFSTZ","text_dimensions":1.71312944777309,"door_coords":{"x":1618.30712890625,"y":2533.870361328125,"z":46.25222015380859}}],"door_name":"Staircase 7","secret":false,"state":true,"camera":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":47,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":-1156020871,"unique_id":"MiTHJ1VA4uoFELHhPIHUZ","text_dimensions":1.71312944777309,"door_coords":{"x":1618.3304443359376,"y":2573.611083984375,"z":46.25222015380859}}],"door_name":"Staircase 8","secret":false,"state":true,"camera":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":48,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":-1156020871,"unique_id":"pUNMDA3pKjxVng-qpyqYK","text_dimensions":1.71312944777309,"door_coords":{"x":1681.2083740234376,"y":2564.7822265625,"z":46.25222015380859}}],"door_name":"Staircase 9","default_state":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":49,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":-1156020871,"unique_id":"8rnOw5g0SmVsQrBppWZZM","text_dimensions":1.71312944777309,"door_coords":{"x":1708.4818115234376,"y":2564.782470703125,"z":46.25222015380859}}],"door_name":"Staircase 10","secret":false,"state":true,"camera":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":50,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":-1156020871,"unique_id":"YQQqyitWAYvenOwJgN4f5","text_dimensions":1.71312944777309,"door_coords":{"x":1744.181640625,"y":2562.525390625,"z":46.25222015380859}}],"door_name":"Staircase 11","secret":false,"state":true,"camera":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":51,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":-1156020871,"unique_id":"HeU0kcsnAtGU9IxLKadwm","text_dimensions":1.71312944777309,"door_coords":{"x":1697.400390625,"y":2544.275390625,"z":46.23442840576172}},{"model_hash":-1156020871,"unique_id":"SkbF5Sq-pykuGMY-wLB7S","text_dimensions":1.71312944777309,"door_coords":{"x":1697.4000244140626,"y":2547.65380859375,"z":46.23442840576172}}],"door_name":"Guard Tower Fence","secret":false,"state":true,"camera":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"default_state":true,"distance":2},{"id":52,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":1373390714,"unique_id":"AW3SxPr61TRc0wZjOSmgm","text_dimensions":1.07979595661163,"door_coords":{"x":1754.795654296875,"y":2501.568359375,"z":45.80965805053711}}],"door_name":"Cells Entrance","secret":false,"state":true,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":53,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":241550507,"unique_id":"R-aT5QEUK3JGGebWVnoAP","text_dimensions":-1.2202151150268,"door_coords":{"x":1758.65185546875,"y":2492.659423828125,"z":45.8898811340332}}],"door_name":"Cell Block","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":54,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":241550507,"unique_id":"8oFDmFCJCSN1ih-0NPLAc","text_dimensions":-1.2202151150268,"door_coords":{"x":1751.147216796875,"y":2481.177734375,"z":45.8898811340332}}],"door_name":"Gym","secret":false,"state":true,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":55,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":241550507,"unique_id":"vEwyLHQHm_XgAhhG5iQ-p","text_dimensions":-1.2202151150268,"door_coords":{"x":1752.28076171875,"y":2479.24755859375,"z":45.8898811340332}}],"door_name":"Pool","secret":false,"state":true,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":56,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":241550507,"unique_id":"cYAynOIh3ilAN37WxhseA","text_dimensions":-1.2202151150268,"door_coords":{"x":1775.4141845703126,"y":2491.025390625,"z":49.84005737304687}}],"door_name":"Cell Control 1","secret":false,"state":true,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":57,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":241550507,"unique_id":"F1spbb92CJUkUQfM3vyL1","text_dimensions":-1.2202151150268,"door_coords":{"x":1772.9385986328126,"y":2495.313232421875,"z":49.84005737304687}}],"door_name":"Cell Control 2","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":58,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"kn7qfoKtTle8nSRaAYiT3","text_dimensions":-1.2202151150268,"door_coords":{"x":1768.5477294921876,"y":2498.410888671875,"z":45.8898811340332}}],"door_name":"Cell 1","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":59,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"-T-3ib4cJ7HSLtvmjRHSx","text_dimensions":-1.2202151150268,"door_coords":{"x":1765.40087890625,"y":2496.59423828125,"z":45.8898811340332}}],"door_name":"Cell 2","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":60,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"GEJbhiN-0iRA4_T5ucRvW","text_dimensions":-1.2202151150268,"door_coords":{"x":1762.2547607421876,"y":2494.7783203125,"z":45.8898811340332}}],"door_name":"Cell 3","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":61,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"ux518xADZO2ZC6dL9I2uJ","text_dimensions":-1.2202151150268,"door_coords":{"x":1755.963134765625,"y":2491.146240234375,"z":45.8898811340332}}],"door_name":"Cell 4","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":62,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"6sFLbmY88a2vC_mjQphzs","text_dimensions":-1.2202151150268,"door_coords":{"x":1752.81689453125,"y":2489.330322265625,"z":45.8898811340332}}],"door_name":"Cell 5","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":63,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"uaKVgwRdb5ROL4fJiFZ_f","text_dimensions":-1.2202151150268,"door_coords":{"x":1749.670654296875,"y":2487.514404296875,"z":45.8898811340332}}],"door_name":"Cell 6","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":64,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"DMEEzEJwkjEVuWriY0Ebk","text_dimensions":-1.2202151150268,"door_coords":{"x":1768.5474853515626,"y":2498.411865234375,"z":49.84590530395508}}],"door_name":"Cell 7","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":65,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"JUFw3E97eOvonasusWlJx","text_dimensions":-1.2202151150268,"door_coords":{"x":1765.4007568359376,"y":2496.59521484375,"z":49.84590530395508}}],"door_name":"Cell 8","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":66,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"bzwAzRWP3L8WQqloojndA","text_dimensions":-1.2202151150268,"door_coords":{"x":1762.2547607421876,"y":2494.778564453125,"z":49.84590530395508}}],"door_name":"Cell 9","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":67,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"kCkVceDMd8Axwe8G8VnZs","text_dimensions":-1.2202151150268,"door_coords":{"x":1759.109375,"y":2492.962890625,"z":49.84590530395508}}],"door_name":"Cell 10","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":68,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"U01DLwti0C8G5UnCnbkUi","text_dimensions":-1.2202151150268,"door_coords":{"x":1755.9632568359376,"y":2491.145751953125,"z":49.84590530395508}}],"door_name":"Cell 11","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":69,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"ma2I9cJPOGWN7eVEcUH-a","text_dimensions":-1.2202151150268,"door_coords":{"x":1752.8172607421876,"y":2489.329345703125,"z":49.84590530395508}}],"door_name":"Cell 12","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":70,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"EOFBXKQ53eThpGrpBf8OZ","text_dimensions":-1.2202151150268,"door_coords":{"x":1749.671142578125,"y":2487.5126953125,"z":49.84590530395508}}],"door_name":"Cell 13","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":71,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"-v68owgnTWperNzLqTt-q","text_dimensions":-1.2202151150268,"door_coords":{"x":1758.0780029296876,"y":2475.392578125,"z":45.8898811340332}}],"door_name":"Cell 14","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":72,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"5MERWt9tS-GlM2L2XGC-K","text_dimensions":-1.2202151150268,"door_coords":{"x":1761.224609375,"y":2477.209716796875,"z":45.8898811340332}}],"door_name":"Cell 15","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":73,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"hWbovGrh6JD8s_S5OkGrF","text_dimensions":-1.2202151150268,"door_coords":{"x":1764.3692626953126,"y":2479.025634765625,"z":45.8898811340332}}],"door_name":"Cell 16","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":74,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"Vo05RBBocc1oqaGA64HiJ","text_dimensions":-1.2202151150268,"door_coords":{"x":1767.5152587890626,"y":2480.842529296875,"z":45.8898811340332}}],"door_name":"Cell 17","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":75,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"xlG3qkaHkVSrAxwWF5qEk","text_dimensions":-1.2202151150268,"door_coords":{"x":1770.6605224609376,"y":2482.658935546875,"z":45.8898811340332}}],"door_name":"Cell 18","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":76,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"3KdBqT9in2_9JYhi58-18","text_dimensions":-1.2202151150268,"door_coords":{"x":1773.8067626953126,"y":2484.475830078125,"z":45.8898811340332}}],"door_name":"Cell 19","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":77,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"umgIPw9v3qCmq2sPmxhXh","text_dimensions":-1.2202151150268,"door_coords":{"x":1776.951904296875,"y":2486.292236328125,"z":45.8898811340332}}],"door_name":"Cell 20","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":78,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"SeB_b2DJIhVlMVUN-5fUQ","text_dimensions":-1.2202151150268,"door_coords":{"x":1758.078369140625,"y":2475.391357421875,"z":49.84635925292969}}],"door_name":"Cell 21","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":79,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"6lIeDJ3xO3_y812bamIbc","text_dimensions":-1.2202151150268,"door_coords":{"x":1761.224853515625,"y":2477.208740234375,"z":49.84635925292969}}],"door_name":"Cell 22","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":80,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"x9CdxqO7u-CrmYKZZgtAs","text_dimensions":-1.2202151150268,"door_coords":{"x":1764.369384765625,"y":2479.025146484375,"z":49.84635925292969}}],"door_name":"Cell 23","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":81,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"EFN9mCeAdIY1PII9c7lrD","text_dimensions":-1.2202151150268,"door_coords":{"x":1767.51513671875,"y":2480.842529296875,"z":49.84635925292969}}],"door_name":"Cell 24","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":82,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"O5BgwPes1HT8i69pFZ92H","text_dimensions":-1.2202151150268,"door_coords":{"x":1770.6602783203126,"y":2482.659423828125,"z":49.84635925292969}}],"door_name":"Cell 25","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":83,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"Ic5Pk7OK7CufQYDw-UiUt","text_dimensions":-1.2202151150268,"door_coords":{"x":1773.8065185546876,"y":2484.4765625,"z":49.84635925292969}}],"door_name":"Cell 26","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":84,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":913760512,"unique_id":"Af_HicneWg67I1ujz4TXK","text_dimensions":-1.2202151150268,"door_coords":{"x":1776.951416015625,"y":2486.29345703125,"z":49.84635925292969}}],"door_name":"Cell 27","secret":false,"state":false,"camera":true,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":85,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":539686410,"unique_id":"bXo618ukgXjOAdj-jyKDL","text_dimensions":-1.41224204469472,"door_coords":{"x":1837.911865234375,"y":2590.256103515625,"z":46.19788360595703}}],"door_name":"Processing 1","secret":false,"state":false,"camera":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":86,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bolingbroke Prison","door_data":[{"model_hash":-684929024,"unique_id":"P4Y6ksHM_oKe1q1K9FkoI","text_dimensions":-1.28710997104644,"door_coords":{"x":1837.743408203125,"y":2592.1630859375,"z":46.03961181640625}}],"door_name":"Processing 2","secret":false,"state":true,"camera":false,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/bowling_alley.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/bowling_alley.json
new file mode 100644
index 000000000..d8cf93409
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/bowling_alley.json
@@ -0,0 +1 @@
+{"name":"bowling_alley.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bowling Alley","door_data":[{"model_hash":-2023754432,"unique_id":"EpeyXZLHbfR884K9td4n_","text_dimensions":1.3113248348236,"door_coords":{"x":755.5689086914063,"y":-782.7789916992188,"z":26.48348808288574}}],"door_name":"Toilet","camera":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bowling Alley","door_data":[{"model_hash":-626684119,"unique_id":"PuMdZljPwgOGlvXXh2lnv","text_dimensions":1.30132499436149,"door_coords":{"x":755.5689086914063,"y":-780.9235229492188,"z":26.48348808288574}}],"door_name":"Reception","camera":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":3,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bowling Alley","door_data":[{"model_hash":-626684119,"unique_id":"M2Uuxl7cZFu_IpVNPOWH_","text_dimensions":1.30132499436149,"door_coords":{"x":758.52197265625,"y":-777.251953125,"z":26.64883422851562}}],"door_name":"Entrance","camera":true,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":4,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Bowling Alley","door_data":[{"model_hash":-626684119,"unique_id":"pwDqchUqmNOonyod_PcSS","text_dimensions":1.30132499436149,"door_coords":{"x":755.5689086914063,"y":-770.7398071289063,"z":26.48348808288574}}],"door_name":"Office","camera":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/davis_pd.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/davis_pd.json
new file mode 100644
index 000000000..ece058cad
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/davis_pd.json
@@ -0,0 +1 @@
+{"name":"davis_pd.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Davis PD","door_data":[{"model_hash":618295057,"unique_id":"ZMdj4vg6gOYc0WVM3-2lf","text_dimensions":1.38004998117685,"door_coords":{"x":381.7760009765625,"y":-1594.2769775390626,"z":30.2012825012207}},{"model_hash":1670919150,"unique_id":"sLo9zUhfXj7aFZW4i7BKE","text_dimensions":-1.38004998117685,"door_coords":{"x":379.7842102050781,"y":-1592.605712890625,"z":30.2012825012207}}],"door_name":"Entrance","state":false,"secret":false,"door_sound":"_notification.ogg","door_type":"double","lockpickable":false,"default_state":true,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Davis PD","door_data":[{"model_hash":-425870000,"unique_id":"Lr_Mt8wNeonZGvO3F3jIm","text_dimensions":-1.28804991021752,"door_coords":{"x":382.8243103027344,"y":-1599.0250244140626,"z":30.1445083618164}}],"door_name":"Doorman","state":true,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":3,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Davis PD","door_data":[{"model_hash":-1335406364,"unique_id":"hGsWpGI10M1e0p301mppT","text_dimensions":-1.28804996982216,"door_coords":{"x":363.8883666992188,"y":-1595.471435546875,"z":25.54544067382812}}],"door_name":"Lockers","state":true,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":4,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Davis PD","door_data":[{"model_hash":-1335406364,"unique_id":"kuUG5i67RYFwKdNzdoiIr","text_dimensions":-1.28804996982216,"door_coords":{"x":367.1189880371094,"y":-1601.0821533203126,"z":25.54451179504394}}],"door_name":"Armory","state":true,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":5,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Davis PD","door_data":[{"model_hash":-425870000,"unique_id":"LLsWuIWF9mgzXSDlqnlxG","text_dimensions":-1.28804991021752,"door_coords":{"x":367.8590698242188,"y":-1594.3126220703126,"z":25.54551315307617}},{"model_hash":-425870000,"unique_id":"E-8ylCBWU1Y8ARLWIWVLi","text_dimensions":-1.28804991021752,"door_coords":{"x":369.7023010253906,"y":-1595.859375,"z":25.54551315307617}}],"door_name":"Autopsy","state":true,"secret":false,"door_sound":"_notification.ogg","door_type":"double","lockpickable":false,"default_state":true,"distance":2},{"id":6,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Davis PD","door_data":[{"model_hash":-1335406364,"unique_id":"aTbjMDhwjMXImCdDx8iE7","text_dimensions":-1.28804996982216,"door_coords":{"x":379.1722717285156,"y":-1603.8255615234376,"z":25.54451179504394}}],"door_name":"Mugshot","state":false,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":7,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Davis PD","door_data":[{"model_hash":-1335406364,"unique_id":"qPKGKx_534UDSg16b4b9L","text_dimensions":-1.28804996982216,"door_coords":{"x":375.5429992675781,"y":-1608.1507568359376,"z":25.54451179504394}}],"door_name":"Observation","state":true,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":8,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Davis PD","door_data":[{"model_hash":-728950481,"unique_id":"BzEnl5TnXJFnaCBLNwDiL","text_dimensions":-1.28804991021752,"door_coords":{"x":371.9581604003906,"y":-1605.1427001953126,"z":25.54544067382812}}],"door_name":"Interrogation","state":false,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":9,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Davis PD","door_data":[{"model_hash":-674638964,"unique_id":"MBKcQzP7ILbA-q13IbMjV","text_dimensions":1.55046490579843,"door_coords":{"x":375.077880859375,"y":-1598.4345703125,"z":25.34305763244629}}],"door_name":"Women Cells","state":true,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":10,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Davis PD","door_data":[{"model_hash":-1335406364,"unique_id":"3yuPHqGMd4R9cWsC7SGn2","text_dimensions":-1.28804996982216,"door_coords":{"x":384.4285278320313,"y":-1601.959716796875,"z":30.1445083618164}}],"door_name":"Downstairs Left","state":false,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":11,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Davis PD","door_data":[{"model_hash":-1335406364,"unique_id":"9uS6TSlSA3u3VLwKQKCEC","text_dimensions":-1.28804996982216,"door_coords":{"x":374.6359558105469,"y":-1613.6300048828126,"z":30.1445083618164}}],"door_name":"Downstairs Right","state":false,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":12,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Davis PD","door_data":[{"model_hash":1670919150,"unique_id":"ezThVr_GqBHrLe-4y9qg3","text_dimensions":-1.38004998117685,"door_coords":{"x":371.511962890625,"y":-1615.8707275390626,"z":30.2012825012207}},{"model_hash":618295057,"unique_id":"02bFjzqCYUIyJuHlsY8KF","text_dimensions":1.38004998117685,"door_coords":{"x":369.5201721191406,"y":-1614.1993408203126,"z":30.2012825012207}}],"door_name":"Side Entrance","state":true,"secret":false,"door_sound":"_notification.ogg","door_type":"double","lockpickable":false,"default_state":true,"distance":2},{"id":13,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Davis PD","door_data":[{"model_hash":-674638964,"unique_id":"9IzJKjV8CN2t4x9ySRF-S","text_dimensions":1.55046490579843,"door_coords":{"x":369.0669250488281,"y":-1605.6873779296876,"z":29.9421272277832}}],"door_name":"Women Upper Cell","state":true,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":14,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Davis PD","door_data":[{"model_hash":-425870000,"unique_id":"TDzBkf3GAlBQdHN1RG9PG","text_dimensions":-1.28804991021752,"door_coords":{"x":363.2424011230469,"y":-1589.2093505859376,"z":31.14456939697265}}],"door_name":"Office Right","state":true,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":15,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Davis PD","door_data":[{"model_hash":-425870000,"unique_id":"yT7zxXMQF17K3bFzV4_ua","text_dimensions":-1.28804991021752,"door_coords":{"x":361.6097106933594,"y":-1594.3302001953126,"z":31.14456939697265}},{"model_hash":-425870000,"unique_id":"qWYUf6xkJUr7mB2FqsWP9","text_dimensions":-1.28804991021752,"door_coords":{"x":363.1488952636719,"y":-1592.495849609375,"z":31.14456939697265}}],"door_name":"Captain","state":true,"secret":false,"door_sound":"_notification.ogg","door_type":"double","lockpickable":false,"default_state":true,"distance":2},{"id":16,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Davis PD","door_data":[{"model_hash":-425870000,"unique_id":"wdg_Tm2nFP8OY1SOCZOwg","text_dimensions":-1.28804991021752,"door_coords":{"x":358.3826293945313,"y":-1595.0009765625,"z":31.14456939697265}}],"door_name":"Office Left","state":true,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":17,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Davis PD","door_data":[{"model_hash":1286535678,"unique_id":"yK5PdYai5oqQ4vuWcv73h","text_dimensions":7.56022737920284,"door_coords":{"x":392.1278991699219,"y":-1602.5550537109376,"z":28.33998870849609}}],"door_name":"Gate","state":false,"secret":false,"door_sound":"_notification.ogg","door_type":"gates","lockpickable":false,"default_state":true,"distance":10},{"id":18,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Davis PD","door_data":[{"model_hash":-1156020871,"unique_id":"6aFD-LDXfC9k5UaKX-09n","text_dimensions":1.71312944777309,"door_coords":{"x":391.8601684570313,"y":-1636.0701904296876,"z":29.97437667846679}}],"door_name":"Impound lot","state":true,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/families.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/families.json
new file mode 100644
index 000000000..4a44a0b67
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/families.json
@@ -0,0 +1 @@
+{"name":"families.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"families","grade":0}],"identifier":[]},"location_group":"Families","door_data":[{"unique_id":"rJryibIZVbn0OkZHxbeFj","model_hash":1381046002,"text_dimensions":-1.30003572907298,"door_coords":{"x":-152.02444458007813,"y":-1622.647705078125,"z":33.8377571105957}}],"door_name":"Entrance","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":2,"perms":{"job":[{"name":"families","grade":0}],"identifier":[]},"location_group":"Families","door_data":[{"unique_id":"qZoYZIuZsdvzemtjmj233","model_hash":1543383628,"text_dimensions":-1.30003572907298,"door_coords":{"x":-153.03646850585938,"y":-1618.813232421875,"z":33.8377571105957}}],"door_name":"Toilet","secret":false,"state":false,"default_state":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":3,"perms":{"job":[{"name":"families","grade":0}],"identifier":[]},"location_group":"Families","door_data":[{"unique_id":"9A9A7i4A52cmX1y9Aw8hD","model_hash":1543383628,"text_dimensions":-1.30003572907298,"door_coords":{"x":-159.6214141845703,"y":-1614.5133056640626,"z":33.83805084228515}}],"door_name":"Planning Room","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":4,"perms":{"job":[{"name":"families","grade":0}],"identifier":[]},"location_group":"Families","door_data":[{"unique_id":"miroZXfWcL2AlW7rkAuDG","model_hash":1543383628,"text_dimensions":-1.30003572907298,"door_coords":{"x":-160.897705078125,"y":-1615.5655517578126,"z":33.83805084228515}}],"door_name":"Office","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/fire_station.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/fire_station.json
new file mode 100644
index 000000000..03cadcb3f
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/fire_station.json
@@ -0,0 +1 @@
+{"name":"fire_station.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"lsfd"},{"grade":0,"name":"fire"}],"identifier":[]},"location_group":"Davis Fire Station","door_data":[{"model_hash":1934132135,"unique_id":"4-bOHLb4uZq84_SoZTdqJ","text_dimensions":0,"door_coords":{"x":215.24916076660157,"y":-1646.30615234375,"z":31.07854843139648}}],"door_name":"Garage Door 1","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"secret":false,"distance":10},{"id":2,"perms":{"job":[{"grade":0,"name":"lsfd"},{"grade":0,"name":"fire"}],"identifier":[]},"location_group":"Davis Fire Station","door_data":[{"model_hash":1934132135,"unique_id":"_JArIytAlj34ggB8awAO6","text_dimensions":0,"door_coords":{"x":211.3808135986328,"y":-1644.57666015625,"z":32.726806640625}}],"door_name":"Garage Door 2","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"secret":false,"distance":10},{"id":3,"perms":{"job":[{"grade":0,"name":"lsfd"},{"grade":0,"name":"fire"}],"identifier":[]},"location_group":"Davis Fire Station","door_data":[{"model_hash":1934132135,"unique_id":"_f7R07X2CllHTSZ6Y3WD3","text_dimensions":0,"door_coords":{"x":208.9705810546875,"y":-1641.097900390625,"z":30.77299118041992}}],"door_name":"Garage Door 3","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"secret":false,"distance":10},{"id":4,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"Davis Fire Station","door_data":[{"model_hash":-585526495,"unique_id":"YvC2Y5Hd5EjIXChBEFI1m","text_dimensions":1.3471599817276,"door_coords":{"x":199.2920379638672,"y":-1634.4873046875,"z":29.02260017395019}}],"door_name":"Entrance","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":5,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"Davis Fire Station","door_data":[{"model_hash":-903733315,"unique_id":"uPGndC4ownZt6Wz0X6cr6","text_dimensions":1.30580970467042,"door_coords":{"x":201.8855438232422,"y":-1643.5914306640626,"z":28.79732513427734}}],"door_name":"Truck Area","default_state":true,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":6,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"Davis Fire Station","door_data":[{"model_hash":-903733315,"unique_id":"HDKBzntSQ3ileUlDfBA9k","text_dimensions":1.30580970467042,"door_coords":{"x":213.99725341796876,"y":-1653.7640380859376,"z":28.79732513427734}}],"door_name":"Kitchen 1","default_state":true,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":7,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"Davis Fire Station","door_data":[{"model_hash":-903733315,"unique_id":"ufqCYPAGkixHgosj_4yLZ","text_dimensions":1.30580970467042,"door_coords":{"x":219.44656372070313,"y":-1660.234619140625,"z":28.79732513427734}}],"door_name":"Kitchen 2","default_state":true,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":8,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"Davis Fire Station","door_data":[{"model_hash":-903733315,"unique_id":"SsVQ8EOJODE4drG8Wz6bF","text_dimensions":1.30580970467042,"door_coords":{"x":215.77471923828129,"y":-1664.6104736328126,"z":28.79732513427734}}],"door_name":"Dorm","default_state":true,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":9,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"Davis Fire Station","door_data":[{"model_hash":-903733315,"unique_id":"fqz-ZQ8OWruBX7TR_sepu","text_dimensions":1.30580970467042,"door_coords":{"x":212.9152069091797,"y":-1665.985595703125,"z":28.79732513427734}}],"door_name":"Toilet 1","default_state":false,"state":false,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":10,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"Davis Fire Station","door_data":[{"model_hash":-903733315,"unique_id":"vVSZAre6TJS_vPFC8rDOn","text_dimensions":1.30580970467042,"door_coords":{"x":208.41867065429688,"y":-1662.2125244140626,"z":28.79732513427734}}],"door_name":"Toilet 2","default_state":false,"state":false,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":11,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"Davis Fire Station","door_data":[{"model_hash":-1056920428,"unique_id":"g71jdmxquOLREP8IycyV0","text_dimensions":-1.03425157753875,"door_coords":{"x":202.52650451660157,"y":-1653.49365234375,"z":29.95660018920898}},{"model_hash":-1056920428,"unique_id":"JE5AFe6xNrJ2AsUr-n2zM","text_dimensions":-1.03425157753875,"door_coords":{"x":204.11105346679688,"y":-1654.8232421875,"z":29.95660018920898}}],"door_name":"Fun Room","default_state":true,"state":true,"camera":true,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2},{"id":12,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"Davis Fire Station","door_data":[{"model_hash":-903733315,"unique_id":"lx9H3323Aj7VP_bI6Axh5","text_dimensions":1.30580970467042,"door_coords":{"x":207.65188598632813,"y":-1660.5499267578126,"z":28.79732513427734}}],"door_name":"Hallway","default_state":true,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":13,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"Davis Fire Station","door_data":[{"model_hash":-903733315,"unique_id":"zX_RCFgRtEwDmFsv23kmm","text_dimensions":1.30580970467042,"door_coords":{"x":200.4056854248047,"y":-1645.355224609375,"z":28.79732513427734}}],"door_name":"Office","default_state":true,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":14,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"El Burro Fire Station","door_data":[{"model_hash":1934132135,"unique_id":"fqDJQi9teGICUZnGn2bmx","text_dimensions":0,"door_coords":{"x":1204.82373046875,"y":-1464.642333984375,"z":37.78242111206055}}],"door_name":"Garage Door 1","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"secret":false,"distance":10},{"id":15,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"El Burro Fire Station","door_data":[{"model_hash":1934132135,"unique_id":"F7DZXmgLYlZaCQEdS71_i","text_dimensions":0,"door_coords":{"x":1200.748779296875,"y":-1463.509521484375,"z":35.91725158691406}}],"door_name":"Garage Door 2","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"secret":false,"distance":10},{"id":16,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"El Burro Fire Station","door_data":[{"model_hash":1934132135,"unique_id":"_mpjWLIMn6_z3Atf9RUYG","text_dimensions":0,"door_coords":{"x":1196.666259765625,"y":-1463.5185546875,"z":35.87374877929687}}],"door_name":"Garage Door 3","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"secret":false,"distance":10},{"id":17,"perms":{"job":[{"grade":0,"name":"lsfd"},{"grade":0,"name":"fire"}],"identifier":[]},"location_group":"El Burro Fire Station","door_data":[{"model_hash":-585526495,"unique_id":"b2WP9OYuSGFU5vthf1cSy","text_dimensions":1.3471599817276,"door_coords":{"x":1185.0029296875,"y":-1464.6861572265626,"z":34.07891082763672}}],"door_name":"Entrance","default_state":true,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":18,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"El Burro Fire Station","door_data":[{"model_hash":-903733315,"unique_id":"hDU6XygGlIb-AVKFpwRlS","text_dimensions":1.30580970467042,"door_coords":{"x":1192.8416748046876,"y":-1469.9932861328126,"z":33.85363388061523}}],"door_name":"Truck Area","default_state":true,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":19,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"El Burro Fire Station","door_data":[{"model_hash":-903733315,"unique_id":"CUs4UMOK7SwNX1dARCjGM","text_dimensions":1.30580970467042,"door_coords":{"x":1192.841796875,"y":-1472.295654296875,"z":33.85363388061523}}],"door_name":"Office","default_state":true,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":20,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"El Burro Fire Station","door_data":[{"model_hash":-1056920428,"unique_id":"oLPOphgL0-MRODVFiIYzp","text_dimensions":-1.03425157753875,"door_coords":{"x":1201.76611328125,"y":-1477.1668701171876,"z":35.01290893554687}},{"model_hash":-1056920428,"unique_id":"E_i6Y476QOHTv7j-RxXsp","text_dimensions":-1.03425157753875,"door_coords":{"x":1199.6976318359376,"y":-1477.1668701171876,"z":35.01290893554687}}],"door_name":"Fun Area","default_state":true,"state":true,"camera":true,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2},{"id":21,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"El Burro Fire Station","door_data":[{"model_hash":-903733315,"unique_id":"LM67IfzAmQmYAAlDtEBjX","text_dimensions":1.30580970467042,"door_coords":{"x":1208.6585693359376,"y":-1470.000732421875,"z":33.85363388061523}}],"door_name":"Kitchen 1","default_state":true,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":22,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"El Burro Fire Station","door_data":[{"model_hash":-903733315,"unique_id":"OoLLn3e9-5v0jZuE-IADx","text_dimensions":1.30580970467042,"door_coords":{"x":1216.9921875,"y":-1471.4547119140626,"z":33.85363388061523}}],"door_name":"Kitchen 2","default_state":true,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":23,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"El Burro Fire Station","door_data":[{"model_hash":-903733315,"unique_id":"8J_RQC4fkXONd_MRSoC3b","text_dimensions":1.30580970467042,"door_coords":{"x":1216.9921875,"y":-1477.1669921875,"z":33.85363388061523}}],"door_name":"Dorm","default_state":true,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":24,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"El Burro Fire Station","door_data":[{"model_hash":-903733315,"unique_id":"pIer48woeqUCcBvSz0OEE","text_dimensions":1.30580970467042,"door_coords":{"x":1215.685546875,"y":-1480.0584716796876,"z":33.85363388061523}}],"door_name":"Toilet 1","default_state":false,"state":false,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":25,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"El Burro Fire Station","door_data":[{"model_hash":-903733315,"unique_id":"AfKF8lqCm8h8zu0D2wTua","text_dimensions":1.30580970467042,"door_coords":{"x":1209.815673828125,"y":-1480.0584716796876,"z":33.85363388061523}}],"door_name":"Toilet 2","default_state":false,"state":false,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":26,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"El Burro Fire Station","door_data":[{"model_hash":-903733315,"unique_id":"ejkQ1DlKWwyS7bZuzM75d","text_dimensions":1.30580970467042,"door_coords":{"x":1211.134521484375,"y":-1477.1669921875,"z":33.85363388061523}}],"door_name":"Lockers 1","default_state":true,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":27,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"El Burro Fire Station","door_data":[{"model_hash":-903733315,"unique_id":"GgySWIZGgNefft_l5dLd8","text_dimensions":1.30580970467042,"door_coords":{"x":1208.6591796875,"y":-1473.365234375,"z":33.85363388061523}}],"door_name":"Lockers 2","default_state":true,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":28,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"El Burro Fire Station","door_data":[{"model_hash":-903733315,"unique_id":"N3rFbQTmbr8Z40NnxE7ta","text_dimensions":1.30580970467042,"door_coords":{"x":1208.15966796875,"y":-1479.2777099609376,"z":33.85363388061523}}],"door_name":"Hallway","default_state":true,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":29,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"El Burro Fire Station","door_data":[{"model_hash":-903733315,"unique_id":"5I21nBEz68EUq2z1jSZkB","text_dimensions":1.30580970467042,"door_coords":{"x":211.2875213623047,"y":-1660.84521484375,"z":28.79732513427734}}],"door_name":"Lockers 1","default_state":true,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":30,"perms":{"job":[{"grade":0,"name":"fire"},{"grade":0,"name":"lsfd"}],"identifier":[]},"location_group":"Davis Fire Station","door_data":[{"model_hash":-903733315,"unique_id":"C3x_Zhv1GVPe4padqfBWZ","text_dimensions":1.30580970467042,"door_coords":{"x":211.8350830078125,"y":-1656.341796875,"z":28.79732513427734}}],"door_name":"Lockers 2","default_state":true,"state":true,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/harmony_repair.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/harmony_repair.json
new file mode 100644
index 000000000..f157d9272
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/harmony_repair.json
@@ -0,0 +1 @@
+{"name":"harmony_repair.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"Harmony Repair","door_data":[{"unique_id":"OpFkFUYupwHE9JaWYDFrA","model_hash":-822900180,"text_dimensions":0,"door_coords":{"x":1182.3072509765626,"y":2644.164306640625,"z":40.50829315185547}}],"door_name":"Garage Door 1","secret":false,"state":true,"default_state":true,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"camera":true,"distance":10},{"id":2,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"Harmony Repair","door_data":[{"unique_id":"4-ob7fjNdViC-3KI5hs0M","model_hash":-822900180,"text_dimensions":0,"door_coords":{"x":1174.6546630859376,"y":2645.240478515625,"z":39.30941390991211}}],"door_name":"Garage Door 2","secret":false,"state":true,"default_state":true,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"camera":true,"distance":10},{"id":3,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"Harmony Repair","door_data":[{"unique_id":"1WkBfQU-QF9lE3txaXSYc","model_hash":1335311341,"text_dimensions":-1.30146599147701,"door_coords":{"x":1187.2027587890626,"y":2644.949951171875,"z":38.55176544189453}}],"door_name":"Entrance","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/haters.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/haters.json
new file mode 100644
index 000000000..3be620284
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/haters.json
@@ -0,0 +1 @@
+{"name":"haters.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Haters","door_data":[{"model_hash":932235872,"unique_id":"2Jgch1j-Wdq0ECEeZVDFP","text_dimensions":1.17663345026812,"door_coords":{"x":-1118.5753173828126,"y":-1440.6566162109376,"z":4.28510618209838}}],"door_name":"Entrance","default_state":true,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Haters","door_data":[{"model_hash":396177650,"unique_id":"Zv8Gk70rzM3tJcfKTWpvX","text_dimensions":1.36893741931271,"door_coords":{"x":-1128.949462890625,"y":-1439.9857177734376,"z":4.29096794128418}}],"door_name":"Backrooms","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":3,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Haters","door_data":[{"model_hash":396177650,"unique_id":"hOW_M7-QieqdC6oEA-Ffb","text_dimensions":1.36893741931271,"door_coords":{"x":-1130.740966796875,"y":-1441.2430419921876,"z":4.28182792663574}}],"door_name":"Toilet","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":4,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Haters","door_data":[{"model_hash":779130623,"unique_id":"yQSRdk-sUkI8NsaerHJFv","text_dimensions":1.13503436889004,"door_coords":{"x":-1126.05419921875,"y":-1446.529541015625,"z":4.34477233886718}}],"door_name":"Side Exit","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/hayes_auto.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/hayes_auto.json
new file mode 100644
index 000000000..66c616e1d
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/hayes_auto.json
@@ -0,0 +1 @@
+{"name":"hayes_auto.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"mechanic"}],"identifier":[]},"location_group":"Hayes Auto","door_data":[{"unique_id":"nK5AJ4eUDt-_G83almCHB","model_hash":-634936098,"text_dimensions":1.30132499436149,"door_coords":{"x":-1434.1552734375,"y":-448.5860900878906,"z":36.05923461914062}}],"door_name":"Entrance","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"mechanic"}],"identifier":[]},"location_group":"Hayes Auto","door_data":[{"unique_id":"xbaSKVb-AGtC5eP88t0UW","model_hash":1715394473,"text_dimensions":6.50143504142761,"door_coords":{"x":-1427.3223876953126,"y":-444.1544189453125,"z":39.21000289916992}}],"door_name":"Garage Door 1","default_state":true,"state":true,"secret":false,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"camera":true,"distance":10},{"id":3,"perms":{"job":[{"grade":0,"name":"mechanic"}],"identifier":[]},"location_group":"Hayes Auto","door_data":[{"unique_id":"UmkTz3t-QxxKqCwUIyHbI","model_hash":1715394473,"text_dimensions":6.50143504142761,"door_coords":{"x":-1421.115966796875,"y":-440.27490234375,"z":39.21000289916992}}],"door_name":"Garage Door 2","default_state":true,"state":true,"secret":false,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"camera":true,"distance":10},{"id":4,"perms":{"job":[{"grade":0,"name":"mechanic"}],"identifier":[]},"location_group":"Hayes Auto","door_data":[{"unique_id":"kWzRXpUMKLWjq_7no-43O","model_hash":1715394473,"text_dimensions":6.50143504142761,"door_coords":{"x":-1414.868408203125,"y":-436.3688049316406,"z":39.21000289916992}}],"door_name":"Garage Door 3","default_state":true,"state":true,"secret":false,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"camera":true,"distance":10},{"id":5,"perms":{"job":[{"grade":0,"name":"mechanic"}],"identifier":[]},"location_group":"Hayes Auto","door_data":[{"unique_id":"rfI6I4AHV3JWbG5CyCKwi","model_hash":1289778077,"text_dimensions":1.30132499436149,"door_coords":{"x":-1427.525390625,"y":-455.6804504394531,"z":36.05956268310547}}],"door_name":"Office","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/import_garage.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/import_garage.json
new file mode 100644
index 000000000..1b1f4252f
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/import_garage.json
@@ -0,0 +1 @@
+{"name":"import_garage.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"Import Garage","door_data":[{"unique_id":"I8mbPMDWAThi_oQV8UKKF","model_hash":-983965772,"text_dimensions":0,"door_coords":{"x":945.8359375,"y":-984.0308227539064,"z":43.87417984008789}}],"door_name":"Entrance","default_state":true,"state":true,"camera":true,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"secret":false,"distance":10},{"id":2,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"Import Garage","door_data":[{"unique_id":"ZMtuzB8Bthhuj_DEmywyk","model_hash":1289778077,"text_dimensions":1.30132499436149,"door_coords":{"x":948.5287475585938,"y":-965.3519287109376,"z":39.64354705810547}}],"door_name":"Staff Room 1","default_state":true,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":3,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"Import Garage","door_data":[{"unique_id":"MttAGQnX3B1CQ51Hrn5T1","model_hash":-626684119,"text_dimensions":1.30132499436149,"door_coords":{"x":955.358154296875,"y":-972.4451904296876,"z":39.64791870117187}}],"door_name":"Staff Room 2","default_state":true,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/impound_lot.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/impound_lot.json
new file mode 100644
index 000000000..25b15751d
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/impound_lot.json
@@ -0,0 +1 @@
+{"name":"impound_lot.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Impound Lot","door_data":[{"model_hash":1286535678,"unique_id":"IMzop4XrzKDXoGIZQShv6","text_dimensions":7.56022737920284,"door_coords":{"x":-171.64244079589845,"y":-1160.677001953125,"z":22.63815879821777}}],"door_name":"Entrance 1","secret":false,"state":true,"default_state":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"camera":true,"distance":10},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Impound Lot","door_data":[{"model_hash":1286535678,"unique_id":"c88lc8D-thKX2whZ2pAWC","text_dimensions":7.56022737920284,"door_coords":{"x":-156.9066925048828,"y":-1169.6063232421876,"z":22.08901405334472}}],"door_name":"Parking","secret":false,"state":false,"default_state":false,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"camera":true,"distance":10},{"id":3,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Impound Lot","door_data":[{"model_hash":1286535678,"unique_id":"r_Aek_-ZexqHPSNdN3u_H","text_dimensions":7.56022737920284,"door_coords":{"x":-226.14630126953129,"y":-1168.806396484375,"z":22.08235740661621}}],"door_name":"Parking 2","secret":false,"state":false,"default_state":false,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"camera":true,"distance":10},{"id":4,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Impound Lot","door_data":[{"model_hash":1286535678,"unique_id":"8oqr6GGvP70FeD0uOq20v","text_dimensions":7.56022737920284,"door_coords":{"x":-229.66925048828129,"y":-1158.824951171875,"z":22.09461784362793}}],"door_name":"Entrance 2","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"gates","lockpickable":false,"camera":true,"distance":10},{"id":5,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Impound Lot","door_data":[{"model_hash":97297972,"unique_id":"qD5GTAL36dJK-sdvEKfST","text_dimensions":-1.30065524578094,"door_coords":{"x":-190.7104034423828,"y":-1160.464599609375,"z":23.82123947143554}}],"door_name":"Office Entrance","secret":false,"state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":6,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Impound Lot","door_data":[{"model_hash":-952356348,"unique_id":"PZ2bhmVxy3bt2lJXt3VmF","text_dimensions":-1.30063444375991,"door_coords":{"x":-187.0614013671875,"y":-1162.3486328125,"z":23.82123947143554}}],"door_name":"Office","secret":false,"state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":7,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Impound Lot","door_data":[{"model_hash":97297972,"unique_id":"rIo8Q9OVRfuykfJHUebzd","text_dimensions":-1.30065524578094,"door_coords":{"x":-189.6360015869141,"y":-1167.8836669921876,"z":23.82123947143554}}],"door_name":"Office Exit","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/la_mesa_pd.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/la_mesa_pd.json
new file mode 100644
index 000000000..1bde4f494
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/la_mesa_pd.json
@@ -0,0 +1 @@
+{"name":"la_mesa_pd.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"La Mesa PD","door_data":[{"model_hash":277920071,"unique_id":"zdyaB_UJUI8EuzYQBCawm","text_dimensions":-1.30229246546514,"door_coords":{"x":827.9519653320313,"y":-1288.785888671875,"z":28.37116050720215}},{"model_hash":-34368499,"unique_id":"6SWvXUwsGuaqTmFc0m_R5","text_dimensions":-1.30229246546514,"door_coords":{"x":827.9519653320313,"y":-1291.386474609375,"z":28.37116050720215}}],"door_name":"Entrance","state":false,"default_state":true,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"La Mesa PD","door_data":[{"model_hash":-147896569,"unique_id":"wuEL7u74Y0wVTePB0DJMg","text_dimensions":1.13935311837121,"door_coords":{"x":835.9443359375,"y":-1292.1925048828126,"z":27.78267097473144}}],"door_name":"Waiting room","state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":3,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"La Mesa PD","door_data":[{"model_hash":-1011300766,"unique_id":"FfE8mL2wwSj7CEMDQZPDx","text_dimensions":-1.30229246546514,"door_coords":{"x":840.0883178710938,"y":-1280.998291015625,"z":28.37116050720215}}],"door_name":"Observation","state":true,"default_state":true,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":4,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"La Mesa PD","door_data":[{"model_hash":-1983352576,"unique_id":"_sWUoureJ3qoohvITJycb","text_dimensions":-1.30229246546514,"door_coords":{"x":849.932373046875,"y":-1287.3460693359376,"z":28.37116050720215}},{"model_hash":2076628221,"unique_id":"Z3rsJSBAUdYrbxTbh3X8D","text_dimensions":-1.30229246546514,"door_coords":{"x":852.5330200195313,"y":-1287.3460693359376,"z":28.37116050720215}}],"door_name":"Meeting Room 1","state":true,"default_state":true,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2},{"id":5,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"La Mesa PD","door_data":[{"model_hash":-1983352576,"unique_id":"JspAclpp2H5AA8Kzgd6Gw","text_dimensions":-1.30229246546514,"door_coords":{"x":856.50732421875,"y":-1287.3460693359376,"z":28.37116050720215}},{"model_hash":2076628221,"unique_id":"pO3zimqQczTCkzWlNdqtc","text_dimensions":-1.30229246546514,"door_coords":{"x":859.1080322265625,"y":-1287.3460693359376,"z":28.37116050720215}}],"door_name":"Meeting Room 2","state":true,"default_state":true,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2},{"id":6,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"La Mesa PD","door_data":[{"model_hash":539497004,"unique_id":"2T-uUOHkmY_N6aalPDv4v","text_dimensions":-1.30229246546514,"door_coords":{"x":858.8648681640625,"y":-1291.3841552734376,"z":28.37110710144043}}],"door_name":"Archives","state":true,"default_state":true,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":7,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"La Mesa PD","door_data":[{"model_hash":272264766,"unique_id":"O5ncSDRebOEExdQnHz7XM","text_dimensions":-1.30229246546514,"door_coords":{"x":846.3695068359375,"y":-1310.0399169921876,"z":28.37110710144043}}],"door_name":"Evidence","state":true,"default_state":true,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":8,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"La Mesa PD","door_data":[{"model_hash":-1213101062,"unique_id":"eMoMaKrSmMvxfXzpIcu6E","text_dimensions":-1.30229246546514,"door_coords":{"x":854.781005859375,"y":-1310.0399169921876,"z":28.37110710144043}}],"door_name":"Lockers","state":true,"default_state":true,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":9,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"La Mesa PD","door_data":[{"model_hash":-1213101062,"unique_id":"HCfke4YTUbthwmNkrH7fl","text_dimensions":-1.30229246546514,"door_coords":{"x":855.7420654296875,"y":-1314.6080322265626,"z":28.37110710144043}}],"door_name":"Lockers 2","state":true,"default_state":true,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":10,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"La Mesa PD","door_data":[{"model_hash":-1339729155,"unique_id":"UkTpHJHXSqhVqROXPUHBb","text_dimensions":-1.30229246546514,"door_coords":{"x":859.0074462890625,"y":-1320.1241455078126,"z":28.37110710144043}}],"door_name":"Side Entrance","state":true,"default_state":true,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":11,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"La Mesa PD","door_data":[{"model_hash":1491736897,"unique_id":"3lcAdHAfmqHE9a9QdGONG","text_dimensions":-1.30229246546514,"door_coords":{"x":837.260986328125,"y":-1309.5133056640626,"z":28.37110710144043}}],"door_name":"Break Room","state":true,"default_state":true,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":12,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"La Mesa PD","door_data":[{"model_hash":1162089799,"unique_id":"5Ved7O5y63wyrO8VUe-rQ","text_dimensions":-1.30229246546514,"door_coords":{"x":834.28125,"y":-1295.9853515625,"z":28.37116050720215}}],"door_name":"Cell","state":true,"default_state":true,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/legion_ammu.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/legion_ammu.json
new file mode 100644
index 000000000..a0995bcc1
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/legion_ammu.json
@@ -0,0 +1 @@
+{"name":"legion_ammu.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Legion Ammunation","door_data":[{"unique_id":"nbHXWzKoSc4ApI78V6BJw","model_hash":97297972,"text_dimensions":-1.30065524578094,"door_coords":{"x":16.12786865234375,"y":-1114.605224609375,"z":29.94693565368652}},{"unique_id":"8yYae-C57bhKVjbGK7Ey_","model_hash":-8873588,"text_dimensions":-1.30482494086027,"door_coords":{"x":18.5720100402832,"y":-1115.4947509765626,"z":29.94693565368652}}],"door_name":"Entrance","camera":false,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"default_state":true,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Legion Ammunation","door_data":[{"unique_id":"GfkAgH-8LefLBG7RmppsJ","model_hash":44561767,"text_dimensions":1.30005121603608,"door_coords":{"x":7.14657020568847,"y":-1101.1256103515626,"z":29.89739036560058}}],"door_name":"Firing Range 1st","camera":false,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":3,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Legion Ammunation","door_data":[{"unique_id":"Y7COFgBk8mUyhUiu6y057","model_hash":44561767,"text_dimensions":1.30005121603608,"door_coords":{"x":8.04443550109863,"y":-1098.65869140625,"z":29.89739036560058}}],"door_name":"Firing Range 2nd","camera":false,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":4,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Legion Ammunation","door_data":[{"unique_id":"uf-m_G0-qE-C7XtOA3cE5","model_hash":44561767,"text_dimensions":1.30005121603608,"door_coords":{"x":8.49085712432861,"y":-1094.3902587890626,"z":29.91464042663574}}],"door_name":"Firing Range to Targets","camera":false,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/lost_mc.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/lost_mc.json
new file mode 100644
index 000000000..a1b8a030b
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/lost_mc.json
@@ -0,0 +1 @@
+{"name":"lost_mc.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"lost"}],"identifier":[]},"location_group":"Lost MC","door_data":[{"model_hash":-930593859,"unique_id":"vY12UnQm9UmfNX8_CYiLE","text_dimensions":-7.51867733895778,"door_coords":{"x":950.2341918945313,"y":-133.98422241210938,"z":73.57417297363281}}],"door_name":"Gate","camera":true,"state":true,"default_state":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"secret":false,"distance":10},{"id":2,"perms":{"job":[{"grade":0,"name":"lost"}],"identifier":[]},"location_group":"Lost MC","door_data":[{"model_hash":-197537718,"unique_id":"mUrWbGuLhCnXIEfe8w46h","text_dimensions":0,"door_coords":{"x":982.3779907226564,"y":-125.3655014038086,"z":75.03974914550781}}],"door_name":"Workshop Garage Door","camera":true,"state":true,"default_state":true,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"secret":false,"distance":10},{"id":3,"perms":{"job":[{"grade":0,"name":"lost"}],"identifier":[]},"location_group":"Lost MC","door_data":[{"model_hash":-710818483,"unique_id":"vNsJEgEaN0K67vk4bOy9t","text_dimensions":-1.30139195919036,"door_coords":{"x":990.8673095703124,"y":-132.8908233642578,"z":74.21125030517578}}],"door_name":"Workshop Office","camera":true,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":4,"perms":{"job":[{"grade":0,"name":"lost"}],"identifier":[]},"location_group":"Lost MC","door_data":[{"model_hash":-710818483,"unique_id":"Nvygr7OQY2k7rLScOw7-f","text_dimensions":-1.30139195919036,"door_coords":{"x":994.5238647460938,"y":-119.90499877929688,"z":74.21125030517578}}],"door_name":"Workshop Meeting Room","camera":true,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":5,"perms":{"job":[{"grade":0,"name":"lost"}],"identifier":[]},"location_group":"Lost MC","door_data":[{"model_hash":-710818483,"unique_id":"7xTc-yY7oK8Qsvu_Gie5H","text_dimensions":-1.30139195919036,"door_coords":{"x":1002.6436157226564,"y":-124.8202896118164,"z":74.20452117919922}}],"door_name":"Workshop Toilet","camera":false,"state":false,"default_state":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":6,"perms":{"job":[{"grade":0,"name":"lost"}],"identifier":[]},"location_group":"Lost MC","door_data":[{"model_hash":190770132,"unique_id":"5G5vxQSnvYwCwfRxXFqic","text_dimensions":1.30132499436149,"door_coords":{"x":981.1505126953124,"y":-103.2552490234375,"z":74.99357604980469}}],"door_name":"Entrance","camera":true,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":7,"perms":{"job":[{"grade":0,"name":"lost"}],"identifier":[]},"location_group":"Lost MC","door_data":[{"model_hash":747286790,"unique_id":"vrgwc4kX4gaKOABSX_Twf","text_dimensions":1.30153205513488,"door_coords":{"x":985.6103515625,"y":-95.16253662109377,"z":74.99793243408203}}],"door_name":"Whiteboard","camera":true,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":8,"perms":{"job":[{"grade":0,"name":"lost"}],"identifier":[]},"location_group":"Lost MC","door_data":[{"model_hash":-822900180,"unique_id":"g78noRNge9zY1YlU-SVup","text_dimensions":0,"door_coords":{"x":968.0278930664064,"y":-111.32440948486328,"z":77.11673736572266}}],"door_name":"Workshop 2 Garage 1","camera":true,"state":true,"default_state":true,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"secret":false,"distance":10},{"id":9,"perms":{"job":[{"grade":0,"name":"lost"}],"identifier":[]},"location_group":"Lost MC","door_data":[{"model_hash":-822900180,"unique_id":"6AqzfH8kDtWZwfGQT3EtQ","text_dimensions":0,"door_coords":{"x":962.43310546875,"y":-116.54352569580078,"z":77.11695861816406}}],"door_name":"Workshop 2 Garage 2","camera":true,"state":true,"default_state":true,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"secret":false,"distance":10},{"id":10,"perms":{"job":[{"grade":0,"name":"lost"}],"identifier":[]},"location_group":"Lost MC","door_data":[{"model_hash":1335311341,"unique_id":"TeXn6MObu0NVVlwptBbwy","text_dimensions":-1.30146599147701,"door_coords":{"x":959.38232421875,"y":-120.45116424560549,"z":75.16157531738281}}],"door_name":"Workshop 2 Entrance","camera":true,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ls_customs.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ls_customs.json
new file mode 100644
index 000000000..0aa05bef7
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ls_customs.json
@@ -0,0 +1 @@
+{"name":"ls_customs.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"LS Customs","door_data":[{"unique_id":"AJCoaYAgCf3mvCazZOQvk","model_hash":270330101,"text_dimensions":0,"door_coords":{"x":724.2821655273438,"y":-1088.831298828125,"z":25.27529716491699}}],"door_name":"Garage Door","camera":true,"state":true,"secret":false,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"default_state":true,"distance":10}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ltd_grove.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ltd_grove.json
new file mode 100644
index 000000000..0e2473d1c
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ltd_grove.json
@@ -0,0 +1 @@
+{"name":"ltd_grove.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"LDT Grove","door_data":[{"model_hash":2065277225,"unique_id":"NlfRJlr2R8JqWL587PhTh","text_dimensions":-1.30149215459823,"door_coords":{"x":-51.96669387817383,"y":-1757.38671875,"z":29.57094001770019}},{"model_hash":-868672903,"unique_id":"-D9-R1d5ni3Mm0EuSTgS6","text_dimensions":-1.30149215459823,"door_coords":{"x":-53.96111297607422,"y":-1755.7171630859376,"z":29.57094001770019}}],"door_name":"Entrance","default_state":false,"state":false,"camera":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/marabunta.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/marabunta.json
new file mode 100644
index 000000000..f3d660f58
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/marabunta.json
@@ -0,0 +1 @@
+{"name":"marabunta.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"marabunta","grade":0}],"identifier":[]},"location_group":"Marabunta","door_data":[{"unique_id":"pbQ8yjBbs0QB1Uan4Ot-V","model_hash":-955445187,"text_dimensions":-1.30003573931753,"door_coords":{"x":1250.22265625,"y":-1583.8017578125,"z":54.73964691162109}}],"door_name":"Entrance","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":2,"perms":{"job":[{"name":"marabunta","grade":0}],"identifier":[]},"location_group":"Marabunta","door_data":[{"unique_id":"RJnNwu4-SGS8Ba5E0vGG9","model_hash":-296755518,"text_dimensions":-1.30003574956208,"door_coords":{"x":1249.2711181640626,"y":-1577.429931640625,"z":58.53964614868164}}],"door_name":"Office","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":3,"perms":{"job":[{"name":"marabunta","grade":0}],"identifier":[]},"location_group":"Marabunta","door_data":[{"unique_id":"7bmROe64ocJzFqdLCo4xc","model_hash":-296755518,"text_dimensions":-1.30003574956208,"door_coords":{"x":1250.4375,"y":-1575.6448974609376,"z":58.53964614868164}}],"door_name":"Planning Room","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":4,"perms":{"job":[{"name":"Toilet","grade":0}],"identifier":[]},"location_group":"Marabunta","door_data":[{"unique_id":"9LI4m0m3eVvJ5Qh2UNdzW","model_hash":-296755518,"text_dimensions":-1.30003574956208,"door_coords":{"x":1253.078857421875,"y":-1573.79541015625,"z":58.53964614868164}}],"door_name":"Toilet","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":5,"perms":{"job":[{"name":"marabunta","grade":0}],"identifier":[]},"location_group":"Marabunta","door_data":[{"unique_id":"C7OXrkTvor8Cq60sFKmA3","model_hash":-658590816,"text_dimensions":-1.30003573931753,"door_coords":{"x":1251.9793701171876,"y":-1569.2835693359376,"z":58.93437576293945}}],"door_name":"Upstairs Entrance","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":6,"perms":{"job":[{"name":"marabunta","grade":0}],"identifier":[]},"location_group":"Marabunta","door_data":[{"unique_id":"QIOU-q0oRr23Hkc0K2Lzs","model_hash":-296755518,"text_dimensions":-1.30003574956208,"door_coords":{"x":1257.9617919921876,"y":-1574.589599609375,"z":58.53964614868164}}],"door_name":"Staircase","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/mba.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/mba.json
new file mode 100644
index 000000000..abd7d44af
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/mba.json
@@ -0,0 +1,5 @@
+{
+ "imported": false,
+ "data": [{"location_group":"Maze Bank Arena","door_name":"Entrance Left","door_data":[{"model_hash":-1911661372,"text_dimensions":-1.20012360850768,"unique_id":"YQTjMbcN7tNvXCWqf4THh","door_coords":{"z":30.25301742553711,"x":-282.5875549316406,"y":-1924.78369140625}},{"model_hash":160224187,"text_dimensions":-1.20012363850769,"unique_id":"IcPFC9yPXBofPzn5VhTTu","door_coords":{"z":30.25301742553711,"x":-284.4262390136719,"y":-1923.2408447265626}}],"default_state":false,"id":1,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":false,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Entrance Right","door_data":[{"model_hash":-1911661372,"text_dimensions":-1.20012360850768,"unique_id":"VUW46ibFoe5wMAXZoQ2xl","door_coords":{"z":30.25301742553711,"x":-286.56707763671877,"y":-1921.4444580078128}},{"model_hash":160224187,"text_dimensions":-1.20012363850769,"unique_id":"kvkFEca5qdS7CJ99JIeoo","door_coords":{"z":30.25301742553711,"x":-288.4057922363281,"y":-1919.901611328125}}],"default_state":false,"id":2,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":false,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Side Right","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"A8awpyjs0uvWgGDltvSKg","door_coords":{"z":30.25301742553711,"x":-302.5463562011719,"y":-1924.853271484375}},{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"QV3BSh-CQKXE196lOUmzt","door_coords":{"z":30.25301742553711,"x":-301.0034484863281,"y":-1923.014404296875}}],"default_state":true,"id":3,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Tickets Yellow","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"ARNu1PBx8BLSYJ3L7V-tZ","door_coords":{"z":30.25301742553711,"x":-302.0007629394531,"y":-1920.2303466796876}}],"default_state":true,"id":4,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"single","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"VIP 2nd Floor 1","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"Nvj3jYHxJovLiQdyPQElj","door_coords":{"z":34.15301895141601,"x":-307.4936218261719,"y":-1925.220703125}},{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"ZQxQ3n1-PIJ7fzqruw1BQ","door_coords":{"z":34.15301895141601,"x":-309.3323974609375,"y":-1923.677734375}}],"default_state":true,"id":5,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"VIP 2nd Floor 2","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"TwC06bMzt3ZW71QwH5jmP","door_coords":{"z":34.15301895141601,"x":-284.5105285644531,"y":-1944.5057373046876}},{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"SK14UocgfOFyQ7lZb7Tgz","door_coords":{"z":34.15301895141601,"x":-282.6717529296875,"y":-1946.0487060546876}}],"default_state":true,"id":6,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"VIP Elevator 1","door_data":[{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"hGi7RgKu-2DWNqMd6ZVma","door_coords":{"z":33.04344177246094,"x":-305.1551208496094,"y":-1926.9359130859376}},{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"L1-bqAGgHIJ54ou2B--nd","door_coords":{"z":33.04214859008789,"x":-306.3059387207031,"y":-1925.9676513671876}}],"default_state":false,"id":7,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":false,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"VIP Elevator 2","door_data":[{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"8WrR-CBnKrPh93g1BOWaU","door_coords":{"z":33.04531478881836,"x":-286.6058044433594,"y":-1942.5009765625}},{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"ZwVR-QFU1t6XHr9QB_1AA","door_coords":{"z":33.04531478881836,"x":-285.4530334472656,"y":-1943.4669189453128}}],"default_state":false,"id":8,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":false,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"VIP 3rd Floor Canteen 1","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"S7GlId-ZnKQteNVZHCY0c","door_coords":{"z":38.15301895141601,"x":-309.3323974609375,"y":-1923.677734375}},{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"pybxeqs9XD8r9xQeYethm","door_coords":{"z":38.15301895141601,"x":-307.4936218261719,"y":-1925.220703125}}],"default_state":true,"id":9,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"distance":2,"state":true,"door_type":"double","secret":false,"door_sound":"door_metal.ogg","lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"VIP 3rd Floor Elevator","door_data":[{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"Qw7Ags6zlENVLA2MinCsw","door_coords":{"z":37.04310607910156,"x":-306.3075256347656,"y":-1925.969482421875}},{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"dU5fhbjVEhZCOOOe5DmF8","door_coords":{"z":37.04310607910156,"x":-305.1545104980469,"y":-1926.9351806640626}}],"default_state":false,"id":10,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":false,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"3rd Floor Office 1","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"GajrcmAOKiG7FcxG4vuwu","door_coords":{"z":38.15301895141601,"x":-301.9235534667969,"y":-1932.8466796875}}],"default_state":true,"id":11,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"single","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"3rd Floor Office 2","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"11Vq1tUdzv9MWkcE2V1ON","door_coords":{"z":38.15301895141601,"x":-292.9879455566406,"y":-1940.3446044921876}}],"default_state":true,"id":12,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"single","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"3rd Floor Broadcast","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"cONNxc5961-CNHp8CfVAt","door_coords":{"z":38.15301895141601,"x":-282.6717529296875,"y":-1946.0487060546876}},{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"PaLHO-JVfl_NUNH-E_WCr","door_coords":{"z":38.15301895141601,"x":-284.5105285644531,"y":-1944.5057373046876}}],"default_state":true,"id":13,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Broadcast Elevator","door_data":[{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"1cVto5cskd5o_my1RhyJW","door_coords":{"z":37.04566955566406,"x":-285.4548950195313,"y":-1943.466064453125}},{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"B_D7A5x_MSlzpnllFj7Oy","door_coords":{"z":37.04566955566406,"x":-286.60394287109377,"y":-1942.5018310546876}}],"default_state":false,"id":14,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":false,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"4th Floor Lounge 1","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"UP0YK5HgHapxsN600qbie","door_coords":{"z":42.15301895141601,"x":-284.5105285644531,"y":-1944.5057373046876}},{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"yxGqseUfVJWtUDqw0kMsD","door_coords":{"z":42.15301895141601,"x":-282.6717529296875,"y":-1946.0487060546876}}],"default_state":true,"id":15,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"distance":2,"state":true,"door_type":"double","secret":false,"door_sound":"door_metal.ogg","lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Lounge Elevator 1","door_data":[{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"JhZ15lgThos_Fuu81vmet","door_coords":{"z":41.04566955566406,"x":-285.4548950195313,"y":-1943.466064453125}},{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"Mae5m3nYKY6JfGNTuJMNA","door_coords":{"z":41.04566955566406,"x":-286.60394287109377,"y":-1942.5018310546876}}],"default_state":false,"id":16,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"distance":2,"state":false,"door_type":"double","secret":false,"door_sound":"door_metal.ogg","lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"4th Floor Lounge 2","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"6dFZA0q2q1VXIY4cMpLWc","door_coords":{"z":42.15301895141601,"x":-309.3323974609375,"y":-1923.677734375}},{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"pyFnUlATQaK1JzlxZHvOQ","door_coords":{"z":42.15301895141601,"x":-307.4936218261719,"y":-1925.220703125}}],"default_state":true,"id":17,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Lounge Elevator 2","door_data":[{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"qJ9K_hb13WBhNE4_psnOI","door_coords":{"z":41.04566955566406,"x":-306.3055419921875,"y":-1925.97021484375}},{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"_nGQE7SZR6TFKYdCqT22k","door_coords":{"z":41.04566955566406,"x":-305.156494140625,"y":-1926.9344482421876}}],"default_state":false,"id":18,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":false,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Food and Beverage","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"17teKJiz9SaHV7YifNFun","door_coords":{"z":30.25301742553711,"x":-289.5816345214844,"y":-1937.379638671875}}],"default_state":true,"id":19,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"single","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Merch","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"dhYZS-gmDXia_BagzU5FO","door_coords":{"z":30.25301742553711,"x":-299.5952453613281,"y":-1928.9775390625}}],"default_state":true,"id":20,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"single","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Side Left","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"SY9USjAAFyFjdAs_QqRDV","door_coords":{"z":30.25301742553711,"x":-283.46478271484377,"y":-1937.7310791015626}},{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"z7ghm3ZWCG9W3c10-G7mO","door_coords":{"z":30.25301742553711,"x":-285.0076904296875,"y":-1939.56982421875}}],"default_state":true,"id":21,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Tickets Purple","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"s0_AOxUdwAsWuGgbkBUB2","door_coords":{"z":30.25301742553711,"x":-280.5497741699219,"y":-1938.2298583984376}}],"default_state":true,"id":22,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"single","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Downstairs Left","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"aGhueZUF64hDEEkCvlAEP","door_coords":{"z":21.71078109741211,"x":-283.463623046875,"y":-1937.729736328125}},{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"T3vP9h24pJmRhyqRPLpg0","door_coords":{"z":21.71078109741211,"x":-285.0065612792969,"y":-1939.5684814453128}}],"default_state":true,"id":23,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Downstairs Left Elevator","door_data":[{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"8u24X6DZRKLeQREoTymgH","door_coords":{"z":20.60343360900879,"x":-285.6939392089844,"y":-1940.6826171875}},{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"StAavNwNyAqEggSVACS6s","door_coords":{"z":20.60343360900879,"x":-286.6581115722656,"y":-1941.8316650390626}}],"default_state":false,"id":24,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":false,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Downstairs Right Elevator","door_data":[{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"ybzrG-x1EDmjCi5LTQnJ4","door_coords":{"z":20.60343360900879,"x":-303.5228576660156,"y":-1925.722412109375}},{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"KsZ0ThFxNdWhXAXyMa_Uu","door_coords":{"z":20.60343360900879,"x":-304.4870300292969,"y":-1926.8714599609376}}],"default_state":false,"id":25,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":false,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Doorlock Right","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"ir1De4qWjVC0lqGLydPqn","door_coords":{"z":21.71078109741211,"x":-302.5452270507813,"y":-1924.851806640625}},{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"hI_tjZ7K9N8nlgcSH7y2j","door_coords":{"z":21.71078109741211,"x":-301.0022888183594,"y":-1923.0130615234376}}],"default_state":true,"id":26,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Garage 1","door_data":[{"model_hash":-1098702270,"text_dimensions":0,"unique_id":"nw10hjI0WEpCJR8D_s1hI","door_coords":{"z":24.11402130126953,"x":-375.4384765625,"y":-1880.233642578125}}],"default_state":false,"id":27,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":false,"door_type":"garage","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Garage 2","door_data":[{"model_hash":-1098702270,"text_dimensions":0,"unique_id":"RK2IfWemFghZXVN7g9VEs","door_coords":{"z":24.12458419799804,"x":-386.1567687988281,"y":-1885.44970703125}}],"default_state":false,"id":28,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":false,"door_type":"garage","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Garage Hallway 1","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"yAkEjozyMh9-SEf-mewZ8","door_coords":{"z":21.71078109741211,"x":-353.4983825683594,"y":-1902.735595703125}},{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"l-vFHJfacxqLiBYOprH3j","door_coords":{"z":21.71078109741211,"x":-351.65960693359377,"y":-1904.278564453125}}],"default_state":true,"id":29,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Elevator Left","door_data":[{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"1rAnwS_414q46ji0Y0IeD","door_coords":{"z":29.14566993713379,"x":-285.6939392089844,"y":-1940.6826171875}},{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"8VQaNfPCDfb_cbmeViwhM","door_coords":{"z":29.14566993713379,"x":-286.6581115722656,"y":-1941.8316650390626}}],"default_state":false,"id":30,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":false,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Elevator Right","door_data":[{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"kb-QBEx0U_nj-gE1nAZYE","door_coords":{"z":29.14566993713379,"x":-304.4870300292969,"y":-1926.8714599609376}},{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"BHC6WFPBNge342PCrmpVx","door_coords":{"z":29.14566993713379,"x":-303.5228576660156,"y":-1925.722412109375}}],"default_state":false,"id":31,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":false,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Stage Right","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"8LF0nymDpj2q_j2RkQDzd","door_coords":{"z":30.25301742553711,"x":-303.849609375,"y":-1928.2784423828128}},{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"MB9cgi-_5xYTrlF94CtEA","door_coords":{"z":30.25301742553711,"x":-302.0108032226563,"y":-1929.8212890625}}],"default_state":false,"id":32,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":false,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Stage Left","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"Q-38s6H3OZpGuEElYZX0M","door_coords":{"z":30.25301742553711,"x":-289.9933166503906,"y":-1939.9051513671876}},{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"31Ef_Zf1OU9hgojThe6fY","door_coords":{"z":30.25301742553711,"x":-288.154541015625,"y":-1941.4481201171876}}],"default_state":false,"id":33,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":false,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Lockers Purple","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"aEO77rJTFFYq7LQHCjvHB","door_coords":{"z":21.71078109741211,"x":-267.4485778808594,"y":-2025.0224609375}},{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"vb_cPM1p8UhnHH8BSO163","door_coords":{"z":21.71078109741211,"x":-265.9058227539063,"y":-2023.1839599609376}}],"default_state":true,"id":34,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"distance":2,"state":true,"door_type":"double","secret":false,"door_sound":"door_metal.ogg","lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Shower Purple","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"eFuzuX79c_pZunAPPOWBI","door_coords":{"z":21.71078109741211,"x":-267.9337463378906,"y":-2030.24462890625}}],"default_state":true,"id":35,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"single","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Lockers Red","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"Zi4seh2PiXkFFoTOHueeF","door_coords":{"z":21.71078109741211,"x":-260.2333679199219,"y":-2016.423828125}},{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"LuCHw_pRw0V5zSAtt1gtJ","door_coords":{"z":21.71078109741211,"x":-258.69061279296877,"y":-2014.585205078125}}],"default_state":true,"id":36,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Shower Red","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"cewuCrnwIOmWG5F3PSQOj","door_coords":{"z":21.71078109741211,"x":-253.63223266601569,"y":-2013.20068359375}}],"default_state":true,"id":37,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"single","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Interview 1","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"7LVVwkhagivtM3odFQlry","door_coords":{"z":21.71078109741211,"x":-262.29730224609377,"y":-2008.9332275390626}},{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"q51RZ8MSU3QB9AQwAUrMK","door_coords":{"z":21.71078109741211,"x":-260.4585266113281,"y":-2010.4761962890626}}],"default_state":true,"id":38,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Interview 2","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"WFwCPHle_iouXX5z47K-z","door_coords":{"z":21.71078109741211,"x":-271.8023376464844,"y":-2023.9952392578128}},{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"YDHjGgSRx_nf4H72v6e0R","door_coords":{"z":21.71078109741211,"x":-273.64111328125,"y":-2022.4522705078128}}],"default_state":true,"id":39,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Interview Elevator 2","door_data":[{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"Qzth7K7pgs4cbce8G68dl","door_coords":{"z":20.60343360900879,"x":-269.5152282714844,"y":-2026.16162109375}},{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"WvTSNBxv_Yb80Wv0vBVvL","door_coords":{"z":20.60343360900879,"x":-270.664306640625,"y":-2025.197509765625}}],"default_state":false,"id":40,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":false,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Interview Elevator 1","door_data":[{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"y8zFwe9-jPggJxyf-193g","door_coords":{"z":20.60343360900879,"x":-259.076904296875,"y":-2011.38818359375}},{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"nLpqlvo3rE7dyoke7KYQO","door_coords":{"z":20.60343360900879,"x":-257.9278259277344,"y":-2012.352294921875}}],"default_state":false,"id":41,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":false,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Dressing Room 1","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"1Dx7t7baGYEFO1PuvdcFF","door_coords":{"z":21.71078109741211,"x":-276.0103149414063,"y":-2005.298095703125}}],"default_state":true,"id":42,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"single","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Dressing Room 2","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"uFwiLjvNNkJYwXYlWQZ1-","door_coords":{"z":21.71078109741211,"x":-279.6095275878906,"y":-2009.5872802734376}}],"default_state":true,"id":43,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"single","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Interview","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"MyJjI4nkukKpKx0l2KDEE","door_coords":{"z":21.71078109741211,"x":-277.72576904296877,"y":-2005.9423828125}},{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"u2ho2UUI3KpcCmO1_ZKOB","door_coords":{"z":21.71078109741211,"x":-279.2685241699219,"y":-2007.781005859375}}],"default_state":true,"id":44,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Side Entrance","door_data":[{"model_hash":160224187,"text_dimensions":-1.20012363850769,"unique_id":"HyO5pIOYNS57vOi8-WZQ9","door_coords":{"z":30.25301742553711,"x":-254.2315368652344,"y":-2025.835205078125}},{"model_hash":-1911661372,"text_dimensions":-1.20012360850768,"unique_id":"2NXQ9bpdT2dTeWtUSXN8J","door_coords":{"z":30.25301742553711,"x":-255.77438354492188,"y":-2027.6739501953128}}],"default_state":false,"id":45,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":false,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Reception 1","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"M6AMD7Ljs7QIw5mKPXkoU","door_coords":{"z":30.25301742553711,"x":-270.0722351074219,"y":-2019.4415283203128}}],"default_state":true,"id":46,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"single","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Reception 2","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"beywc46xlLHlSm7fmP19q","door_coords":{"z":30.25301742553711,"x":-264.642578125,"y":-2012.970703125}}],"default_state":true,"id":47,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"single","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Offices Left","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"xJ1iRQ5qPhEqFl3vUVP6Z","door_coords":{"z":30.25301742553711,"x":-273.6999206542969,"y":-2020.9669189453128}},{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"4zfhFdlymeb7ML1xou7tF","door_coords":{"z":30.25301742553711,"x":-272.1570129394531,"y":-2019.1280517578128}}],"default_state":true,"id":48,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Offices Right","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"n02fE1mTYzqmxtONGMo0x","door_coords":{"z":30.25301742553711,"x":-265.31317138671877,"y":-2010.971923828125}},{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"e1LJzOxMy7oc9wbOjL7nW","door_coords":{"z":30.25301742553711,"x":-263.770263671875,"y":-2009.1331787109376}}],"default_state":true,"id":49,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Office 1","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"juYBRoLZDVqCxF9Gi1S5k","door_coords":{"z":30.25301742553711,"x":-264.501708984375,"y":-2007.08349609375}}],"default_state":true,"id":50,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"single","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Conference","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"mwshrVBp4VX2FECVkHEIl","door_coords":{"z":30.25301742553711,"x":-275.8454895019531,"y":-2020.6025390625}}],"default_state":true,"id":51,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"single","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Office to Arena","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"kMfzB20CFVrDY4J8_dlLp","door_coords":{"z":30.25301742553711,"x":-279.49700927734377,"y":-2007.58642578125}},{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"rpDYN2ZqsxsrAJbK8V124","door_coords":{"z":30.25301742553711,"x":-277.9540710449219,"y":-2005.7476806640626}}],"default_state":true,"id":52,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Interview Staircase 1","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"BAG3PCp3jmbW5okKmps5g","door_coords":{"z":30.25301742553711,"x":-271.8023376464844,"y":-2023.9952392578128}},{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"xd_HTpBnBgeHqVAqJHTrN","door_coords":{"z":30.25301742553711,"x":-273.64111328125,"y":-2022.4522705078128}}],"default_state":true,"id":53,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Interview Staircase 2","door_data":[{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"NCUJpVplFmqcXr-lpxKzq","door_coords":{"z":30.25301742553711,"x":-260.4585266113281,"y":-2010.4761962890626}},{"model_hash":1722387194,"text_dimensions":1.2001953125,"unique_id":"HRxptsDvmhXv7q3b3G1Dj","door_coords":{"z":30.25301742553711,"x":-262.29730224609377,"y":-2008.9332275390626}}],"default_state":true,"id":54,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":true,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Side Elevator Right","door_data":[{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"oqTsd7ZjtwtyDTXV7YihQ","door_coords":{"z":29.14566993713379,"x":-259.076904296875,"y":-2011.38818359375}},{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"GZiytjLKGWmEJmgUO0q3h","door_coords":{"z":29.14566993713379,"x":-257.9278259277344,"y":-2012.352294921875}}],"default_state":false,"id":55,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":false,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true},{"location_group":"Maze Bank Arena","door_name":"Side Elevator Left","door_data":[{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"QfyRXtPoO-RVvbo89yDzZ","door_coords":{"z":29.14386367797851,"x":-269.5140686035156,"y":-2026.163330078125}},{"model_hash":-1240156945,"text_dimensions":0.75000864267349,"unique_id":"1W6HivSidOhcUS6JdhBoe","door_coords":{"z":29.14386367797851,"x":-270.66546630859377,"y":-2025.19580078125}}],"default_state":false,"id":56,"perms":{"identifier":[],"job":[{"name":"police","grade":0}]},"door_sound":"door_metal.ogg","state":false,"door_type":"double","secret":false,"distance":2,"lockpickable":false,"camera":true}],
+ "name": "mba.json"
+}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/mba_mma.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/mba_mma.json
new file mode 100644
index 000000000..adc4cc353
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/mba_mma.json
@@ -0,0 +1,5 @@
+{
+ "imported": false,
+ "data": [{"location_group":"MBA MMA","door_sound":"door_click.ogg","lockpickable":false,"default_state":false,"id":1,"door_type":"single","door_data":[{"model_hash":123879009,"unique_id":"BeGLQbkb97y6PQYyTjjr3","door_coords":{"y":-1972.3277587890626,"z":22.34663963317871,"x":-326.7613830566406},"text_dimensions":-1.17614130675792}],"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"distance":2,"secret":false,"camera":true,"door_name":"Ring Entrance","state":false}],
+ "name": "mba_mma.json"
+}
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/mrpd.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/mrpd.json
new file mode 100644
index 000000000..cc6b698af
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/mrpd.json
@@ -0,0 +1 @@
+{"imported":false,"name":"mrpd.json","data":[{"door_type":"double","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Entrance","state":false,"door_data":[{"door_coords":{"x":434.7444458007813,"y":-980.7555541992188,"z":30.81530380249023},"unique_id":"UigMLh0o5z1d4GGHFyeeW","model_hash":-1547307588,"text_dimensions":1.1612769094147},{"door_coords":{"x":434.7444458007813,"y":-983.078125,"z":30.81530380249023},"unique_id":"JYhwketeuyY-BJg4yMD87","model_hash":-1547307588,"text_dimensions":1.1612769094147}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_metal.ogg","id":1},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Waiting Room Left","state":true,"door_data":[{"door_coords":{"x":440.52008056640627,"y":-977.60107421875,"z":30.82319259643554},"unique_id":"PfeYVzrWBI99DZaj_-ZAL","model_hash":-1406685646,"text_dimensions":1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_regular.ogg","id":2},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Waiting Room Right","state":false,"door_data":[{"door_coords":{"x":440.52008056640627,"y":-986.2334594726564,"z":30.82319259643554},"unique_id":"QS3JVS3QyWnyh51TVLZ6q","model_hash":-96679321,"text_dimensions":-1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_regular.ogg","id":3},{"door_type":"double","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Press Room","state":true,"door_data":[{"door_coords":{"x":438.1970825195313,"y":-996.316650390625,"z":30.82319259643554},"unique_id":"bIKXGBf8dha4CqWJJFJRR","model_hash":-288803980,"text_dimensions":1.20805005891418},{"door_coords":{"x":438.1970825195313,"y":-993.9112548828124,"z":30.82319259643554},"unique_id":"7jCzkQEBFR3s5vuSLAD51","model_hash":-288803980,"text_dimensions":1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_wooden.ogg","id":4},{"door_type":"double","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Parking Entrance","state":false,"door_data":[{"door_coords":{"x":443.061767578125,"y":-998.7462158203124,"z":30.81530380249023},"unique_id":"Q5b9B4c5b3874iywIozFf","model_hash":-1547307588,"text_dimensions":1.1612769094147},{"door_coords":{"x":440.73919677734377,"y":-998.7462158203124,"z":30.81530380249023},"unique_id":"XxAtiZDCIpPLkMetc1bfu","model_hash":-1547307588,"text_dimensions":1.1612769094147}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_metal.ogg","id":5},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Reception","state":true,"door_data":[{"door_coords":{"x":445.4067077636719,"y":-984.201416015625,"z":30.82319259643554},"unique_id":"WSWX5_gLeJlPcYuNsSlGy","model_hash":-1406685646,"text_dimensions":1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_regular.ogg","id":6},{"door_type":"double","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Street Entrance","state":false,"door_data":[{"door_coords":{"x":455.88616943359377,"y":-972.2542724609376,"z":30.8153076171875},"unique_id":"dRrWjU_UC8deDQKZufPJr","model_hash":-1547307588,"text_dimensions":1.1612769094147},{"door_coords":{"x":458.208740234375,"y":-972.2542724609376,"z":30.8153076171875},"unique_id":"72aYqake-fJ6Av4Lhg-3E","model_hash":-1547307588,"text_dimensions":1.1612769094147}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_metal.ogg","id":7},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Break Room","state":true,"door_data":[{"door_coords":{"x":458.6543273925781,"y":-976.8864135742188,"z":30.82319259643554},"unique_id":"1X9xGs79WBqc4YZMe9uM-","model_hash":-1406685646,"text_dimensions":1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_regular.ogg","id":8},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Captains Office","state":true,"door_data":[{"door_coords":{"x":458.6543273925781,"y":-990.6497802734376,"z":30.82319259643554},"unique_id":"yTnZils8P-jNusVJ-gMJd","model_hash":-96679321,"text_dimensions":-1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_regular.ogg","id":9},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Lockers","state":false,"door_data":[{"door_coords":{"x":458.08941650390627,"y":-995.524658203125,"z":30.82319259643554},"unique_id":"Kh8FJGxOHccVy5YAQi-Xw","model_hash":149284793,"text_dimensions":1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_regular.ogg","id":10},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Archives","state":true,"door_data":[{"door_coords":{"x":452.2662658691406,"y":-995.525390625,"z":30.82319259643554},"unique_id":"CfbIQKN3qyaG7UBSVNzLe","model_hash":-96679321,"text_dimensions":-1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_regular.ogg","id":11},{"door_type":"double","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Back Rooms","state":false,"door_data":[{"door_coords":{"x":469.4406127929688,"y":-987.4376831054688,"z":30.82319259643554},"unique_id":"zmllZEdZ55Leq6ep_Ra6D","model_hash":-288803980,"text_dimensions":1.20805005891418},{"door_coords":{"x":469.4406127929688,"y":-985.0313110351564,"z":30.82319259643554},"unique_id":"Yih0-hDccnZ75JzjtZpE3","model_hash":-288803980,"text_dimensions":1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_wooden.ogg","id":12},{"door_type":"double","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Bathroom","state":false,"door_data":[{"door_coords":{"x":472.97808837890627,"y":-984.3721923828124,"z":30.82319259643554},"unique_id":"OdSlozuTY-tpjbtzkCm5T","model_hash":149284793,"text_dimensions":1.20805005891418},{"door_coords":{"x":475.3836975097656,"y":-984.3721923828124,"z":30.82319259643554},"unique_id":"XN6p8aL9it4SIos-_0qBS","model_hash":149284793,"text_dimensions":1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_wooden.ogg","id":13},{"door_type":"double","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Briefing Room","state":false,"door_data":[{"door_coords":{"x":472.9776916503906,"y":-989.82470703125,"z":30.82319259643554},"unique_id":"1aQpGjhHUmDyivcH408_Y","model_hash":-96679321,"text_dimensions":-1.20805005891418},{"door_coords":{"x":475.3836975097656,"y":-989.82470703125,"z":30.82319259643554},"unique_id":"Yov_1d91HeGEPFYWhmeOY","model_hash":-1406685646,"text_dimensions":1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_wooden.ogg","id":14},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Briefing Room Side","state":false,"door_data":[{"door_coords":{"x":476.7511596679688,"y":-999.6306762695313,"z":30.82319259643554},"unique_id":"Jfmnhnp2M161dWCm8TVE2","model_hash":-1406685646,"text_dimensions":1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_regular.ogg","id":15},{"door_type":"double","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Forensic Lab","state":false,"door_data":[{"door_coords":{"x":479.7533874511719,"y":-986.215087890625,"z":30.82319259643554},"unique_id":"IjV0bKMPkEhwvkKvKdncz","model_hash":-1406685646,"text_dimensions":1.20805005891418},{"door_coords":{"x":479.7533874511719,"y":-988.620361328125,"z":30.82319259643554},"unique_id":"io191kTmSyK27zYHCdF0C","model_hash":-96679321,"text_dimensions":-1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_wooden.ogg","id":16},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Armory 1","state":true,"door_data":[{"door_coords":{"x":479.750732421875,"y":-999.6290283203124,"z":30.7891674041748},"unique_id":"X9M8kOWTEb0YmaBzcPgIv","model_hash":-692649124,"text_dimensions":1.20310604572296}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_metal.ogg","id":17},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Armory 2","state":true,"door_data":[{"door_coords":{"x":487.4378356933594,"y":-1000.1892700195313,"z":30.78697204589843},"unique_id":"9oUlWPmnxrR3RuhPChXY6","model_hash":-692649124,"text_dimensions":1.20310604572296}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_metal.ogg","id":18},{"door_type":"double","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Shooting Range","state":false,"door_data":[{"door_coords":{"x":485.61334228515627,"y":-1002.9019775390624,"z":30.78697204589843},"unique_id":"_QfDWiEmLAH1jLt0qlhL6","model_hash":-692649124,"text_dimensions":1.20310604572296},{"door_coords":{"x":488.0184326171875,"y":-1002.9019775390624,"z":30.78697204589843},"unique_id":"Rb7dYDxS0pOb-D7ADzBKq","model_hash":-692649124,"text_dimensions":1.20310604572296}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_metal.ogg","id":19},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Meeting Room 1","state":true,"door_data":[{"door_coords":{"x":459.9454040527344,"y":-990.705322265625,"z":35.1039810180664},"unique_id":"fiEQzFj8kz7GL--qajAgJ","model_hash":-96679321,"text_dimensions":-1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_regular.ogg","id":20},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Meeting Room 2","state":false,"door_data":[{"door_coords":{"x":459.9454040527344,"y":-981.0741577148438,"z":35.1039810180664},"unique_id":"7bJcbtIcmGVhMEmUc8ZY7","model_hash":-1406685646,"text_dimensions":1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_regular.ogg","id":21},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Training Room 1","state":true,"door_data":[{"door_coords":{"x":448.98681640625,"y":-981.5784912109376,"z":35.10376358032226},"unique_id":"rRtC_v_6XQZzNHyr07v1W","model_hash":-96679321,"text_dimensions":-1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_regular.ogg","id":22},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Training Room 2","state":false,"door_data":[{"door_coords":{"x":448.98681640625,"y":-990.2007446289064,"z":35.10376358032226},"unique_id":"02dPFQ57bGIRkqfPgiNlJ","model_hash":-1406685646,"text_dimensions":1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_regular.ogg","id":23},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Dispatch Center","state":false,"door_data":[{"door_coords":{"x":448.9845581054688,"y":-995.5263671875,"z":35.10376358032226},"unique_id":"pAlHomzuVVSSPWQ4pi0Lk","model_hash":-96679321,"text_dimensions":-1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_regular.ogg","id":24},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Roof","state":false,"door_data":[{"door_coords":{"x":464.3085632324219,"y":-984.5284423828124,"z":43.771240234375},"unique_id":"qpMA6EPvPKz55eVEKKj1L","model_hash":-692649124,"text_dimensions":1.20310604572296}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_metal.ogg","id":25},{"door_type":"double","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Basement Rooms","state":true,"door_data":[{"door_coords":{"x":471.3753051757813,"y":-985.0319213867188,"z":26.40548324584961},"unique_id":"0Ga8_Tbycmw0Ed8GuErzO","model_hash":-1406685646,"text_dimensions":1.20805005891418},{"door_coords":{"x":471.3753051757813,"y":-987.4373779296876,"z":26.40548324584961},"unique_id":"f-YDUjQwMpXq2ODY0BlMf","model_hash":-96679321,"text_dimensions":-1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_wooden.ogg","id":26},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":true,"default_state":true,"door_name":"Evidence","state":false,"door_data":[{"door_coords":{"x":475.8323364257813,"y":-990.4839477539064,"z":26.40548324584961},"unique_id":"TRW-KfnKWzEfDoeNWxtMJ","model_hash":-692649124,"text_dimensions":1.20310604572296}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_metal.ogg","id":27},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Identification","state":false,"door_data":[{"door_coords":{"x":478.2891540527344,"y":-997.9100952148438,"z":26.40548324584961},"unique_id":"RMMjwypYyyU7ScG8PpBpj","model_hash":149284793,"text_dimensions":1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_regular.ogg","id":28},{"door_type":"single","location_group":"MRPD","secret":false,"door_sound":"door_regular.ogg","lockpickable":false,"default_state":true,"door_name":"Observation 1","state":true,"door_data":[{"door_coords":{"x":482.66943359375,"y":-983.98681640625,"z":26.40548324584961},"unique_id":"-ccVTX9YH2zNig5z0WL9M","model_hash":-1406685646,"text_dimensions":1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"id":29,"camera":false},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":true,"default_state":true,"door_name":"Interrogation 1","state":true,"door_data":[{"door_coords":{"x":482.6701354980469,"y":-987.5791625976564,"z":26.40548324584961},"unique_id":"9r1_42eSNHqRMJiKfjM0K","model_hash":-1406685646,"text_dimensions":1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_regular.ogg","id":30},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":true,"default_state":true,"door_name":"Observation 2","state":true,"door_data":[{"door_coords":{"x":482.669921875,"y":-992.2991333007813,"z":26.40548324584961},"unique_id":"pzyxL3A70gaP_qGyMm5fF","model_hash":-1406685646,"text_dimensions":1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_regular.ogg","id":31},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":true,"default_state":true,"door_name":"Interrogation 2","state":true,"door_data":[{"door_coords":{"x":482.6702575683594,"y":-995.728515625,"z":26.40548324584961},"unique_id":"8EqMeXq_RENNcOCtSh2h5","model_hash":-1406685646,"text_dimensions":1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_regular.ogg","id":32},{"door_type":"double","location_group":"MRPD","secret":false,"lockpickable":false,"camera":true,"default_state":true,"door_name":"Cells","state":false,"door_data":[{"door_coords":{"x":482.0685729980469,"y":-997.9099731445313,"z":26.40650367736816},"unique_id":"Q9InABMInvGiCQsjywUXD","model_hash":149284793,"text_dimensions":1.20805005891418},{"door_coords":{"x":479.6637573242188,"y":-997.9099731445313,"z":26.40650367736816},"unique_id":"_mmOEGBEwaEa989AGSvnN","model_hash":149284793,"text_dimensions":1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_wooden.ogg","id":33},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":true,"default_state":true,"door_name":"Lineup","state":true,"door_data":[{"door_coords":{"x":479.0599670410156,"y":-1003.1729736328124,"z":26.40650367736816},"unique_id":"cYRM9zwGkHrXRiR5cxZUu","model_hash":-288803980,"text_dimensions":1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_regular.ogg","id":34},{"door_type":"double","location_group":"MRPD","secret":false,"lockpickable":false,"camera":true,"default_state":true,"door_name":"Cells 2","state":true,"door_data":[{"door_coords":{"x":471.3678588867188,"y":-1007.7933959960938,"z":26.40548324584961},"unique_id":"mNY8BzkXyec9GEc9GdAY4","model_hash":149284793,"text_dimensions":1.20805005891418},{"door_coords":{"x":471.3758239746094,"y":-1010.1978759765624,"z":26.40548324584961},"unique_id":"hg0vY2z19pfyYDSir7SBy","model_hash":149284793,"text_dimensions":1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_wooden.ogg","id":35},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Processing","state":true,"door_data":[{"door_coords":{"x":475.953857421875,"y":-1006.9378051757813,"z":26.40638542175293},"unique_id":"atCveh9iUQy640ONGKCmz","model_hash":-288803980,"text_dimensions":1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_regular.ogg","id":36},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Mugshot","state":true,"door_data":[{"door_coords":{"x":475.953857421875,"y":-1010.8193359375,"z":26.40638542175293},"unique_id":"RKBwZSAOuvyxqsjTtrA4Z","model_hash":-1406685646,"text_dimensions":1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_regular.ogg","id":37},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":true,"default_state":true,"door_name":"Cell Entrance 2","state":false,"door_data":[{"door_coords":{"x":476.6156921386719,"y":-1008.8754272460938,"z":26.48005485534668},"unique_id":"MvIg0-rf2jzB65op5Pfjc","model_hash":-53345114,"text_dimensions":-1.18245634309846}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_metal.ogg","id":38},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":true,"default_state":true,"door_name":"Cell Entrance 1","state":false,"door_data":[{"door_coords":{"x":481.00836181640627,"y":-1004.1179809570313,"z":26.48005485534668},"unique_id":"FvQEtpVMJkQwWMYATlgo-","model_hash":-53345114,"text_dimensions":-1.18245634309846}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_metal.ogg","id":39},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":true,"default_state":true,"door_name":"Cell Large","state":true,"door_data":[{"door_coords":{"x":484.1764221191406,"y":-1007.734375,"z":26.48005485534668},"unique_id":"3VfjFNBA1AAlTQc_kd_-l","model_hash":-53345114,"text_dimensions":-1.18245634309846}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_metal.ogg","id":40},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":true,"default_state":true,"door_name":"Cell 1","state":true,"door_data":[{"door_coords":{"x":486.9131164550781,"y":-1012.1886596679688,"z":26.48005485534668},"unique_id":"pmDdIDz1dHITg4a6momlw","model_hash":-53345114,"text_dimensions":-1.18245634309846}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_metal.ogg","id":41},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":true,"default_state":true,"door_name":"Cell 2","state":true,"door_data":[{"door_coords":{"x":483.9127197265625,"y":-1012.1886596679688,"z":26.48005485534668},"unique_id":"VMbcT2mjm2yCd_cHYtSQn","model_hash":-53345114,"text_dimensions":-1.18245634309846}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_metal.ogg","id":42},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":true,"default_state":true,"door_name":"Cell 3","state":true,"door_data":[{"door_coords":{"x":480.9128112792969,"y":-1012.1886596679688,"z":26.48005485534668},"unique_id":"1FPPa6DbtT-44T3mFxICP","model_hash":-53345114,"text_dimensions":-1.18245634309846}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_metal.ogg","id":43},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":true,"default_state":true,"door_name":"Cell 4","state":true,"door_data":[{"door_coords":{"x":477.91259765625,"y":-1012.1886596679688,"z":26.48005485534668},"unique_id":"zAX5VhN2UPXTUR5JgCsDQ","model_hash":-53345114,"text_dimensions":-1.18245634309846}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_metal.ogg","id":44},{"door_type":"double","location_group":"MRPD","secret":false,"lockpickable":false,"camera":true,"default_state":true,"door_name":"Garage","state":false,"door_data":[{"door_coords":{"x":469.9273681640625,"y":-1000.543701171875,"z":26.40548324584961},"unique_id":"2RlkGqigg0rxTL4CNAdCj","model_hash":-288803980,"text_dimensions":1.20805005891418},{"door_coords":{"x":467.522216796875,"y":-1000.543701171875,"z":26.40548324584961},"unique_id":"j5uzQAGdmzdyHm4DXLMOI","model_hash":-288803980,"text_dimensions":1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_wooden.ogg","id":45},{"door_type":"double","location_group":"MRPD","secret":false,"lockpickable":false,"camera":true,"default_state":true,"door_name":"Parking Entrance Basement","state":false,"door_data":[{"door_coords":{"x":469.7742614746094,"y":-1014.406005859375,"z":26.48381614685058},"unique_id":"8TeZpB1uElVytX7C9BNNj","model_hash":-692649124,"text_dimensions":1.20310604572296},{"door_coords":{"x":467.3686218261719,"y":-1014.406005859375,"z":26.48381614685058},"unique_id":"0cPgXpFPAYSpD_4akvPcR","model_hash":-692649124,"text_dimensions":1.20310604572296}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_metal.ogg","id":46},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Underground Parking Door 1","state":true,"door_data":[{"door_coords":{"x":464.1565551757813,"y":-997.50927734375,"z":26.3707046508789},"unique_id":"rajED6skNW19HlHrIzYlS","model_hash":1830360419,"text_dimensions":1.20310604572296}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_metal.ogg","id":47},{"door_type":"single","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Underground Parking Door 2","state":false,"door_data":[{"door_coords":{"x":464.1590576171875,"y":-974.6655883789064,"z":26.3707046508789},"unique_id":"DIWH1C3681BLZO8a77ZtJ","model_hash":1830360419,"text_dimensions":1.20310604572296}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_metal.ogg","id":48},{"door_type":"garage","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Underground Parking 1","state":true,"door_data":[{"door_coords":{"x":452.3005065917969,"y":-999.6417846679688,"z":28.67484855651855},"unique_id":"JdC4m7MzJEcrNemCDpcFI","model_hash":2130672747,"text_dimensions":0}],"distance":10,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_switch.ogg","id":49},{"door_type":"garage","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Underground Parking 2","state":false,"door_data":[{"door_coords":{"x":431.4119262695313,"y":-1000.7716674804688,"z":26.69660949707031},"unique_id":"b7TYb5-62rrPecnXDmhyc","model_hash":2130672747,"text_dimensions":0}],"distance":10,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_switch.ogg","id":50},{"door_type":"garage","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Parking Garage 2","state":true,"door_data":[{"door_coords":{"x":459.5504150390625,"y":-1019.698974609375,"z":29.0887393951416},"unique_id":"M31A9PCr5rPFnkEky9gk4","model_hash":-190780785,"text_dimensions":0}],"distance":10,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_switch.ogg","id":51},{"door_type":"garage","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Parking Garage 1","state":false,"door_data":[{"door_coords":{"x":460.681884765625,"y":-1014.64599609375,"z":31.08801078796386},"unique_id":"PfQROwZMDOumoq-OXrZFu","model_hash":-190780785,"text_dimensions":0}],"distance":10,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_switch.ogg","id":52},{"door_type":"gates","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Bollards 1","state":true,"door_data":[{"door_coords":{"x":410.0257873535156,"y":-1020.1565551757813,"z":28.40199851989746},"unique_id":"x0IORlmUxoVKMDsQ6mXmh","model_hash":-1868050792,"text_dimensions":3.24277400970459}],"distance":10,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_switch.ogg","id":53},{"door_type":"gates","location_group":"MRPD","secret":false,"lockpickable":false,"camera":false,"default_state":true,"door_name":"Bollards 2","state":true,"door_data":[{"door_coords":{"x":410.0257873535156,"y":-1028.3189697265626,"z":28.41814613342285},"unique_id":"X3oEGxLIm--TQ4aUkubso","model_hash":-1635161509,"text_dimensions":-3.24277400970459}],"distance":10,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_switch.ogg","id":54},{"door_type":"gates","location_group":"MRPD","secret":false,"lockpickable":false,"camera":true,"default_state":true,"door_name":"Backside Gate","state":true,"door_data":[{"door_coords":{"x":488.8948059082031,"y":-1017.2119750976564,"z":27.14934921264648},"unique_id":"QdN8QnI4Nq0rpqpHjSCoS","model_hash":-1603817716,"text_dimensions":5.60141397640109}],"distance":10,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_switch.ogg","id":55},{"door_type":"double","location_group":"MRPD","secret":false,"lockpickable":false,"camera":true,"default_state":true,"door_name":"Underground Rooms","state":true,"door_data":[{"door_coords":{"x":479.0624084472656,"y":-985.0323486328124,"z":26.40548324584961},"unique_id":"rhSxyLlKtbUAEF46B3BiJ","model_hash":149284793,"text_dimensions":1.20805005891418},{"door_coords":{"x":479.0624084472656,"y":-987.4375610351564,"z":26.40548324584961},"unique_id":"jzyN3f7agGWa9nXwxiIPa","model_hash":149284793,"text_dimensions":1.20805005891418}],"distance":2,"perms":{"job":[{"grade":0,"name":"police"}]},"door_sound":"door_wooden.ogg","id":56}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ottos.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ottos.json
new file mode 100644
index 000000000..014eccc30
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ottos.json
@@ -0,0 +1 @@
+{"name":"ottos.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"mechanic"}],"identifier":[]},"location_group":"Ottos","door_data":[{"unique_id":"rd3mdjUsXSxXFHcw0A03W","model_hash":-147325430,"text_dimensions":1.29998779296875,"door_coords":{"x":823.7611694335938,"y":-828.9948120117188,"z":26.48237609863281}}],"door_name":"Entrance","secret":false,"state":true,"default_state":true,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"mechanic"}],"identifier":[]},"location_group":"Ottos","door_data":[{"unique_id":"ESpAPioz9BlpV9upa5-59","model_hash":-147325430,"text_dimensions":1.29998779296875,"door_coords":{"x":830.6199340820313,"y":-829.0283813476563,"z":26.48237609863281}}],"door_name":"Office","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":3,"perms":{"job":[{"grade":0,"name":"mechanic"}],"identifier":[]},"location_group":"Ottos","door_data":[{"unique_id":"wJkGQIIHCEipcfVcKMFEp","model_hash":-147325430,"text_dimensions":1.29998779296875,"door_coords":{"x":829.9662475585938,"y":-824.6747436523438,"z":26.48237609863281}}],"door_name":"Waiting Room","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":4,"perms":{"job":[{"grade":0,"name":"mechanic"}],"identifier":[]},"location_group":"Ottos","door_data":[{"unique_id":"ERA4GtIBIqMTsVmP4vkmp","model_hash":-147325430,"text_dimensions":1.29998779296875,"door_coords":{"x":837.6531372070313,"y":-821.3134765625,"z":26.48237609863281}}],"door_name":"Storage","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":5,"perms":{"job":[{"grade":0,"name":"mechanic"}],"identifier":[]},"location_group":"Ottos","door_data":[{"unique_id":"Suwye6FJ7XtHdT2edLMtK","model_hash":263193286,"text_dimensions":1.31214696168899,"door_coords":{"x":840.5321044921875,"y":-820.5624389648438,"z":26.48237228393554}}],"door_name":"Rear Exit","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":6,"perms":{"job":[{"grade":0,"name":"mechanic"}],"identifier":[]},"location_group":"Ottos","door_data":[{"unique_id":"CsMP_tvQDcJhkExH7qw5-","model_hash":270330101,"text_dimensions":0,"door_coords":{"x":825.0067749023438,"y":-805.58203125,"z":29.43921279907226}}],"door_name":"Garage Door 1","secret":false,"state":true,"default_state":true,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"camera":false,"distance":10},{"id":7,"perms":{"job":[{"grade":0,"name":"mechanic"}],"identifier":[]},"location_group":"Ottos","door_data":[{"unique_id":"UfALaDQF7r1flv3W8Ej6K","model_hash":270330101,"text_dimensions":0,"door_coords":{"x":825.0074462890625,"y":-812.9501953125,"z":29.43940734863281}}],"door_name":"Garage Door 2","secret":false,"state":true,"default_state":true,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"camera":true,"distance":10},{"id":8,"perms":{"job":[{"grade":0,"name":"mechanic"}],"identifier":[]},"location_group":"Ottos","door_data":[{"unique_id":"gQLSOqW2aVljvm3AP4se-","model_hash":270330101,"text_dimensions":0,"door_coords":{"x":824.1458129882813,"y":-820.2709350585938,"z":28.85136795043945}}],"door_name":"Garage Door 3","secret":false,"state":true,"default_state":true,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"camera":true,"distance":10},{"id":9,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"Ottos","door_data":[{"model_hash":-147325430,"unique_id":"-oMGf824NhtKWtU9xvYXf","text_dimensions":1.29998779296875,"door_coords":{"x":800.3914794921875,"y":-824.3545532226563,"z":26.48451614379882}}],"door_name":"Office Building Entrance","default_state":true,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":10,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"Ottos","door_data":[{"model_hash":-147325430,"unique_id":"84MCWpOBFyX5qr_79AjUR","text_dimensions":1.29998779296875,"door_coords":{"x":800.0899658203125,"y":-827.1211547851563,"z":26.48451614379882}}],"door_name":"Office Building Office","default_state":true,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":11,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"Ottos","door_data":[{"model_hash":-147325430,"unique_id":"cErdpKBwfN26onl9-Uu8y","text_dimensions":1.29998779296875,"door_coords":{"x":802.2042236328125,"y":-829.1265258789063,"z":26.48451614379882}}],"door_name":"Office Building Toilet","default_state":true,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/pacific_bank.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/pacific_bank.json
new file mode 100644
index 000000000..eab70bd73
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/pacific_bank.json
@@ -0,0 +1 @@
+{"name":"pacific_bank.json","imported":false,"data":[{"id":69,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":1577691629,"unique_id":"9gcRH9dTgZsxcafo9Vl1T","text_dimensions":-1.30029294954071,"door_coords":{"x":231.50308227539066,"y":216.5134429931641,"z":106.430419921875}},{"model_hash":726025323,"unique_id":"6aMmPED5eklM55P3N2djH","text_dimensions":-1.30029294954071,"door_coords":{"x":232.60072326660157,"y":214.15638732910157,"z":106.430419921875}}],"door_name":"Main Entrance","default_state":false,"state":false,"secret":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2},{"id":70,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":1352863520,"unique_id":"DQ2ELlfLEKKXGHwdqezqr","text_dimensions":-1.07681000232696,"door_coords":{"x":244.77554321289066,"y":227.24789428710936,"z":106.74524688720705}},{"model_hash":1352863520,"unique_id":"o4CGb-B7V7swGkJRhXNFe","text_dimensions":-1.07681000232696,"door_coords":{"x":244.03897094726566,"y":225.22415161132813,"z":106.74524688720705}}],"door_name":"Hall Entrance","default_state":false,"state":false,"secret":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2},{"id":71,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":1721645826,"unique_id":"6DOcImAsmxoVqMCCAVB2g","text_dimensions":-1.31328999996185,"door_coords":{"x":252.789794921875,"y":213.75999450683598,"z":106.38217163085938}}],"door_name":"Office 1","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":72,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":1721645826,"unique_id":"7LgTqdys71f_mgUevG71E","text_dimensions":-1.31328999996185,"door_coords":{"x":262.1838684082031,"y":210.34088134765626,"z":106.38217163085938}}],"door_name":"Office 2","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":73,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":1721645826,"unique_id":"2g_JuFHa22-zS1PfYykWg","text_dimensions":-1.31328999996185,"door_coords":{"x":268.2106018066406,"y":226.95730590820313,"z":106.38217163085938}}],"door_name":"Office 3","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":74,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":1721645826,"unique_id":"AsMsRQz8d4ercV9tZM6Qt","text_dimensions":-1.31328999996185,"door_coords":{"x":258.8165283203125,"y":230.37640380859376,"z":106.38217163085938}}],"door_name":"Office 4","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":75,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":1721645826,"unique_id":"2H25ilitz3knLo4905pFW","text_dimensions":-1.31328999996185,"door_coords":{"x":258.8165283203125,"y":230.37640380859376,"z":110.280517578125}}],"door_name":"Office 5","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":76,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":1721645826,"unique_id":"sOkc-cALJgbvZ6Rayl6or","text_dimensions":-1.31328999996185,"door_coords":{"x":268.2106018066406,"y":226.95730590820313,"z":110.280517578125}}],"door_name":"Office 6","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":77,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":1721645826,"unique_id":"3xr936vQES39hjPVKZJ3g","text_dimensions":-1.31328999996185,"door_coords":{"x":262.1838684082031,"y":210.34088134765626,"z":110.280517578125}}],"door_name":"Office 7","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":78,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":1721645826,"unique_id":"rOjV-NLMjNukW7p1rOgQp","text_dimensions":-1.31328999996185,"door_coords":{"x":252.789794921875,"y":213.75999450683598,"z":110.280517578125}}],"door_name":"Office 8","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":79,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":1109357065,"unique_id":"KIR2TGzLjhQQEfAGUJuv_","text_dimensions":-1.05347001552581,"door_coords":{"x":272.47210693359377,"y":214.9072723388672,"z":110.280517578125}},{"model_hash":1109357065,"unique_id":"2q6xKyFJgS4vaVgqKumeO","text_dimensions":-1.05347001552581,"door_coords":{"x":273.1838989257813,"y":216.86282348632813,"z":110.280517578125}}],"door_name":"Main Office","default_state":false,"state":false,"secret":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2},{"id":80,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":1577691629,"unique_id":"qT9YgyLpyj16TXBxoNwyL","text_dimensions":-1.30029294954071,"door_coords":{"x":273.8970336914063,"y":234.5862274169922,"z":123.9748077392578}},{"model_hash":726025323,"unique_id":"DPBlpktXUqLvsJNSGkNwZ","text_dimensions":-1.30029294954071,"door_coords":{"x":271.4532775878906,"y":235.4756774902344,"z":123.9748077392578}}],"door_name":"Roof Exit","default_state":false,"state":false,"secret":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2},{"id":81,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":726025323,"unique_id":"0IMBwnWvnd0-CKGkl9-TG","text_dimensions":-1.30029294954071,"door_coords":{"x":267.3222961425781,"y":200.7542266845703,"z":106.44992065429688}},{"model_hash":1577691629,"unique_id":"j3jV9CSKJIBebGTXMipfG","text_dimensions":-1.30029294954071,"door_coords":{"x":264.8785095214844,"y":201.6436767578125,"z":106.44992065429688}}],"door_name":"Side Entrance","default_state":false,"state":false,"secret":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2},{"id":82,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":267980221,"unique_id":"WUw41PrZS44tSZMt39MWs","text_dimensions":-1.31328999996185,"door_coords":{"x":272.79046630859377,"y":206.48045349121098,"z":106.38217163085938}}],"door_name":"Office Side Entrance","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":83,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":267980221,"unique_id":"GX6pLzdMep7D6xqZQ7jjK","text_dimensions":-1.31328999996185,"door_coords":{"x":272.79046630859377,"y":206.48045349121098,"z":110.280517578125}}],"door_name":"Upstairs Side 1","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":84,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":267980221,"unique_id":"gaA0xvf1uTXUbcsSy5gW0","text_dimensions":-1.31328999996185,"door_coords":{"x":277.5953063964844,"y":223.5415802001953,"z":110.2791748046875}}],"door_name":"Upstairs Side 2","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":85,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":267980221,"unique_id":"40XQ1bZircTiRuNP3pUF3","text_dimensions":-1.31328999996185,"door_coords":{"x":277.5953369140625,"y":223.5415802001953,"z":106.38043212890624}}],"door_name":"Staircase Side 1","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":86,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":-2121568016,"unique_id":"btZCXZdDSyPt3aTmDKWyW","text_dimensions":-1.06341004371643,"door_coords":{"x":251.51986694335936,"y":215.7131500244141,"z":106.37024688720705}}],"door_name":"Cashier Entrance Right","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":87,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":-2121568016,"unique_id":"ax3do6_-zW5e3m0aTEXHG","text_dimensions":-1.06341004371643,"door_coords":{"x":256.6068115234375,"y":229.6896209716797,"z":106.37024688720705}}],"door_name":"Cashier Entrance Left","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":88,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":-2121568016,"unique_id":"6k9gOnaW7Ep6bNRn9Po-Q","text_dimensions":-1.06341004371643,"door_coords":{"x":270.23065185546877,"y":221.26730346679688,"z":106.37024688720705}}],"door_name":"Cashier Entrance Middle Left","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":89,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":-2121568016,"unique_id":"IKK_z28io3aPeqUhi1yHf","text_dimensions":-1.06341004371643,"door_coords":{"x":267.3699645996094,"y":213.40798950195313,"z":106.37024688720705}}],"door_name":"Cashier Entrance Middle Right","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":90,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":409280169,"unique_id":"LiUQuhH9KYe8JaoYB-EMC","text_dimensions":-1.30127382278442,"door_coords":{"x":272.6421508789063,"y":219.89871215820313,"z":97.31797790527344}}],"door_name":"Basement Gate 1","default_state":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":91,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":409280169,"unique_id":"rP7aaCmP2sQduDKh1DFaW","text_dimensions":-1.30127382278442,"door_coords":{"x":270.10321044921877,"y":212.9229278564453,"z":97.31797790527344}}],"door_name":"Basement Gate 2","default_state":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":92,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":409280169,"unique_id":"gnw1saPurY3Ak-j9yPFCe","text_dimensions":-1.30127382278442,"door_coords":{"x":265.7790832519531,"y":225.86680603027345,"z":97.31797790527344}}],"door_name":"Basement Reception","default_state":false,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":93,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":409280169,"unique_id":"bg3s-1GZ07q9srBlLvTT5","text_dimensions":-1.30127382278442,"door_coords":{"x":256.4124450683594,"y":229.27593994140626,"z":97.31797790527344}}],"door_name":"Basement Door 1","default_state":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":94,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":409280169,"unique_id":"uYuRcRJHUlQPRB-EHdCbM","text_dimensions":-1.30127382278442,"door_coords":{"x":251.64984130859376,"y":216.19061279296876,"z":97.31797790527344}}],"door_name":"Basement Door 2","default_state":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":95,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":409280169,"unique_id":"wv_m_XdZ81_qICBE1ylUe","text_dimensions":-1.30127382278442,"door_coords":{"x":250.564208984375,"y":233.39938354492188,"z":97.31797790527344}}],"door_name":"Basement Door 3","default_state":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":96,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":409280169,"unique_id":"sixVPUAf15AgAt5BZ4gm8","text_dimensions":-1.30127382278442,"door_coords":{"x":244.55801391601566,"y":216.89727783203129,"z":97.31797790527344}}],"door_name":"Basement Door 4","default_state":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":97,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":643152522,"unique_id":"zujslrn8iMp6uaDlSW88k","text_dimensions":-1.1898258371927,"door_coords":{"x":229.89053344726566,"y":227.34201049804688,"z":97.323974609375}}],"door_name":"Safe Left","default_state":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":98,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pacific Bank","door_data":[{"model_hash":643152522,"unique_id":"q5iUxr-FacASYFx7h0zSa","text_dimensions":-1.1898258371927,"door_coords":{"x":225.6462860107422,"y":228.88677978515626,"z":97.323974609375}}],"door_name":"Safe Right","default_state":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/paleto_bank.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/paleto_bank.json
new file mode 100644
index 000000000..55a1e4f73
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/paleto_bank.json
@@ -0,0 +1 @@
+{"name":"paleto_bank.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto Bank","door_data":[{"unique_id":"jLHu9aevb7RYl_NmxCGOw","model_hash":2063730765,"text_dimensions":1.31868304149247,"door_coords":{"x":-110.64230346679688,"y":6462.0126953125,"z":31.79333686828613}}],"door_name":"Entrance","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto Bank","door_data":[{"unique_id":"8-iprbPT34OZfgRyeJ_p4","model_hash":2110946875,"text_dimensions":1.31868304149247,"door_coords":{"x":-104.83712768554688,"y":6463.77392578125,"z":31.79334640502929}}],"door_name":"Loans 1","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":3,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto Bank","door_data":[{"unique_id":"j088lUsWcYYhJVp22bXEc","model_hash":1754616769,"text_dimensions":1.31868304149247,"door_coords":{"x":-100.62174224853516,"y":6467.9892578125,"z":31.79334640502929}}],"door_name":"Loans 2","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":4,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto Bank","door_data":[{"unique_id":"Gfndx0nW8QgkUBKuGDd6U","model_hash":-368548260,"text_dimensions":1.31868304149247,"door_coords":{"x":-104.70573425292968,"y":6473.91796875,"z":31.78798294067382}}],"door_name":"Administration","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":5,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto Bank","door_data":[{"unique_id":"1C1Wzsg7blXw2rL1bleSh","model_hash":1248599813,"text_dimensions":-1.30158996913814,"door_coords":{"x":-116.51268768310549,"y":6478.9599609375,"z":31.78797912597656}}],"door_name":"Side Exit 1","default_state":true,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":6,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto Bank","door_data":[{"unique_id":"Gikw4y6imHLK_nfyySOyN","model_hash":-56652918,"text_dimensions":1.31868304149247,"door_coords":{"x":-111.04269409179688,"y":6475.328125,"z":31.78797912597656}}],"door_name":"Back Rooms 1","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":7,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto Bank","door_data":[{"unique_id":"zhuiD6XZVo0QipRaw9h5I","model_hash":1784650867,"text_dimensions":1.44222111906856,"door_coords":{"x":-112.57083129882813,"y":6468.0078125,"z":31.21414375305175}}],"door_name":"Reception","default_state":false,"state":false,"secret":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":8,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto Bank","door_data":[{"unique_id":"QOYQustiVHEI4oMdVURjp","model_hash":-147325430,"text_dimensions":1.29998779296875,"door_coords":{"x":-92.23223114013672,"y":6468.96044921875,"z":31.78797912597656}}],"door_name":"CCTV","default_state":true,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":9,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto Bank","door_data":[{"unique_id":"H5xjprPhDo3w9m_HmaXnL","model_hash":1248599813,"text_dimensions":-1.30158996913814,"door_coords":{"x":-96.70865631103516,"y":6474.056640625,"z":31.78797912597656}}],"door_name":"Side Exit 2","default_state":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":10,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto Bank","door_data":[{"unique_id":"fN4R0S7Z4DHdlX0gomOi-","model_hash":-147325430,"text_dimensions":1.29998779296875,"door_coords":{"x":-100.11229705810549,"y":6474.39208984375,"z":31.78797912597656}}],"door_name":"Back Rooms 2","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":11,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto Bank","door_data":[{"unique_id":"FJsp7GipHJ0-drcU4Qz5P","model_hash":-2050208642,"text_dimensions":1.63406101614236,"door_coords":{"x":-100.24186706542968,"y":6464.54931640625,"z":31.88460350036621}}],"door_name":"Safe","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/paleto_pd.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/paleto_pd.json
new file mode 100644
index 000000000..426572d87
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/paleto_pd.json
@@ -0,0 +1 @@
+{"name":"paleto_pd.json","imported":false,"data":[{"id":117,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"mYpSqW1QRuWQ5tqxWrGoI","model_hash":733214349,"text_dimensions":1.01486622495576,"door_coords":{"x":-437.1716918945313,"y":6012.947265625,"z":32.28851318359375}},{"unique_id":"9ngCkw8ePds1OvUKnWZr5","model_hash":965382714,"text_dimensions":1.01486622495576,"door_coords":{"x":-438.5865478515625,"y":6014.36181640625,"z":32.28851318359375}}],"door_name":"Entrance","default_state":true,"state":false,"secret":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":118,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"mk45WGPeZjv5G7Z-AynQ4","model_hash":1362051455,"text_dimensions":1.1027676127851,"door_coords":{"x":-443.9599914550781,"y":6017.162109375,"z":32.28851318359375}}],"door_name":"Reception","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":119,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"sQLpSpEf9Vf3oKPuVbp9Q","model_hash":1362051455,"text_dimensions":1.1027676127851,"door_coords":{"x":-446.6564025878906,"y":6003.453125,"z":32.28851318359375}},{"unique_id":"JfhGTD4tSNchc2OVYpT_b","model_hash":1857649811,"text_dimensions":1.08200624212622,"door_coords":{"x":-448.0712890625,"y":6004.8681640625,"z":32.28851318359375}}],"door_name":"Waiting room","default_state":true,"state":true,"secret":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":120,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"Pf-bhzpf7hkcoVw62H0oA","model_hash":733214349,"text_dimensions":1.01486622495576,"door_coords":{"x":-454.9016723632813,"y":5998.0517578125,"z":32.28851318359375}},{"unique_id":"vGW-3HE1CJGTJXsgbiIB_","model_hash":965382714,"text_dimensions":1.01486622495576,"door_coords":{"x":-453.48675537109377,"y":5996.63720703125,"z":32.28851318359375}}],"door_name":"Rear entrance","default_state":true,"state":false,"secret":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":121,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"4q57QSMOJjWFf6K2xIVhv","model_hash":1362051455,"text_dimensions":1.1027676127851,"door_coords":{"x":-451.4247131347656,"y":6003.42041015625,"z":32.28851318359375}},{"unique_id":"ENbLfISx0mnoQQ69Pmi57","model_hash":1857649811,"text_dimensions":1.08200624212622,"door_coords":{"x":-450.00982666015627,"y":6004.83544921875,"z":32.28851318359375}}],"door_name":"Stairs","default_state":true,"state":false,"secret":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2},{"id":122,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"iCJRnrxMGyRWxRi0uVrgu","model_hash":1362051455,"text_dimensions":1.1027676127851,"door_coords":{"x":-451.4247131347656,"y":6003.42041015625,"z":27.58121490478515}},{"unique_id":"X2nUvXFCliRn_Ap49V2C1","model_hash":1857649811,"text_dimensions":1.08200624212622,"door_coords":{"x":-450.00982666015627,"y":6004.83544921875,"z":27.58121490478515}}],"door_name":"Basement","default_state":true,"state":false,"secret":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":123,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"n-PR99rI3sQSq2NaP-haM","model_hash":-594854737,"text_dimensions":-1.30000275373458,"door_coords":{"x":-443.6405029296875,"y":6006.97265625,"z":27.73100090026855}}],"door_name":"Cell area","default_state":true,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":124,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"KKgeq1NyKdtVTGlV8k4zL","model_hash":-594854737,"text_dimensions":-1.30000275373458,"door_coords":{"x":-442.2433471679688,"y":6012.61962890625,"z":27.73100090026855}}],"door_name":"Cells","default_state":true,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":125,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"_wZ5IVEmOpmb3eovtpILK","model_hash":-594854737,"text_dimensions":-1.30000275373458,"door_coords":{"x":-445.9456787109375,"y":6012.88037109375,"z":27.73100090026855}}],"door_name":"Cell Left 1","default_state":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":126,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"MQmym_QiygS2EpwRruSzM","model_hash":-594854737,"text_dimensions":-1.30000275373458,"door_coords":{"x":-448.9160461425781,"y":6015.85107421875,"z":27.73100090026855}}],"door_name":"Cell Left 2","default_state":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":127,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"MvQwhcHWFE2Dhuhr-gf7v","model_hash":-594854737,"text_dimensions":-1.30000275373458,"door_coords":{"x":-443.39007568359377,"y":6015.43603515625,"z":27.73100090026855}}],"door_name":"Cell Right 1","default_state":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":128,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"T6wUp5LoM9EHpgjOcfWyD","model_hash":-594854737,"text_dimensions":-1.30000275373458,"door_coords":{"x":-446.3604431152344,"y":6018.40673828125,"z":27.73100090026855}}],"door_name":"Cell Right 2","default_state":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":129,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"QBD5_1ByVgP6nnmLEzKWo","model_hash":1362051455,"text_dimensions":1.1027676127851,"door_coords":{"x":-443.0612182617188,"y":5999.8740234375,"z":27.58121490478515}}],"door_name":"Observation 1","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":130,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"Vlojtwm21JO-kTrxtdz2m","model_hash":1362051455,"text_dimensions":1.1027676127851,"door_coords":{"x":-446.4799499511719,"y":5996.46875,"z":27.58121490478515}}],"door_name":"Observation 2","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":131,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"Efe8JK1wk_QeEcFLKaclZ","model_hash":1362051455,"text_dimensions":1.1027676127851,"door_coords":{"x":-441.9415588378906,"y":5998.75439453125,"z":27.58121490478515}}],"door_name":"Interrogation 1","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":132,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"IKDA2zrTFY5YwsDHDqi7O","model_hash":1362051455,"text_dimensions":1.1027676127851,"door_coords":{"x":-445.35357666015627,"y":5995.34228515625,"z":27.58121490478515}}],"door_name":"Interrogation 2","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":133,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"wLepwfSvBihExyiAuaEsx","model_hash":1362051455,"text_dimensions":1.1027676127851,"door_coords":{"x":-449.5087890625,"y":5999.46826171875,"z":27.58121490478515}}],"door_name":"Mugshot","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":134,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"e_LtqC05oJt0_L-VVRLIu","model_hash":1857649811,"text_dimensions":1.08200624212622,"door_coords":{"x":-450.00982666015627,"y":6004.83544921875,"z":36.99581527709961}},{"unique_id":"ttIj8z_FZj__WEbz0JN5f","model_hash":1362051455,"text_dimensions":1.1027676127851,"door_coords":{"x":-451.4247131347656,"y":6003.42041015625,"z":36.99581527709961}}],"door_name":"Upstairs","default_state":true,"state":false,"secret":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":135,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"VinQMAArDcQHv84JSE2Io","model_hash":1362051455,"text_dimensions":1.1027676127851,"door_coords":{"x":-447.4444885253906,"y":6011.51220703125,"z":36.99581527709961}}],"door_name":"Armory","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":136,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"XbP5HzVu2hrEqAxRH7_nX","model_hash":1362051455,"text_dimensions":1.1027676127851,"door_coords":{"x":-441.672607421875,"y":6009.1435546875,"z":36.99581527709961}}],"door_name":"Lockers","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":137,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"m_x_eJ8N1jz1bVQzuh5x5","model_hash":899779172,"text_dimensions":1.21875433938112,"door_coords":{"x":-446.9224548339844,"y":6001.234375,"z":37.29659271240234}}],"door_name":"Office entrance 1","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":138,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"Mvyb1pUHDJOKEay13o4s4","model_hash":899779172,"text_dimensions":1.21875433938112,"door_coords":{"x":-443.9523010253906,"y":6004.20458984375,"z":37.29659271240234}}],"door_name":"Office Entrance 2","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":139,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"VVkHd9U8BOncuPIRULgvA","model_hash":1362051455,"text_dimensions":1.1027676127851,"door_coords":{"x":-437.1285400390625,"y":6004.658203125,"z":36.99581527709961}}],"door_name":"Sheriff","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":140,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Paleto PD","door_data":[{"unique_id":"NqTSiTleDgMipywzuVWoc","model_hash":1362051455,"text_dimensions":1.1027676127851,"door_coords":{"x":-449.6783752441406,"y":5999.3447265625,"z":36.99581527709961}}],"door_name":"Archive","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/park_rangers.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/park_rangers.json
new file mode 100644
index 000000000..43242f10d
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/park_rangers.json
@@ -0,0 +1 @@
+{"name":"park_rangers.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Park Rangers","door_data":[{"unique_id":"3Xd5wg_yiIMXqzAFNc6dB","model_hash":-117185009,"text_dimensions":-1.29981100191804,"door_coords":{"x":387.7514953613281,"y":792.87109375,"z":187.84912109375}}],"door_name":"Downstairs Entrance","camera":true,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Park Rangers","door_data":[{"unique_id":"RpAepy1-JPSsn7EbwiVtj","model_hash":-117185009,"text_dimensions":-1.29981100191804,"door_coords":{"x":388.63128662109377,"y":799.6823120117188,"z":187.8262634277344}}],"door_name":"Downstairs Side Entrance","camera":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":3,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Park Rangers","door_data":[{"unique_id":"9yq7H3Mq2tPfBhWuWIln7","model_hash":517369125,"text_dimensions":-1.29981005191802,"door_coords":{"x":383.4079284667969,"y":798.2910766601563,"z":187.61181640625}}],"door_name":"Cells","camera":true,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":4,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Park Rangers","door_data":[{"unique_id":"E1gDu9ZR7sP5p22_3TE5x","model_hash":517369125,"text_dimensions":-1.29981005191802,"door_coords":{"x":382.9616088867188,"y":796.8286743164063,"z":187.61172485351566}}],"door_name":"Cell 1","camera":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":5,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Park Rangers","door_data":[{"unique_id":"dyze6oCzWYlGS0_Hed8ZA","model_hash":517369125,"text_dimensions":-1.29981005191802,"door_coords":{"x":378.75830078125,"y":796.83642578125,"z":187.6123046875}}],"door_name":"Cell 2","camera":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":6,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Park Rangers","door_data":[{"unique_id":"1P9fGUfX3fyNGBzC-icYe","model_hash":-117185009,"text_dimensions":-1.29981100191804,"door_coords":{"x":380.2174377441406,"y":792.7882690429688,"z":190.6414337158203}}],"door_name":"Upstairs Entrance","camera":true,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":7,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Park Rangers","door_data":[{"unique_id":"mkvXJc6cNcrVnjqRgNtxf","model_hash":1704212348,"text_dimensions":-1.29981100191804,"door_coords":{"x":384.3811950683594,"y":796.0927734375,"z":190.63963317871098}}],"door_name":"Office","camera":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/pillbox.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/pillbox.json
new file mode 100644
index 000000000..debda8b68
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/pillbox.json
@@ -0,0 +1 @@
+{"name":"pillbox.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":854291622,"unique_id":"tiYeDB0T_h1-h_KaJLfel","text_dimensions":1.30290603637695,"door_coords":{"x":313.4800720214844,"y":-595.4583129882813,"z":43.43391036987305}}],"door_name":"Reception","default_state":true,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":854291622,"unique_id":"C4mA_Ch16g5obbUhG8wUT","text_dimensions":1.30290603637695,"door_coords":{"x":309.13372802734377,"y":-597.75146484375,"z":43.43391036987305}}],"door_name":"Staff Room","default_state":true,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":3,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":854291622,"unique_id":"rPZtgk7I0gMell5lhvFlm","text_dimensions":1.30290603637695,"door_coords":{"x":303.90869140625,"y":-596.5780029296875,"z":43.43391036987305}}],"door_name":"Cloakroom","default_state":true,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":4,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":854291622,"unique_id":"QSfUmfZoo1hpq_65b2n_l","text_dimensions":1.30290603637695,"door_coords":{"x":298.9548034667969,"y":-594.7749633789063,"z":43.43391036987305}}],"door_name":"Restroom","default_state":true,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":5,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":-434783486,"unique_id":"beNn5DgBugkLGT56NMxNl","text_dimensions":1.28710901737213,"door_coords":{"x":328.1364440917969,"y":-592.7760620117188,"z":43.43391036987305}},{"model_hash":-1700911976,"unique_id":"I5dY3cKejQ4haPf-WwA1j","text_dimensions":-1.28710901737213,"door_coords":{"x":327.2560119628906,"y":-595.1950073242188,"z":43.43391036987305}}],"door_name":"Ward D","default_state":true,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":6,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":-434783486,"unique_id":"CjqekLj5w5k7AliSIetT7","text_dimensions":1.28710901737213,"door_coords":{"x":324.23602294921877,"y":-589.2261962890625,"z":43.43391036987305}},{"model_hash":-1700911976,"unique_id":"Ev4tXERoXT62wP-kVbQPm","text_dimensions":-1.28710901737213,"door_coords":{"x":326.6549987792969,"y":-590.1066284179688,"z":43.43391036987305}}],"door_name":"Ward B","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":7,"perms":{"job":[{"grade":0,"name":"ems"},{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":854291622,"unique_id":"soMG31C82Kk1jx05Q8o7X","text_dimensions":1.30290603637695,"door_coords":{"x":328.9761657714844,"y":-586.5975341796875,"z":43.43391036987305}}],"door_name":"Restroom B1","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":8,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":854291622,"unique_id":"kRPNS7Y7cIJNHaoJT-PUL","text_dimensions":1.30290603637695,"door_coords":{"x":328.7010803222656,"y":-587.3118896484375,"z":43.43391036987305}}],"door_name":"Restroom B2","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":9,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":854291622,"unique_id":"Gvq6ruGNnMUmBW1HP5bIH","text_dimensions":1.30290603637695,"door_coords":{"x":336.162841796875,"y":-580.1403198242188,"z":43.43391036987305}}],"door_name":"MRI B","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":10,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":854291622,"unique_id":"-ujPtqiuk4lweZRN57Sn2","text_dimensions":1.30290603637695,"door_coords":{"x":339.0049743652344,"y":-586.703369140625,"z":43.43391036987305}}],"door_name":"Administration B","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":11,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":854291622,"unique_id":"g76VHsWy5x9tNpDGbhu4h","text_dimensions":1.30290603637695,"door_coords":{"x":340.7818298339844,"y":-581.8214721679688,"z":43.43391036987305}}],"door_name":"Diagnostics B","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":12,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":854291622,"unique_id":"h_DxYEJ72iapsWfYURp-Y","text_dimensions":1.30290603637695,"door_coords":{"x":346.77392578125,"y":-584.00244140625,"z":43.43391036987305}}],"door_name":"XRAY B","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":13,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":-434783486,"unique_id":"ga0v2TIKrUAY1ifM6JlLs","text_dimensions":1.28710901737213,"door_coords":{"x":349.3137512207031,"y":-586.3259887695313,"z":43.43391036987305}},{"model_hash":-1700911976,"unique_id":"r7dTWrYTeYhUTa5mu0QZz","text_dimensions":-1.28710901737213,"door_coords":{"x":348.4333190917969,"y":-588.7449951171875,"z":43.43391036987305}}],"door_name":"Ward C","default_state":true,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":14,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":854291622,"unique_id":"95qGlQc8gIUipXlV3LpnL","text_dimensions":1.30290603637695,"door_coords":{"x":357.4907836914063,"y":-579.6105346679688,"z":43.43391036987305}}],"door_name":"Private 369 C","default_state":true,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":15,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":854291622,"unique_id":"MSTWr88n8RjXhHJJanMn5","text_dimensions":1.30290603637695,"door_coords":{"x":356.12518310546877,"y":-583.3624877929688,"z":43.43391036987305}}],"door_name":"Private 370 C","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":16,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":854291622,"unique_id":"hD_gkzg1-0rLwLvCNZ0v8","text_dimensions":1.30290603637695,"door_coords":{"x":352.1996765136719,"y":-594.1477661132813,"z":43.43391036987305}}],"door_name":"Dr Office 373 C","default_state":false,"state":false,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":17,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":854291622,"unique_id":"adjc4yqNcfl6_YGT2MC7O","text_dimensions":1.30290603637695,"door_coords":{"x":350.8340759277344,"y":-597.8997192382813,"z":43.43391036987305}}],"door_name":"Private 374 C","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":18,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":854291622,"unique_id":"SoQ81UquSsbtKIEcRSeYj","text_dimensions":1.30290603637695,"door_coords":{"x":345.5199279785156,"y":-597.3519287109375,"z":43.43391036987305}}],"door_name":"Restroom C1","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":19,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":854291622,"unique_id":"URMWFFdyK9BFdGQ_CheEF","text_dimensions":1.30290603637695,"door_coords":{"x":346.885498046875,"y":-593.5999755859375,"z":43.43391036987305}}],"door_name":"Treatment C","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":20,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":854291622,"unique_id":"NSto3RXUfjxYtkY0TmlUT","text_dimensions":1.30290603637695,"door_coords":{"x":358.7265319824219,"y":-593.8814086914063,"z":43.43391036987305}}],"door_name":"Dr Office 372 C","default_state":true,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":21,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":854291622,"unique_id":"kgPlgnvn-PbXi4t5djXYw","text_dimensions":1.30290603637695,"door_coords":{"x":360.5033874511719,"y":-588.99951171875,"z":43.43391036987305}}],"door_name":"Patient 371 C","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":22,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":-1700911976,"unique_id":"1mWtFa2Whxh3B1rhFiAHS","text_dimensions":-1.28710901737213,"door_coords":{"x":305.22186279296877,"y":-582.3056030273438,"z":43.43391036987305}},{"model_hash":-434783486,"unique_id":"2PtsE7pHaSV_DgCnsAAwB","text_dimensions":1.28710901737213,"door_coords":{"x":302.8030700683594,"y":-581.424560546875,"z":43.43391036987305}}],"door_name":"Ward A","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":23,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":854291622,"unique_id":"zA-40XVQDVal_mjYtwIGu","text_dimensions":1.30290603637695,"door_coords":{"x":303.9596252441406,"y":-572.5579223632813,"z":43.43391036987305}}],"door_name":"Closet A","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":24,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":854291622,"unique_id":"HJUgIzG56x53st0ROTNfn","text_dimensions":1.30290603637695,"door_coords":{"x":307.1181945800781,"y":-569.5689697265625,"z":43.43391036987305}}],"door_name":"Laboratory A","default_state":true,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":25,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":-434783486,"unique_id":"A22ny6kdpXpNk82jXPkP4","text_dimensions":1.28710901737213,"door_coords":{"x":312.005126953125,"y":-571.3411865234375,"z":43.43391036987305}},{"model_hash":-1700911976,"unique_id":"wyGfehIipTu5EUwkvyRvJ","text_dimensions":-1.28710901737213,"door_coords":{"x":314.4241027832031,"y":-572.2215576171875,"z":43.43391036987305}}],"door_name":"Surgery 1A","default_state":true,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2},{"id":26,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":-1700911976,"unique_id":"GpmLJPgrKv_RYu7jOvTwS","text_dimensions":-1.28710901737213,"door_coords":{"x":316.0657043457031,"y":-578.3477172851563,"z":43.43391036987305}},{"model_hash":-434783486,"unique_id":"U6FX4CpIRvhP8Mtjprmdw","text_dimensions":1.28710901737213,"door_coords":{"x":318.4846801757813,"y":-579.2281494140625,"z":43.43391036987305}}],"door_name":"Intensive Care A","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":27,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":-434783486,"unique_id":"Cb0ITJgFoqVp1RTGSB-3X","text_dimensions":1.28710901737213,"door_coords":{"x":323.237548828125,"y":-575.429443359375,"z":43.43391036987305}},{"model_hash":-1700911976,"unique_id":"bgqmxw4r3xscf7XSKvuun","text_dimensions":-1.28710901737213,"door_coords":{"x":325.6565246582031,"y":-576.3099365234375,"z":43.43391036987305}}],"door_name":"Surgery 2A","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":28,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":-434783486,"unique_id":"6avTRzfuDCBt0A7m7OMSZ","text_dimensions":1.28710901737213,"door_coords":{"x":348.9818420410156,"y":-583.9497680664063,"z":28.94709205627441}},{"model_hash":-1700911976,"unique_id":"penACbbCDeAEVMdwpRRfd","text_dimensions":-1.28710901737213,"door_coords":{"x":349.8607482910156,"y":-581.5304565429688,"z":28.94709205627441}}],"door_name":"Hallway 1","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":29,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":-434783486,"unique_id":"W4mRjSJH9OUkE4WcsnYc1","text_dimensions":1.28710901737213,"door_coords":{"x":345.789794921875,"y":-592.7227172851563,"z":28.94709205627441}},{"model_hash":-1700911976,"unique_id":"U2CKhzEcIb0jQdlkClL8t","text_dimensions":-1.28710901737213,"door_coords":{"x":346.6690063476563,"y":-590.3026733398438,"z":28.94709205627441}}],"door_name":"Hallway 2","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":30,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":-434783486,"unique_id":"v5uHuJBPUFsS7nsKJLDNV","text_dimensions":1.28710901737213,"door_coords":{"x":338.4466552734375,"y":-590.052978515625,"z":28.94709205627441}},{"model_hash":-1700911976,"unique_id":"81zbfo89AbvZPlX_1wKIZ","text_dimensions":-1.28710901737213,"door_coords":{"x":339.32659912109377,"y":-587.634521484375,"z":28.94709205627441}}],"door_name":"Garage","default_state":true,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":31,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":-1421582160,"unique_id":"B7NFWHbxnh6L44p7omQGI","text_dimensions":-1.30159056186676,"door_coords":{"x":321.01483154296877,"y":-559.9127197265625,"z":28.94723892211914}},{"model_hash":1248599813,"unique_id":"WIO4P4bIGJ4fvsdCSKTmo","text_dimensions":-1.30158996913814,"door_coords":{"x":318.6656188964844,"y":-561.0086059570313,"z":28.94723892211914}}],"door_name":"Garage Exit","default_state":true,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":32,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":-820650556,"unique_id":"QyOU3ahXSFWFXCNt-IjP3","text_dimensions":0,"door_coords":{"x":329.7497253417969,"y":-562.891845703125,"z":31.75255966186523}}],"door_name":"Garage Door 1","default_state":true,"state":true,"secret":false,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"camera":true,"distance":10},{"id":33,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":-820650556,"unique_id":"D8dY74HEw2TeF5VkXZ8Sf","text_dimensions":0,"door_coords":{"x":337.28314208984377,"y":-564.4170532226563,"z":29.84545516967773}}],"door_name":"Garage Door 2","default_state":true,"state":true,"secret":false,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"camera":true,"distance":10},{"id":34,"perms":{"job":[{"grade":0,"name":"police"},{"grade":0,"name":"ems"}],"identifier":[]},"location_group":"Pillbox","door_data":[{"model_hash":854291622,"unique_id":"mUIM-yO3hV3Y7pILE-J7A","text_dimensions":1.30290603637695,"door_coords":{"x":348.5466918945313,"y":-585.158447265625,"z":28.94709205627441}}],"door_name":"Reception","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/pizzeria.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/pizzeria.json
new file mode 100644
index 000000000..8d7e123dd
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/pizzeria.json
@@ -0,0 +1 @@
+{"name":"pizzeria.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pizzeria","door_data":[{"model_hash":95403626,"unique_id":"FvjalE0l4xr-QI_hv1GsE","text_dimensions":1.19135439660749,"door_coords":{"x":794.2511596679688,"y":-757.061767578125,"z":27.02702140808105}},{"model_hash":-49173194,"unique_id":"_8XQZ_E6Qj72Y9GMwZkTz","text_dimensions":-1.19135454660863,"door_coords":{"x":794.2511596679688,"y":-759.4415283203125,"z":27.02702140808105}}],"door_name":"Entrance","secret":false,"state":true,"default_state":true,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pizzeria","door_data":[{"model_hash":-49173194,"unique_id":"pOgtQpOu6a6HyZv-s6WKk","text_dimensions":-1.19135454660863,"door_coords":{"x":803.2781982421875,"y":-747.9281616210938,"z":27.02702140808105}},{"model_hash":95403626,"unique_id":"YxJ4GOxaTv8ee7hk6NLi5","text_dimensions":1.19135439660749,"door_coords":{"x":805.657958984375,"y":-747.9281616210938,"z":27.02702140808105}}],"door_name":"Garden Entrance","secret":false,"state":true,"default_state":true,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":3,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pizzeria","door_data":[{"model_hash":1984391163,"unique_id":"1fx_mdk1rpXjKPBqSXSbD","text_dimensions":-1.2905197138898,"door_coords":{"x":810.4091796875,"y":-756.2732543945313,"z":26.93464088439941}}],"door_name":"Kitchen","secret":false,"state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":4,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pizzeria","door_data":[{"model_hash":-357301147,"unique_id":"KcLPfzHhkmRae53WJf2Xm","text_dimensions":-1.65760004520416,"door_coords":{"x":805.2612915039063,"y":-758.6717529296875,"z":25.79215812683105}}],"door_name":"Freezer","secret":false,"state":false,"default_state":true,"door_sound":"door_switch.ogg","door_type":"gates","lockpickable":false,"camera":true,"distance":10},{"id":5,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pizzeria","door_data":[{"model_hash":1984391163,"unique_id":"AN2_QMYZ500VNm99BRdkp","text_dimensions":-1.2905197138898,"door_coords":{"x":806.2781372070313,"y":-765.8098754882813,"z":26.93464088439941}}],"door_name":"Basement","secret":false,"state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":6,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pizzeria","door_data":[{"model_hash":-420112688,"unique_id":"qd0y5HGyPiqkQ390rca0X","text_dimensions":-1.3219967666082,"door_coords":{"x":814.5675048828125,"y":-762.8239135742188,"z":27.04651069641113}}],"door_name":"Rear Exit","secret":false,"state":false,"default_state":true,"door_sound":"","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":7,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pizzeria","door_data":[{"model_hash":1984391163,"unique_id":"Q9WxNICnpHoQIKfD1qWZK","text_dimensions":-1.2905197138898,"door_coords":{"x":804.4857788085938,"y":-767.697509765625,"z":31.41847038269043}}],"door_name":"Staff Rooms","secret":false,"state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":8,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pizzeria","door_data":[{"model_hash":1984391163,"unique_id":"_pqBxdL5kcm6OXYhUo5Hg","text_dimensions":-1.2905197138898,"door_coords":{"x":806.8858032226563,"y":-764.5674438476563,"z":31.41847038269043}}],"door_name":"Lockers","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":9,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pizzeria","door_data":[{"model_hash":1984391163,"unique_id":"zJHlhhiqfdPUlvVavxul7","text_dimensions":-1.2905197138898,"door_coords":{"x":797.4042358398438,"y":-758.2521362304688,"z":31.41847038269043}}],"door_name":"CEO","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":10,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pizzeria","door_data":[{"model_hash":1984391163,"unique_id":"_r1oTe6bWkHZSdqdn2t9z","text_dimensions":-1.2905197138898,"door_coords":{"x":798.6846923828125,"y":-763.3290405273438,"z":31.41847038269043}}],"door_name":"Office","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":11,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pizzeria","door_data":[{"model_hash":1984391163,"unique_id":"DV2CdTBsz4uNYFU969SKX","text_dimensions":-1.2905197138898,"door_coords":{"x":811.9174194335938,"y":-762.4280395507813,"z":26.93464088439941}}],"door_name":"Upstairs","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":12,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pizzeria","door_data":[{"model_hash":1984391163,"unique_id":"RZsRUKJ7weo8c41pA3p1Q","text_dimensions":-1.2905197138898,"door_coords":{"x":800.4144897460938,"y":-763.9931640625,"z":26.93464088439941}}],"door_name":"WC Gents","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":13,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Pizzeria","door_data":[{"model_hash":1984391163,"unique_id":"WLh6LCOpMGdlice1yyMU1","text_dimensions":-1.2905197138898,"door_coords":{"x":800.4030151367188,"y":-765.0847778320313,"z":26.93464088439941}}],"door_name":"WC Ladies","secret":false,"state":false,"default_state":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ponsonbys.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ponsonbys.json
new file mode 100644
index 000000000..0a055ec58
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/ponsonbys.json
@@ -0,0 +1 @@
+{"name":"ponsonbys.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Ponsonbys","door_data":[{"model_hash":-1922281023,"unique_id":"Ay7SNjxZgGgDEt5URvjPc","text_dimensions":-1.05936599581036,"door_coords":{"x":-716.6500244140625,"y":-155.41656494140626,"z":37.68999099731445}},{"model_hash":-1922281023,"unique_id":"_TLVYXkcQOt1eN3Mw38Hg","text_dimensions":-1.05936599581036,"door_coords":{"x":-715.5914306640625,"y":-157.25010681152345,"z":37.68999099731445}}],"door_name":"Entrance","secret":false,"state":false,"default_state":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Ponsonbys","door_data":[{"model_hash":-1922281023,"unique_id":"G2f7V8cfDKFGK1OyoZZqA","text_dimensions":-1.05936599581036,"door_coords":{"x":-156.45928955078126,"y":-304.4152526855469,"z":40.00812911987305}},{"model_hash":-1922281023,"unique_id":"TNcHL8oOSnIqtAmvRAsWB","text_dimensions":-1.05936599581036,"door_coords":{"x":-157.14859008789066,"y":-306.4170837402344,"z":40.00812911987305}}],"door_name":"Entrance 2","secret":false,"state":false,"camera":true,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"default_state":false,"distance":2},{"id":3,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Ponsonbys","door_data":[{"model_hash":-1922281023,"unique_id":"GLboSamYTJI2pdDIMwUIG","text_dimensions":-1.05936599581036,"door_coords":{"x":-1454.7708740234376,"y":-231.81578063964845,"z":50.07158660888672}},{"model_hash":-1922281023,"unique_id":"zuZIvxMdXbcRag9I5VGmF","text_dimensions":-1.05936599581036,"door_coords":{"x":-1456.1876220703126,"y":-233.3890380859375,"z":50.07158279418945}}],"door_name":"Entrance 3","secret":false,"state":false,"default_state":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/pops_diner.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/pops_diner.json
new file mode 100644
index 000000000..8b1301d10
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/pops_diner.json
@@ -0,0 +1 @@
+{"name":"pops_diner.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Pops Diner","door_data":[{"model_hash":861832298,"unique_id":"4dFgAWmMfvCh9XczrXNhg","text_dimensions":1.10002598294522,"door_coords":{"x":1581.062255859375,"y":6458.740234375,"z":25.01383018493652}}],"door_name":"Entrance 1","secret":true,"state":false,"camera":true,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Pops Diner","door_data":[{"model_hash":-1428884643,"unique_id":"46de08AJtYcnPTNV-qW3y","text_dimensions":1.10002598294522,"door_coords":{"x":1595.5367431640626,"y":6451.9404296875,"z":25.01383018493652}}],"door_name":"Entrance 2","secret":true,"state":true,"camera":true,"door_sound":"","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/premium_deluxe_motorsport.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/premium_deluxe_motorsport.json
new file mode 100644
index 000000000..804b26a94
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/premium_deluxe_motorsport.json
@@ -0,0 +1 @@
+{"name":"premium_deluxe_motorsport.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Premium Deluxe Motorsport","door_data":[{"unique_id":"uvDc0OY8x7MO1HAEmL2Wd","model_hash":1973010099,"text_dimensions":1.38004902750253,"door_coords":{"x":-55.95074081420898,"y":-1088.0653076171876,"z":27.61301040649414}}],"door_name":"Main Entrance","state":true,"default_state":true,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Premium Deluxe Motorsport","door_data":[{"unique_id":"gLkOWZI7Z5PEZCE18I-YI","model_hash":1973010099,"text_dimensions":1.38004902750253,"door_coords":{"x":-48.12820434570312,"y":-1103.4998779296876,"z":27.61301040649414}}],"door_name":"Side Entrance","state":true,"default_state":true,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"distance":2},{"id":3,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Premium Deluxe Motorsport","door_data":[{"unique_id":"5VealIR2R4Fj2zIc_FNZy","model_hash":2089009131,"text_dimensions":-1.31781597249209,"door_coords":{"x":-27.62104797363281,"y":-1094.7628173828126,"z":27.42458724975586}}],"door_name":"Workshop Door","state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"distance":2},{"id":4,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Premium Deluxe Motorsport","door_data":[{"unique_id":"PejTcBim255BEmUZR6HGX","model_hash":1010499530,"text_dimensions":0,"door_coords":{"x":-21.86486625671386,"y":-1090.369873046875,"z":29.92569923400879}}],"door_name":"Workshop Garage Door","state":false,"default_state":true,"door_sound":"door_metal.ogg","door_type":"garage","lockpickable":false,"distance":10},{"id":5,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Premium Deluxe Motorsport","door_data":[{"unique_id":"q2H7PSn8xYm88q2sz7sEP","model_hash":2089009131,"text_dimensions":-1.31781597249209,"door_coords":{"x":-32.64266967773437,"y":-1108.5592041015626,"z":27.42458724975586}}],"door_name":"Office 1","state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"distance":2},{"id":6,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Premium Deluxe Motorsport","door_data":[{"unique_id":"ArmRQyw12i1lZgs9LT1X7","model_hash":2089009131,"text_dimensions":-1.31781597249209,"door_coords":{"x":-30.42845916748047,"y":-1102.47021484375,"z":27.42458724975586}}],"door_name":"Office 2","state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/record_a_studios.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/record_a_studios.json
new file mode 100644
index 000000000..08e3040a1
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/record_a_studios.json
@@ -0,0 +1 @@
+{"name":"record_a_studios.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Record A Studios","door_data":[{"unique_id":"apYor5UveFidv19OZI9BO","model_hash":-104698915,"text_dimensions":-1.17019524646457,"door_coords":{"x":475.156005859375,"y":-104.5779266357422,"z":63.30769348144531}},{"unique_id":"bCLFejiuA18_UtUA86WcM","model_hash":-350302570,"text_dimensions":-1.17019524646457,"door_coords":{"x":472.9541320800781,"y":-103.77748107910156,"z":63.30769348144531}}],"door_name":"Entrance","camera":true,"state":false,"default_state":true,"door_sound":"door_click.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Record A Studios","door_data":[{"unique_id":"NIg69NtC3fAdMx7_Ln-hf","model_hash":1364395251,"text_dimensions":-1.20916902879253,"door_coords":{"x":487.7897644042969,"y":-97.1702880859375,"z":63.31010055541992}},{"unique_id":"49aGK-0a0i6QvzV-qOi0B","model_hash":490866369,"text_dimensions":1.20916902879253,"door_coords":{"x":485.5348205566406,"y":-96.34949493408205,"z":63.31010055541992}}],"door_name":"Hallway","camera":true,"state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2},{"id":3,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Record A Studios","door_data":[{"unique_id":"3UJkhs14fIbD2e4vSQ63F","model_hash":490866369,"text_dimensions":1.20916902879253,"door_coords":{"x":481.77294921875,"y":-82.4202651977539,"z":57.91009902954101}},{"unique_id":"AJ7JSAGoHuyT7FetopGWY","model_hash":1364395251,"text_dimensions":-1.20916902879253,"door_coords":{"x":484.0281982421875,"y":-83.24117279052735,"z":57.91009902954101}}],"door_name":"Hallway 2","camera":true,"state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2},{"id":4,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Record A Studios","door_data":[{"unique_id":"Q0Gfa3qSRBRkovNp0CMn1","model_hash":-1643405159,"text_dimensions":-1.30503602372482,"door_coords":{"x":488.3698120117188,"y":-74.87567901611328,"z":58.31012344360351}}],"door_name":"Recording 1","camera":true,"state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":5,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Record A Studios","door_data":[{"unique_id":"DyV6IyytmEXq3IhYsA_wG","model_hash":-1643405159,"text_dimensions":-1.30503602372482,"door_coords":{"x":493.6206970214844,"y":-60.45001220703125,"z":58.31012344360351}}],"door_name":"Recording 2","camera":true,"state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":6,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Record A Studios","door_data":[{"unique_id":"uE8dya7Zj1TX5OJx8YEnr","model_hash":-1992090031,"text_dimensions":-1.30916905263438,"door_coords":{"x":489.9454650878906,"y":-78.2253646850586,"z":58.31320571899414}}],"door_name":"Lounge","camera":true,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":7,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Record A Studios","door_data":[{"unique_id":"26MRUytc7yDecrQQbdGsI","model_hash":1238289467,"text_dimensions":1.29961263248696,"door_coords":{"x":493.5103454589844,"y":-75.51423645019531,"z":58.31012344360351}},{"unique_id":"wSTTIHIkDsODgyleylpma","model_hash":161845515,"text_dimensions":-1.29961181432008,"door_coords":{"x":491.5640869140625,"y":-73.79964447021485,"z":58.31012344360351}}],"door_name":"Main Recording 1","camera":true,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2},{"id":8,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Record A Studios","door_data":[{"unique_id":"_tUYd0AG9qRR1I7dYAxY8","model_hash":161845515,"text_dimensions":-1.29961181432008,"door_coords":{"x":500.23004150390627,"y":-64.42359924316406,"z":58.31012344360351}},{"unique_id":"L2x3Y0F3OhzSdZgwrOg6j","model_hash":1238289467,"text_dimensions":1.29961263248696,"door_coords":{"x":497.6427917480469,"y":-64.23949432373047,"z":58.31012344360351}}],"door_name":"Main Recording 2","camera":true,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"secret":false,"distance":2},{"id":9,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Record A Studios","door_data":[{"unique_id":"54_Rvm_mej2l7m5djQx4a","model_hash":-1643405159,"text_dimensions":-1.30503602372482,"door_coords":{"x":504.0113525390625,"y":-63.38056182861328,"z":58.31012344360351}}],"door_name":"Drummer","camera":true,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":10,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Record A Studios","door_data":[{"unique_id":"bsYX6UTRSlpCMn2Di4w1R","model_hash":-1643405159,"text_dimensions":-1.30503602372482,"door_coords":{"x":510.9324951171875,"y":-67.20118713378906,"z":58.30988311767578}}],"door_name":"Back Room","camera":true,"state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":11,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Record A Studios","door_data":[{"unique_id":"o5MNVqlFXxsgVztT_TQW3","model_hash":-1643405159,"text_dimensions":-1.30503602372482,"door_coords":{"x":497.45404052734377,"y":-86.13240051269531,"z":58.31012344360351}}],"door_name":"Drummer 2","camera":true,"state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":12,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Record A Studios","door_data":[{"unique_id":"tjEDO6FAOKItvlIYdIdiI","model_hash":-1643405159,"text_dimensions":-1.30503602372482,"door_coords":{"x":494.1359252929688,"y":-77.84779357910156,"z":58.31012344360351}}],"door_name":"Drummer 3","camera":true,"state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":13,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Record A Studios","door_data":[{"unique_id":"Pdp-ChXqtN5DPU6rks65P","model_hash":-1643405159,"text_dimensions":-1.30503602372482,"door_coords":{"x":509.9294738769531,"y":-92.65479278564452,"z":58.31012344360351}}],"door_name":"Vocal 1","camera":true,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":14,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Record A Studios","door_data":[{"unique_id":"PZ2mNFUSdSRXuePUmEk6m","model_hash":1364395251,"text_dimensions":-1.20916902879253,"door_coords":{"x":512.8785400390625,"y":-89.31808471679688,"z":58.31013488769531}}],"door_name":"Vocal 2","camera":true,"state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":15,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Record A Studios","door_data":[{"unique_id":"Mx0EUVkjAY9qm-dsSRLVN","model_hash":1364395251,"text_dimensions":-1.20916902879253,"door_coords":{"x":504.7373046875,"y":-87.90481567382813,"z":58.31013488769531}}],"door_name":"Main Area","camera":true,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/sandy_pd.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/sandy_pd.json
new file mode 100644
index 000000000..f0f36e2b2
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/sandy_pd.json
@@ -0,0 +1 @@
+{"name":"sandy_pd.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Sandy PD","door_data":[{"unique_id":"uCOONmY7p0AMC_KaKb_yW","model_hash":-1501157055,"text_dimensions":-1.30001020431518,"door_coords":{"x":1835.126708984375,"y":3673.41845703125,"z":34.33900833129883}},{"unique_id":"nuksRfqHv0SqhiBYM58iI","model_hash":-1501157055,"text_dimensions":-1.30001020431518,"door_coords":{"x":1837.378173828125,"y":3674.71826171875,"z":34.33900833129883}}],"door_name":"Entrance","state":false,"secret":false,"door_sound":"_notification.ogg","door_type":"double","lockpickable":false,"default_state":true,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Sandy PD","door_data":[{"unique_id":"lo5w4cOonVUjHT50DKIel","model_hash":1364638935,"text_dimensions":1.20805097258846,"door_coords":{"x":1838.006103515625,"y":3677.10400390625,"z":34.28223037719726}}],"door_name":"Lockers","state":false,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":3,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Sandy PD","door_data":[{"unique_id":"INNe6ano110n5uEAyco6A","model_hash":1364638935,"text_dimensions":1.20805097258846,"door_coords":{"x":1836.488037109375,"y":3681.426513671875,"z":34.28223037719726}}],"door_name":"Restroom","state":false,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":4,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Sandy PD","door_data":[{"unique_id":"-b3jen5B4vGUz8Q4vEslR","model_hash":-1264811159,"text_dimensions":1.20805097258846,"door_coords":{"x":1838.9652099609376,"y":3682.856689453125,"z":34.28223037719726}}],"door_name":"Armory","state":false,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":5,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Sandy PD","door_data":[{"unique_id":"T6eU6-eXirbSgnOsoGS2e","model_hash":-1264811159,"text_dimensions":1.20805097258846,"door_coords":{"x":1829.852783203125,"y":3673.788818359375,"z":34.28223037719726}}],"door_name":"Office","state":true,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":6,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Sandy PD","door_data":[{"unique_id":"hz_B9QlhH3awOn3STGAwN","model_hash":-1264811159,"text_dimensions":1.20805097258846,"door_coords":{"x":1829.38427734375,"y":3680.266845703125,"z":34.28223037719726}}],"door_name":"Reception","state":false,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":7,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Sandy PD","door_data":[{"unique_id":"3E0lTsDcZsFymp_UuVFN5","model_hash":-1501157055,"text_dimensions":-1.30001020431518,"door_coords":{"x":1823.86328125,"y":3681.116943359375,"z":34.33900833129883}}],"door_name":"Rear entrance","state":false,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":8,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Sandy PD","door_data":[{"unique_id":"AFX_mC2er8mMfJkdBXVz4","model_hash":2010487154,"text_dimensions":-1.18245634309846,"door_coords":{"x":1813.55126953125,"y":3675.055419921875,"z":34.39608764648437}}],"door_name":"Cells","state":false,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":9,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Sandy PD","door_data":[{"unique_id":"g7h8dqm6UWDgv6lkjN4Ae","model_hash":2010487154,"text_dimensions":-1.18245634309846,"door_coords":{"x":1810.131103515625,"y":3676.46435546875,"z":34.39608764648437}}],"door_name":"Cell 1","state":true,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":10,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Sandy PD","door_data":[{"unique_id":"9JkFWooZuFmkjcobyqwRW","model_hash":2010487154,"text_dimensions":-1.18245634309846,"door_coords":{"x":1808.62939453125,"y":3679.0654296875,"z":34.39608764648437}}],"door_name":"Cell 2","state":true,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":11,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Sandy PD","door_data":[{"unique_id":"fxCDLPiHmnr4TgWTYFI-4","model_hash":2010487154,"text_dimensions":-1.18245634309846,"door_coords":{"x":1807.131103515625,"y":3681.660400390625,"z":34.39608764648437}}],"door_name":"Cell 3","state":true,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":12,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Sandy PD","door_data":[{"unique_id":"tT2eQfd8LQfTlljkCmBW0","model_hash":1364638935,"text_dimensions":1.20805097258846,"door_coords":{"x":1812.306640625,"y":3672.724365234375,"z":34.28223037719726}}],"door_name":"Interrogation","state":true,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":13,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Sandy PD","door_data":[{"unique_id":"W4O6nsGPKZvC0mbv4l-UG","model_hash":-1264811159,"text_dimensions":1.20805097258846,"door_coords":{"x":1814.195068359375,"y":3669.453369140625,"z":34.28223037719726}}],"door_name":"Observation","state":true,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":14,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Sandy PD","door_data":[{"unique_id":"qKtFxHCVmvhvzraILqK30","model_hash":1364638935,"text_dimensions":1.20805097258846,"door_coords":{"x":1818.31689453125,"y":3669.27783203125,"z":34.28223037719726}}],"door_name":"Mugshot","state":true,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":15,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Sandy PD","door_data":[{"unique_id":"Vti2uL8q9NumxFFb5VocX","model_hash":-1264811159,"text_dimensions":1.20805097258846,"door_coords":{"x":1828.52734375,"y":3680.228759765625,"z":38.95244979858398}}],"door_name":"Archive","state":false,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":16,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Sandy PD","door_data":[{"unique_id":"SnskF39VORc_jKSkFiGxS","model_hash":-1626613696,"text_dimensions":1.29310336709022,"door_coords":{"x":1831.2298583984376,"y":3675.428466796875,"z":38.95244979858398}}],"door_name":"Deputy","state":true,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":17,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Sandy PD","door_data":[{"unique_id":"A4q1qjoPDmness4cjO3zQ","model_hash":-1626613696,"text_dimensions":1.29310336709022,"door_coords":{"x":1828.4293212890626,"y":3673.811767578125,"z":38.95244979858398}}],"door_name":"Sheriff","state":true,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":18,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Sandy PD","door_data":[{"unique_id":"rSpo8nQWN2N7HJ4NH5xQK","model_hash":-1264811159,"text_dimensions":1.20805097258846,"door_coords":{"x":1830.650146484375,"y":3676.562255859375,"z":34.28223037719726}}],"door_name":"Employees","state":false,"secret":false,"door_sound":"_notification.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":19,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Sandy PD","door_data":[{"unique_id":"9JP6uI3NoM9bwzJ7_T63V","model_hash":1286535678,"text_dimensions":7.56022737920284,"door_coords":{"x":1862.00341796875,"y":3687.523681640625,"z":33.01415252685547}}],"door_name":"Gate","state":true,"secret":false,"door_sound":"_key_press.ogg","door_type":"gates","lockpickable":false,"default_state":true,"distance":10},{"id":20,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Sandy PD","door_data":[{"unique_id":"b6bHLWBHHSZtZvX7quZeh","model_hash":-1156020871,"text_dimensions":1.71312944777309,"door_coords":{"x":1845.406982421875,"y":3677.485107421875,"z":34.6119499206543}}],"door_name":"Parking","state":true,"secret":false,"door_sound":"_key_press.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/suburban_greatoceanhighway.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/suburban_greatoceanhighway.json
new file mode 100644
index 000000000..cf8a40a84
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/suburban_greatoceanhighway.json
@@ -0,0 +1 @@
+{"name":"suburban_greatoceanhighway.json","imported":false,"data":[{"id":4,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Suburban Great Ocean Highway","door_data":[{"unique_id":"e8VzFWrJjF9Xgf3SZNKXq","model_hash":1780022985,"text_dimensions":1.67617720365524,"door_coords":{"x":-3167.73193359375,"y":1055.5831298828126,"z":21.53314208984375}}],"door_name":"Enterance","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/suburban_hawickave.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/suburban_hawickave.json
new file mode 100644
index 000000000..0d1481693
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/suburban_hawickave.json
@@ -0,0 +1 @@
+{"name":"suburban_hawickave.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Suburban Hawick Ave","door_data":[{"unique_id":"8eEcfA9U-jNiAx9_cijmm","model_hash":1780022985,"text_dimensions":1.67617720365524,"door_coords":{"x":127.83503723144533,"y":-211.77786254882813,"z":55.22748184204101}}],"door_name":"Enterance","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/suburban_prosperitystreet.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/suburban_prosperitystreet.json
new file mode 100644
index 000000000..5294d5a6a
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/suburban_prosperitystreet.json
@@ -0,0 +1 @@
+{"name":"suburban_prosperitystreet.json","imported":false,"data":[{"id":3,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Suburban Prosperity Street","door_data":[{"unique_id":"pcGfumK-sjwUheWerMC_H","model_hash":1780022985,"text_dimensions":1.67617720365524,"door_coords":{"x":-1201.474853515625,"y":-776.8890991210938,"z":17.99211120605468}}],"door_name":"Enterance","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/suburban_route68.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/suburban_route68.json
new file mode 100644
index 000000000..d0ae6276d
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/suburban_route68.json
@@ -0,0 +1 @@
+{"name":"suburban_route68.json","imported":false,"data":[{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Suburban Route 68","door_data":[{"unique_id":"_q0fshpRlMnaInb0SJtWw","model_hash":1780022985,"text_dimensions":1.67617720365524,"door_coords":{"x":617.2521362304688,"y":2750.972412109375,"z":42.75804138183594}}],"door_name":"Enterance","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_chumash.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_chumash.json
new file mode 100644
index 000000000..ecd4b8df5
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_chumash.json
@@ -0,0 +1 @@
+{"name":"tattoo_chumash.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Tattoo Chumash","door_data":[{"unique_id":"frzGVbOZqHMKCZxpC-Oko","model_hash":543652229,"text_dimensions":-1.30098725110292,"door_coords":{"x":-3167.78369140625,"y":1074.8648681640626,"z":20.94142913818359}}],"door_name":"Entrance","camera":false,"state":false,"secret":false,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Tattoo Chumash","door_data":[{"unique_id":"ar22MvXAVMhlMXXEaTme-","model_hash":1243635233,"text_dimensions":-1.30148995254421,"door_coords":{"x":-3173.27490234375,"y":1076.7779541015626,"z":20.99953460693359}}],"door_name":"Office","camera":false,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_el_burro.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_el_burro.json
new file mode 100644
index 000000000..92311960b
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_el_burro.json
@@ -0,0 +1,5 @@
+{
+ "imported": false,
+ "data": [{"state":false,"door_sound":"door_wooden.ogg","default_state":false,"camera":false,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"lockpickable":false,"id":1,"door_type":"single","door_data":[{"model_hash":543652229,"unique_id":"gHa0rHROMp0wgMZeJfadf","text_dimensions":-1.30098725110292,"door_coords":{"x":1321.281982421875,"y":-1650.59228515625,"z":52.38686370849609}}],"location_group":"Tattoo El Burro","distance":2,"secret":false,"door_name":"Entrance"},{"state":true,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"default_state":true,"door_name":"Office","door_type":"single","lockpickable":false,"id":2,"secret":false,"door_data":[{"model_hash":1243635233,"unique_id":"Q-aq5dkrNGn6ZAUs97r5Q","door_coords":{"x":1325.27880859375,"y":-1654.8157958984376,"z":52.44652938842773},"text_dimensions":-1.30148995254421}],"camera":false,"distance":2,"location_group":"Tattoo El Burro","door_sound":"door_metal.ogg"}],
+ "name": "tattoo_el_burro.json"
+}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_paleto.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_paleto.json
new file mode 100644
index 000000000..fed643fff
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_paleto.json
@@ -0,0 +1 @@
+{"name":"tattoo_paleto.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Tattoo Paleto","door_data":[{"unique_id":"zgKzztrckwYX3bg3Cm5_u","model_hash":1212467128,"text_dimensions":-1.30108321458101,"door_coords":{"x":-289.2171325683594,"y":6199.0751953125,"z":31.59542274475097}}],"door_name":"Entrance","default_state":false,"state":false,"camera":false,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Tattoo Paleto","door_data":[{"unique_id":"4PGHIWhPFMDOvXNh4xH9z","model_hash":1243635233,"text_dimensions":-1.30148995254421,"door_coords":{"x":-295.4470825195313,"y":6197.20703125,"z":31.65352821350097}}],"door_name":"Office","default_state":true,"state":true,"camera":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_sandy.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_sandy.json
new file mode 100644
index 000000000..0679e158d
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_sandy.json
@@ -0,0 +1 @@
+{"name":"tattoo_sandy.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Tattoo Sandy","door_data":[{"unique_id":"cIgZISOWaj5txNopoog6g","model_hash":1212467128,"text_dimensions":-1.30108321458101,"door_coords":{"x":1859.943603515625,"y":3749.811279296875,"z":33.14018249511719}}],"door_name":"Entrance","secret":false,"state":false,"default_state":false,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Tattoo Sandy","door_data":[{"unique_id":"AgtWcaknHz1DkhyFxaBu7","model_hash":1243635233,"text_dimensions":-1.30148995254421,"door_coords":{"x":1866.44384765625,"y":3750.034423828125,"z":33.19828796386719}}],"door_name":"Office","secret":false,"state":true,"default_state":true,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_vespucci.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_vespucci.json
new file mode 100644
index 000000000..9a0041609
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_vespucci.json
@@ -0,0 +1 @@
+{"name":"tattoo_vespucci.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Tattoo Vespucci","door_data":[{"model_hash":543652229,"unique_id":"gNWRRpTSvXW0-VBsHPtPf","text_dimensions":-1.30098725110292,"door_coords":{"x":-1155.457275390625,"y":-1424.003173828125,"z":5.06672286987304}}],"door_name":"Entrance","camera":false,"state":false,"default_state":false,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Tattoo Vespucci","door_data":[{"model_hash":1243635233,"unique_id":"04z1peXJDfxD6-IlsMfDi","text_dimensions":-1.30148995254421,"door_coords":{"x":-1151.772705078125,"y":-1428.5015869140626,"z":5.1248288154602}}],"door_name":"Office","camera":false,"state":true,"default_state":true,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_vinewood.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_vinewood.json
new file mode 100644
index 000000000..b19fdb7fc
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tattoo_vinewood.json
@@ -0,0 +1 @@
+{"name":"tattoo_vinewood.json","imported":false,"data":[{"id":1,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Tattoo Vinewood","door_data":[{"unique_id":"pMObyb14N35xVlweBtbM6","model_hash":543652229,"text_dimensions":-1.30098725110292,"door_coords":{"x":321.80633544921877,"y":178.3543701171875,"z":103.69883728027344}}],"door_name":"Entrance","default_state":false,"state":false,"secret":false,"door_sound":"door_wooden.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":2,"perms":{"job":[{"grade":0,"name":"police"}],"identifier":[]},"location_group":"Tattoo Vinewood","door_data":[{"unique_id":"DLAREi673Uvkhlh1ISMi3","model_hash":1243635233,"text_dimensions":-1.30148995254421,"door_coords":{"x":323.3778991699219,"y":183.9528045654297,"z":103.75694274902344}}],"door_name":"Office","default_state":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/town_hall.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/town_hall.json
new file mode 100644
index 000000000..99ca21a09
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/town_hall.json
@@ -0,0 +1 @@
+{"name":"town_hall.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Town Hall","door_data":[{"model_hash":-1094765077,"unique_id":"bRGbABo28OZCY1kxJmyUa","text_dimensions":-1.13230021926422,"door_coords":{"x":-546.5196533203125,"y":-203.91189575195313,"z":38.42063903808594}},{"model_hash":660342567,"unique_id":"knaYM4w8SulyOz2eeN8PB","text_dimensions":-1.13230021926422,"door_coords":{"x":-544.558349609375,"y":-202.7798309326172,"z":38.42063903808594}}],"door_name":"Entrance","secret":false,"state":false,"default_state":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Town Hall","door_data":[{"model_hash":-1940023190,"unique_id":"fpQyFVYnpO0kTdy2qDTkB","text_dimensions":-0.652408292621,"door_coords":{"x":-544.13818359375,"y":-190.68182373046876,"z":38.43664169311523}},{"model_hash":-1940023190,"unique_id":"_hbDEdLxDXixaZNaeqsHE","text_dimensions":-0.652408292621,"door_coords":{"x":-543.488525390625,"y":-191.8074493408203,"z":38.43664169311523}}],"door_name":"Hallway","secret":false,"state":true,"default_state":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":3,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Town Hall","door_data":[{"model_hash":-1940023190,"unique_id":"omu5es6kZ2SRuVu85cJvJ","text_dimensions":-0.652408292621,"door_coords":{"x":-556.5889282226563,"y":-199.36883544921876,"z":38.43664169311523}},{"model_hash":-1940023190,"unique_id":"NN5xjne7eu-ow93KiogGe","text_dimensions":-0.652408292621,"door_coords":{"x":-557.2386474609375,"y":-198.2432098388672,"z":38.43664169311523}}],"door_name":"Court Room","secret":false,"state":false,"default_state":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":4,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Town Hall","door_data":[{"model_hash":-1940023190,"unique_id":"hqReLZ_5tFqOKTruZH5V9","text_dimensions":-0.652408292621,"door_coords":{"x":-562.1282958984375,"y":-202.56610107421876,"z":38.43664169311523}},{"model_hash":-1940023190,"unique_id":"xebf5MEjfP5MOrTsoQXqy","text_dimensions":-0.652408292621,"door_coords":{"x":-562.7779541015625,"y":-201.4404754638672,"z":38.43664169311523}}],"door_name":"Court Room Hallway","secret":false,"state":false,"default_state":false,"door_sound":"door_wooden.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":5,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Town Hall","door_data":[{"model_hash":-1550341477,"unique_id":"_eOiPDsioD0NTe4dr3mbd","text_dimensions":-0.92899290751665,"door_coords":{"x":-568.5460815429688,"y":-206.5823211669922,"z":37.89135360717773}},{"model_hash":-1550341477,"unique_id":"UyntlCdNtmjQjINpVUl7K","text_dimensions":-0.92899290751665,"door_coords":{"x":-569.4658813476563,"y":-204.98873901367188,"z":37.89135360717773}}],"door_name":"Court Room Speakers","secret":false,"state":false,"default_state":false,"door_sound":"door_squeak.ogg","door_type":"double","lockpickable":false,"camera":false,"distance":2},{"id":6,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Town Hall","door_data":[{"model_hash":1762042010,"unique_id":"YDcK5Cq4SPIxayaQQUpmH","text_dimensions":-1.3126700924469,"door_coords":{"x":-577.2459106445313,"y":-216.6084136962891,"z":38.32498550415039}}],"door_name":"Jury Room","secret":false,"state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":7,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Town Hall","door_data":[{"model_hash":1762042010,"unique_id":"EP3wIswEbbY-o7LJ536Ca","text_dimensions":-1.3126700924469,"door_coords":{"x":-582.504150390625,"y":-207.498291015625,"z":38.32498550415039}}],"door_name":"Judge Room","secret":false,"state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":8,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Town Hall","door_data":[{"model_hash":1762042010,"unique_id":"Ss--8spYriSA1kIUp73Md","text_dimensions":-1.3126700924469,"door_coords":{"x":-574.5857543945313,"y":-216.9340057373047,"z":38.32498550415039}}],"door_name":"Court Room Hallway 2","secret":false,"state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":9,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Town Hall","door_data":[{"model_hash":1762042010,"unique_id":"YeXxaq-D_hLmBD3vFVUSi","text_dimensions":-1.3126700924469,"door_coords":{"x":-562.6888427734375,"y":-231.6888427734375,"z":34.37224197387695}}],"door_name":"Cell Room","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":10,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Town Hall","door_data":[{"model_hash":918828907,"unique_id":"qY9jq2MAeMXU2xYxhEo3W","text_dimensions":-1.7736747264862,"door_coords":{"x":-557.944091796875,"y":-233.11065673828129,"z":34.47710418701172}}],"door_name":"Cell 1","secret":false,"state":true,"default_state":true,"door_sound":"","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":11,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Town Hall","door_data":[{"model_hash":918828907,"unique_id":"kZwF2vmuw5eMuvlExYNEt","text_dimensions":-1.7736747264862,"door_coords":{"x":-560.5423583984375,"y":-234.61032104492188,"z":34.47710418701172}}],"door_name":"Cell 2","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":12,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Town Hall","door_data":[{"model_hash":297112647,"unique_id":"8yrnltR8jHj8jsHxthTLE","text_dimensions":-1.06310506714446,"door_coords":{"x":-567.4882202148438,"y":-236.2653350830078,"z":34.35750198364258}},{"model_hash":830788581,"unique_id":"Qs7YfHwFA0IYhkinAmFZl","text_dimensions":-1.06310504714446,"door_coords":{"x":-568.5510864257813,"y":-234.4238739013672,"z":34.35750198364258}}],"door_name":"Side Entrance","secret":false,"state":true,"default_state":true,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":13,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Town Hall","door_data":[{"model_hash":1762042010,"unique_id":"Sv5iscoWqKZnoa1apAUN3","text_dimensions":-1.3126700924469,"door_coords":{"x":-541.0228881835938,"y":-192.2024078369141,"z":38.33399963378906}}],"door_name":"Office 1","secret":false,"state":false,"default_state":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":14,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Town Hall","door_data":[{"model_hash":1762042010,"unique_id":"wtqLRKUcjU6Me9J-fwSga","text_dimensions":-1.3126700924469,"door_coords":{"x":-536.199951171875,"y":-189.41868591308598,"z":38.33399963378906}}],"door_name":"Office 2","secret":false,"state":false,"default_state":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":15,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Town Hall","door_data":[{"model_hash":1762042010,"unique_id":"c3Js9W5NMQ0xxmYcahXB6","text_dimensions":-1.3126700924469,"door_coords":{"x":-531.3375854492188,"y":-186.61221313476566,"z":38.33399963378906}}],"door_name":"Office 3","secret":false,"state":false,"default_state":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":16,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Town Hall","door_data":[{"model_hash":1762042010,"unique_id":"2hrgB40DGVjviwIYorqxe","text_dimensions":-1.3126700924469,"door_coords":{"x":-532.4227294921875,"y":-182.13291931152345,"z":38.33399963378906}}],"door_name":"Voting Room 2","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":17,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Town Hall","door_data":[{"model_hash":1762042010,"unique_id":"2h3Va_dvwXhwmwl1AXG3p","text_dimensions":-1.3126700924469,"door_coords":{"x":-538.4104614257813,"y":-185.5889434814453,"z":38.33399963378906}}],"door_name":"Voting Room 1","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":18,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Town Hall","door_data":[{"model_hash":1762042010,"unique_id":"uu5k3cO2wx2nZf_EikjCb","text_dimensions":-1.3126700924469,"door_coords":{"x":-541.0101318359375,"y":-192.1979522705078,"z":43.46984100341797}}],"door_name":"Office 4","secret":false,"state":false,"default_state":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":19,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Town Hall","door_data":[{"model_hash":1762042010,"unique_id":"qovWjjOj7KyMT0sb1ec27","text_dimensions":-1.3126700924469,"door_coords":{"x":-536.187255859375,"y":-189.4142303466797,"z":43.46984100341797}}],"door_name":"Mayor Office","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":20,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Town Hall","door_data":[{"model_hash":1762042010,"unique_id":"358LhZrzOk6qQHzxVz1RI","text_dimensions":-1.3126700924469,"door_coords":{"x":-538.3983764648438,"y":-185.5833740234375,"z":43.46984100341797}}],"door_name":"Meeting Room","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":21,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Town Hall","door_data":[{"model_hash":-1940023190,"unique_id":"1ooZutMY_xdZ7ajKIvKNp","text_dimensions":-0.652408292621,"door_coords":{"x":-562.7752685546875,"y":-201.4389190673828,"z":43.57549667358398}},{"model_hash":-1940023190,"unique_id":"5OsK16WFsJdZ96bJJQSD0","text_dimensions":-0.652408292621,"door_coords":{"x":-562.1256103515625,"y":-202.5645446777344,"z":43.57549667358398}}],"door_name":"Balcony","camera":false,"state":false,"default_state":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"secret":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/triad_records.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/triad_records.json
new file mode 100644
index 000000000..9c166f9d4
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/triad_records.json
@@ -0,0 +1 @@
+{"name":"triad_records.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Triad Records","door_data":[{"model_hash":2001816392,"unique_id":"dF4oJVo9zwq65se0Zcb6N","text_dimensions":-1.10236427700147,"door_coords":{"x":-826.4025268554688,"y":-698.747802734375,"z":28.49082565307617}},{"model_hash":2001816392,"unique_id":"Zi6k2JkHQCv7M1W6aVdQq","text_dimensions":-1.10236427700147,"door_coords":{"x":-826.4025268554688,"y":-700.9301147460938,"z":28.49082565307617}}],"door_name":"Entrance 2","default_state":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Triad Records","door_data":[{"model_hash":2001816392,"unique_id":"gxESb0ZraQo00C5UbXw5h","text_dimensions":-1.10236427700147,"door_coords":{"x":-826.4025268554688,"y":-697.994384765625,"z":28.49082565307617}},{"model_hash":2001816392,"unique_id":"9vk8daxYHGN-_rzrUNOy3","text_dimensions":-1.10236427700147,"door_coords":{"x":-826.4025268554688,"y":-695.8147583007813,"z":28.49082565307617}}],"door_name":"Entrance 1","default_state":true,"state":false,"secret":false,"door_sound":"door_metal.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":3,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Triad Records","door_data":[{"model_hash":693644064,"unique_id":"PthvWvZfllZwV6ku1raxD","text_dimensions":1.29968102825744,"door_coords":{"x":-816.6038208007813,"y":-694.3998413085938,"z":28.20559692382812}}],"door_name":"Staff Room 1","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":4,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Triad Records","door_data":[{"model_hash":693644064,"unique_id":"RCIB0tY22ELFLVXIAh70y","text_dimensions":1.29968102825744,"door_coords":{"x":-816.6038208007813,"y":-702.3438110351563,"z":28.20559692382812}}],"door_name":"Staff Room 1","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":5,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Triad Records","door_data":[{"model_hash":1403720845,"unique_id":"-ku1BxKUr-ZoLT76zbJOx","text_dimensions":-1.00120111359222,"door_coords":{"x":-820.3126220703125,"y":-703.1263427734375,"z":28.20559692382812}},{"model_hash":75593271,"unique_id":"Ap1XyNMKTGI-CweJtt5Ng","text_dimensions":1.00120111359222,"door_coords":{"x":-822.3142700195313,"y":-703.1263427734375,"z":28.20559692382812}}],"door_name":"Hallway","default_state":true,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":6,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Triad Records","door_data":[{"model_hash":75593271,"unique_id":"-gO-XcuaSTkEfe_fOa3fl","text_dimensions":1.00120111359222,"door_coords":{"x":-822.3142700195313,"y":-715.6939697265625,"z":28.20559692382812}},{"model_hash":1403720845,"unique_id":"Q5-YOOuREsEmESRcc9r0C","text_dimensions":-1.00120111359222,"door_coords":{"x":-820.3126220703125,"y":-715.6939697265625,"z":28.20559692382812}}],"door_name":"Hallway 2","default_state":true,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":7,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Triad Records","door_data":[{"model_hash":693644064,"unique_id":"uAj3kH_KzPQmk85I_QnC9","text_dimensions":1.29968102825744,"door_coords":{"x":-819.4990844726563,"y":-711.9124145507813,"z":28.20559692382812}}],"door_name":"Staircase","default_state":true,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":8,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Triad Records","door_data":[{"model_hash":693644064,"unique_id":"AzGkyP1NwoA1g9UXuSLJE","text_dimensions":1.29968102825744,"door_coords":{"x":-819.4990844726563,"y":-719.3162841796875,"z":28.20559692382812}}],"door_name":"Cloakroom","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":9,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Triad Records","door_data":[{"model_hash":693644064,"unique_id":"Rt74IYHQyKga_ybaAyy5a","text_dimensions":1.29968102825744,"door_coords":{"x":-819.4990844726563,"y":-728.5466918945313,"z":28.20559692382812}}],"door_name":"Restroom","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2},{"id":10,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Triad Records","door_data":[{"model_hash":693644064,"unique_id":"49_gHtSsH28n1HMnQJqml","text_dimensions":1.29968102825744,"door_coords":{"x":-819.4990844726563,"y":-711.9124145507813,"z":23.92465019226074}}],"door_name":"Downstairs Hallway","default_state":true,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":11,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Triad Records","door_data":[{"model_hash":-700626879,"unique_id":"La37i0DWu3EbaovY8aZ7I","text_dimensions":0,"door_coords":{"x":-816.2236328125,"y":-740.062255859375,"z":24.9803295135498}}],"door_name":"Warehouse Garage","default_state":true,"state":true,"secret":false,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"camera":true,"distance":10},{"id":12,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Triad Records","door_data":[{"model_hash":-2023754432,"unique_id":"OeBBZ6oEUL_579zzg7nQh","text_dimensions":1.3113248348236,"door_coords":{"x":-819.0726928710938,"y":-721.4121704101563,"z":23.93993949890136}}],"door_name":"Warehouse Office","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":13,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Triad Records","door_data":[{"model_hash":-2023754432,"unique_id":"z4wkgjrbyGUelsIyRvqjX","text_dimensions":1.3113248348236,"door_coords":{"x":-820.6585083007813,"y":-715.6948852539063,"z":23.93993949890136}}],"door_name":"Warehouse Entrance","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":14,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Triad Records","door_data":[{"model_hash":-2023754432,"unique_id":"2NgoJXSQJbE6JL0-4rGtk","text_dimensions":1.3113248348236,"door_coords":{"x":-823.14306640625,"y":-711.9124145507813,"z":23.92465019226074}}],"door_name":"Lab","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":15,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Triad Records","door_data":[{"model_hash":693644064,"unique_id":"IbHa9udrbjzFa3-MDC56l","text_dimensions":1.29968102825744,"door_coords":{"x":-819.4990844726563,"y":-711.9124145507813,"z":32.48664855957031}}],"door_name":"Upstairs Hallway","default_state":true,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":16,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Triad Records","door_data":[{"model_hash":75593271,"unique_id":"FsIB3Maz0-olWMBEj8ZTL","text_dimensions":1.00120111359222,"door_coords":{"x":-823.1449584960938,"y":-710.4473266601563,"z":32.48659896850586}},{"model_hash":1403720845,"unique_id":"7h7Kd9PL04Z2XXi4h1cs8","text_dimensions":-1.00120111359222,"door_coords":{"x":-823.1449584960938,"y":-708.4456787109375,"z":32.48659896850586}}],"door_name":"Meeting Room","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":17,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Triad Records","door_data":[{"model_hash":693644064,"unique_id":"pfs4Rht1viVwB-BqzMQa0","text_dimensions":1.29968102825744,"door_coords":{"x":-822.0344848632813,"y":-715.693359375,"z":32.48664855957031}}],"door_name":"Studio","default_state":true,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":18,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Triad Records","door_data":[{"model_hash":693644064,"unique_id":"a-8aI-GKJ3A_ySwLoysRZ","text_dimensions":1.29968102825744,"door_coords":{"x":-822.0344848632813,"y":-703.1275634765625,"z":32.48664855957031}}],"door_name":"CEO","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":19,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Triad Records","door_data":[{"model_hash":390840000,"unique_id":"vSU2ZBPGXrCvOBFF-EbjV","text_dimensions":1.30108694894408,"door_coords":{"x":-818.737060546875,"y":-724.0592041015625,"z":32.52227401733398}}],"door_name":"Recording Room","default_state":false,"state":false,"secret":false,"door_sound":"door_click.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/triads.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/triads.json
new file mode 100644
index 000000000..4d1d1fb94
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/triads.json
@@ -0,0 +1 @@
+{"name":"triads.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"triads","grade":0}],"identifier":[]},"location_group":"Triads","door_data":[{"model_hash":-636132164,"unique_id":"WjbRlw-DPsf1WkNhk4VeC","text_dimensions":-1.24122721075409,"door_coords":{"x":-637.3693237304688,"y":-1249.239990234375,"z":11.94555854797363}},{"model_hash":1215119726,"unique_id":"5ky06pPI7P7DZG8SCdiAA","text_dimensions":-1.24122721075409,"door_coords":{"x":-639.8295288085938,"y":-1248.908203125,"z":11.94555854797363}}],"door_name":"Entrance","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":2,"perms":{"job":[{"name":"triads","grade":0}],"identifier":[]},"location_group":"Triads","door_data":[{"model_hash":-636132164,"unique_id":"vH3yzgkCxoMQqQT-EEDDj","text_dimensions":-1.24122721075409,"door_coords":{"x":-644.4833374023438,"y":-1227.172607421875,"z":11.68207931518554}},{"model_hash":1215119726,"unique_id":"rGm_ss9e8c197PEhuTT_A","text_dimensions":-1.24122721075409,"door_coords":{"x":-643.1560668945313,"y":-1229.2705078125,"z":11.68207931518554}}],"door_name":"Rear Entrance","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":3,"perms":{"job":[{"name":"triads","grade":0}],"identifier":[]},"location_group":"Triads","door_data":[{"model_hash":-932312205,"unique_id":"2m1aNvh8AnhYd_25oWJQ5","text_dimensions":-0.92723370598388,"door_coords":{"x":-644.3853149414063,"y":-1234.34765625,"z":10.5670747756958}},{"model_hash":-932312205,"unique_id":"ybWZVggWYSjtcmPAvMHsy","text_dimensions":-0.92723370598388,"door_coords":{"x":-643.3903198242188,"y":-1235.9173583984376,"z":10.5670747756958}}],"door_name":"Main Room","secret":false,"state":false,"default_state":true,"door_sound":"door_regular.ogg","door_type":"double","lockpickable":false,"camera":true,"distance":2},{"id":4,"perms":{"job":[{"name":"triads","grade":0}],"identifier":[]},"location_group":"Triads","door_data":[{"model_hash":-1592535808,"unique_id":"u_p0968VOCtA5zUqusx_u","text_dimensions":-1.26961718147919,"door_coords":{"x":-650.9556274414063,"y":-1233.1766357421876,"z":11.74860000610351}}],"door_name":"Planning Room","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":5,"perms":{"job":[{"name":"triads","grade":0}],"identifier":[]},"location_group":"Triads","door_data":[{"model_hash":-1592535808,"unique_id":"9TX9cJrM2SyeThshduwO5","text_dimensions":-1.26961718147919,"door_coords":{"x":-649.8510131835938,"y":-1242.966064453125,"z":11.74860000610351}}],"door_name":"Office","secret":false,"state":true,"default_state":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":6,"perms":{"job":[{"name":"triads","grade":0}],"identifier":[]},"location_group":"Triads","door_data":[{"model_hash":-1592535808,"unique_id":"XSRftFx70fXmlUF5hOQuL","text_dimensions":-1.26961718147919,"door_coords":{"x":-642.6424560546875,"y":-1238.4056396484376,"z":11.74860000610351}}],"door_name":"Toilet","secret":false,"state":false,"default_state":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tuner_shop.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tuner_shop.json
new file mode 100644
index 000000000..527ba4c22
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/tuner_shop.json
@@ -0,0 +1 @@
+{"name":"tuner_shop.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"Tuner Shop","door_data":[{"model_hash":-456733639,"unique_id":"Av94MNAhXvBkQ2nu5IlBy","text_dimensions":0,"door_coords":{"x":153.4243621826172,"y":-3023.88916015625,"z":10.93132209777832}}],"door_name":"Garage Door 1","camera":true,"state":true,"secret":false,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"default_state":true,"distance":10},{"id":2,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"Tuner Shop","door_data":[{"model_hash":-456733639,"unique_id":"ozF4pU2TVR0ZXEikDYMT1","text_dimensions":0,"door_coords":{"x":153.4248809814453,"y":-3034.05126953125,"z":10.93116474151611}}],"door_name":"Garage Door 2","camera":true,"state":true,"secret":false,"door_sound":"door_switch.ogg","door_type":"garage","lockpickable":false,"default_state":true,"distance":10},{"id":3,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"Tuner Shop","door_data":[{"model_hash":-2023754432,"unique_id":"aNGEJhjj2eKLGJpTZMibf","text_dimensions":1.3113248348236,"door_coords":{"x":154.93446350097657,"y":-3017.322998046875,"z":7.19067859649658}}],"door_name":"Entrance","camera":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":4,"perms":{"job":[{"name":"mechanic","grade":0}],"identifier":[]},"location_group":"Tuner Shop","door_data":[{"model_hash":-1229046235,"unique_id":"Jd0vvgnSd26jdLBf4zRHZ","text_dimensions":-1.3065949678421,"door_coords":{"x":151.466796875,"y":-3011.705078125,"z":7.25836658477783}}],"door_name":"Lockers","camera":true,"state":true,"secret":false,"door_sound":"door_metal.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/uwu_cafe.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/uwu_cafe.json
new file mode 100644
index 000000000..d52807772
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/uwu_cafe.json
@@ -0,0 +1,5 @@
+{
+ "imported": false,
+ "data": [{"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"id":1,"location_group":"UwU Cafe","distance":2,"door_name":"Front Doors","camera":false,"door_data":[{"unique_id":"pWrF4QBZMeNIuWkIAniif","model_hash":-69331849,"door_coords":{"y":-1069.627197265625,"z":22.48974800109863,"x":-580.361083984375},"text_dimensions":-0.7333447933197},{"unique_id":"90teAuBWOmjORWBbBrRWB","model_hash":526179188,"door_coords":{"y":-1069.627197265625,"z":22.48974800109863,"x":-581.6677856445313},"text_dimensions":0.7333447933197}],"default_state":true,"secret":false,"door_sound":"door_regular.ogg","lockpickable":false,"door_type":"double","state":true},{"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"id":2,"location_group":"UwU Cafe","distance":2,"door_name":"Locker Room","camera":false,"door_data":[{"unique_id":"kK6pztKrOckSihtPnSLom","model_hash":-1283712428,"door_coords":{"y":-1051.8994140625,"z":22.41300582885742,"x":-587.3400268554688},"text_dimensions":-1.38800004869699}],"default_state":true,"secret":false,"door_sound":"door_regular.ogg","lockpickable":false,"door_type":"single","state":true},{"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"id":3,"location_group":"UwU Cafe","distance":2,"door_name":"Kitchen","camera":false,"door_data":[{"unique_id":"xGSVBgCGthnd0Ki3tIO2g","model_hash":-60871655,"door_coords":{"y":-1054.14794921875,"z":22.41300582885742,"x":-590.1828002929688},"text_dimensions":-1.38800004869699}],"default_state":true,"secret":false,"door_sound":"door_regular.ogg","lockpickable":false,"door_type":"single","state":true},{"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"id":4,"location_group":"UwU Cafe","distance":2,"door_name":"Warhouse Door","camera":false,"door_data":[{"unique_id":"pwdJVcRRv0mh40ARzk6qn","model_hash":-60871655,"door_coords":{"y":-1056.09130859375,"z":22.41300582885742,"x":-592.4738159179688},"text_dimensions":-1.38800004869699}],"default_state":true,"secret":false,"door_sound":"door_regular.ogg","lockpickable":false,"door_type":"single","state":true},{"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"id":5,"location_group":"UwU Cafe","distance":2,"door_name":"Office","camera":false,"door_data":[{"unique_id":"ZDmOxPGBxZP2ePC5rB3z3","model_hash":2089009131,"door_coords":{"y":-1049.7686767578126,"z":22.49712753295898,"x":-594.4122924804688},"text_dimensions":-1.31781597249209}],"default_state":true,"secret":false,"door_sound":"door_regular.ogg","lockpickable":false,"door_type":"single","state":true},{"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"id":6,"location_group":"UwU Cafe","distance":2,"door_name":"Garage Door","camera":false,"door_data":[{"unique_id":"zpjHUiTaUb_6OXUZ4IshG","model_hash":522844070,"door_coords":{"y":-1059.2176513671876,"z":21.72342109680175,"x":-600.9105834960938},"text_dimensions":0}],"default_state":true,"secret":false,"door_sound":"door_metal.ogg","lockpickable":false,"door_type":"garage","state":true},{"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"id":7,"location_group":"UwU Cafe","distance":2,"door_name":"Fire Exit","camera":false,"door_data":[{"unique_id":"3zYsxNEIr6zOUxGNjHtTM","model_hash":1099436502,"door_coords":{"y":-1055.1314697265626,"z":22.71302795410156,"x":-600.8886108398438},"text_dimensions":1.30020797584438}],"default_state":true,"secret":false,"door_sound":"door_regular.ogg","lockpickable":false,"door_type":"single","state":true}],
+ "name": "uwu_cafe.json"
+}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/vagos.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/vagos.json
new file mode 100644
index 000000000..f7a56410a
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/vagos.json
@@ -0,0 +1 @@
+{"name":"vagos.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"vagos","grade":0}],"identifier":[]},"location_group":"Vagos","door_data":[{"unique_id":"5GDbcxr9Hru_nBX9HAoyD","model_hash":2118614536,"text_dimensions":-1.312224984169,"door_coords":{"x":324.7153015136719,"y":-1991.085693359375,"z":24.36291313171386}}],"door_name":"Entrance","secret":false,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":2,"perms":{"job":[{"name":"vagos","grade":0}],"identifier":[]},"location_group":"Vagos","door_data":[{"unique_id":"nLAZ_GfJUwA72kbGPb8kb","model_hash":1763005348,"text_dimensions":-1.28941302756246,"door_coords":{"x":325.7207946777344,"y":-1992.8177490234376,"z":24.35715103149414}}],"door_name":"Planning Room","secret":false,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":3,"perms":{"job":[{"name":"vagos","grade":0}],"identifier":[]},"location_group":"Vagos","door_data":[{"unique_id":"SYOepAxdw-wby90qk_UOg","model_hash":2118614536,"text_dimensions":-1.312224984169,"door_coords":{"x":336.7447814941406,"y":-1991.843505859375,"z":24.36291313171386}}],"door_name":"Rear Entrance","secret":false,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":4,"perms":{"job":[{"name":"vagos","grade":0}],"identifier":[]},"location_group":"Vagos","door_data":[{"unique_id":"IomiJC9PBDIkDSfzmWje7","model_hash":1763005348,"text_dimensions":-1.28941302756246,"door_coords":{"x":334.6651611328125,"y":-1990.0810546875,"z":24.35715103149414}}],"door_name":"Hallway","secret":false,"state":false,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2},{"id":5,"perms":{"job":[{"name":"vagos","grade":0}],"identifier":[]},"location_group":"Vagos","door_data":[{"unique_id":"LX7-f-FW3oU30nqK0yidY","model_hash":1763005348,"text_dimensions":-1.28941302756246,"door_coords":{"x":335.9012451171875,"y":-1984.5367431640626,"z":24.35715103149414}}],"door_name":"Office","secret":false,"state":true,"camera":true,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":true,"distance":2},{"id":6,"perms":{"job":[{"name":"vagos","grade":0}],"identifier":[]},"location_group":"Vagos","door_data":[{"unique_id":"35je0dP-oU5_6ssTVzG-e","model_hash":1763005348,"text_dimensions":-1.28941302756246,"door_coords":{"x":336.7800903320313,"y":-1985.274169921875,"z":24.35715103149414}}],"door_name":"Toilet","secret":false,"state":false,"camera":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"default_state":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/vanilla_unicorn.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/vanilla_unicorn.json
new file mode 100644
index 000000000..abe4b4645
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/vanilla_unicorn.json
@@ -0,0 +1 @@
+{"name":"vanilla_unicorn.json","imported":false,"data":[{"id":1,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Vanilla Unicorn","door_data":[{"unique_id":"RjO6ppBeb2AdGhQGqLYhX","model_hash":-1116041313,"text_dimensions":1.29986200378334,"door_coords":{"x":127.95006561279296,"y":-1298.506591796875,"z":29.41962242126465}}],"door_name":"Entrance","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":2,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Vanilla Unicorn","door_data":[{"unique_id":"00On8_GzoFv3ucbwFTFzm","model_hash":1695461688,"text_dimensions":1.30109897474176,"door_coords":{"x":128.07080078125,"y":-1279.3466796875,"z":29.43696784973144}}],"door_name":"DJ Booth","default_state":true,"state":true,"secret":false,"door_sound":"","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":3,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Vanilla Unicorn","door_data":[{"unique_id":"Q9rr4wd3y5Rx5V7i_7GRT","model_hash":390840000,"text_dimensions":1.30108694894408,"door_coords":{"x":116.2277603149414,"y":-1294.592529296875,"z":29.43598937988281}}],"door_name":"Premium Lounge","default_state":false,"state":false,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":4,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Vanilla Unicorn","door_data":[{"unique_id":"W8YZ03RiwhodljOqBajSH","model_hash":390840000,"text_dimensions":1.30108694894408,"door_coords":{"x":113.41009521484377,"y":-1296.260009765625,"z":29.43598937988281}}],"door_name":"Dressing Room","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":5,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Vanilla Unicorn","door_data":[{"unique_id":"E9lFoU1r3-9nAIVkbGnqB","model_hash":390840000,"text_dimensions":1.30108694894408,"door_coords":{"x":99.08306884765624,"y":-1293.6890869140626,"z":29.44040489196777}}],"door_name":"Office","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2},{"id":6,"perms":{"job":[{"name":"police","grade":0}],"identifier":[]},"location_group":"Vanilla Unicorn","door_data":[{"unique_id":"he1uNgjyCaJPKgYY1LhAk","model_hash":1695461688,"text_dimensions":1.30109897474176,"door_coords":{"x":96.09197235107422,"y":-1284.853759765625,"z":29.43878364562988}}],"door_name":"Exit","default_state":true,"state":true,"secret":false,"door_sound":"door_regular.ogg","door_type":"single","lockpickable":false,"camera":true,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/weed_camp.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/weed_camp.json
new file mode 100644
index 000000000..2afda5f1f
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/gabz_locations/weed_camp.json
@@ -0,0 +1 @@
+{"name":"weed_camp.json","imported":false,"data":[{"door_type":"single","id":1,"auto_lock":"","camera":false,"perms":{"discord":[],"ace":[],"job":[{"grade":0,"name":"police"}],"identifier":[]},"door_sound":"door_wooden.ogg","door_data":[{"door_coords":{"x":2187.753662109375,"y":5573.41650390625,"z":54.02808380126953},"model_hash":363295477,"text_dimensions":-1.28941346645342,"unique_id":"6yNlQkApKvR9e4Z31X9IG"}],"door_name":"Office","default_state":true,"location_group":"Weed Camp","state":true,"secret":false,"lockpickable":false,"distance":2},{"door_type":"single","id":2,"auto_lock":"","camera":false,"perms":{"discord":[],"ace":[],"job":[{"grade":0,"name":"police"}],"identifier":[]},"door_sound":"door_wooden.ogg","door_data":[{"door_coords":{"x":2186.557861328125,"y":5578.07568359375,"z":54.02808380126953},"model_hash":363295477,"text_dimensions":-1.28941346645342,"unique_id":"BlOfeyBRHmQhUTLrMTy14"}],"door_name":"Locker Room","default_state":true,"location_group":"Weed Camp","state":true,"secret":false,"lockpickable":false,"distance":2},{"door_type":"single","id":3,"auto_lock":"","camera":false,"perms":{"discord":[],"ace":[],"job":[{"grade":0,"name":"police"}],"identifier":[]},"door_sound":"door_wooden.ogg","door_data":[{"door_coords":{"x":2189.86474609375,"y":5578.07568359375,"z":54.02808380126953},"model_hash":363295477,"text_dimensions":-1.28941346645342,"unique_id":"M12pBBqIe8EEb7BTUGUPv"}],"door_name":"Bathroom","default_state":true,"location_group":"Weed Camp","state":true,"secret":false,"lockpickable":false,"distance":2},{"door_type":"single","id":4,"auto_lock":"","camera":false,"perms":{"discord":[],"ace":[],"job":[{"grade":0,"name":"police"}],"identifier":[]},"door_sound":"door_metal.ogg","door_data":[{"door_coords":{"x":2196.78125,"y":5570.08349609375,"z":54.05622482299805},"model_hash":819505495,"text_dimensions":-1.30224609375,"unique_id":"LYTMdkph851V9_UP9dJtk"}],"door_name":"Entrance","default_state":true,"location_group":"Weed Camp","state":true,"secret":false,"lockpickable":false,"distance":2}]}
\ No newline at end of file
diff --git a/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/location_groups.json b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/location_groups.json
new file mode 100644
index 000000000..0637a088a
--- /dev/null
+++ b/resources/cd_doorlock/JSON files/INSTALLATION STEP FROM DOCS/location_groups.json
@@ -0,0 +1 @@
+[]
\ No newline at end of file
diff --git a/resources/cd_doorlock/READ_ME_AFTER_PURCHASING/READ_ME.md b/resources/cd_doorlock/READ_ME_AFTER_PURCHASING/READ_ME.md
new file mode 100644
index 000000000..0645e1758
--- /dev/null
+++ b/resources/cd_doorlock/READ_ME_AFTER_PURCHASING/READ_ME.md
@@ -0,0 +1 @@
+https://docs.codesign.pro/paid-scripts/door-lock
\ No newline at end of file
diff --git a/resources/cd_doorlock/client/client.lua b/resources/cd_doorlock/client/client.lua
new file mode 100644
index 0000000000000000000000000000000000000000..e3e245157abcc4611b5cd691fe516c3ae34368d2
GIT binary patch
literal 26815
zcmV(qK<~dsSV2$$0000004rhU0lI|V_k923J6XNksVqbUzQ8X9(5$9YNyR#;EvG|o
z*dp3HvWmTEb&1)x0k8DPufJ7HZjR(6TE8fh03%r(Xpy(i{89w2m?y;T7H`nN?CoB;
z_i24c=)02&Iif?GxrS{AhKC#{2SQPzU=0w&wrpRhKZ)V@jTA((s39
zy_oxJ2W;<#n{2Vco%ii?uf+;nz3|A<1cm32WgE6tjy5%XTY(+{XnLq?s1X@ujRT8M
zEaklG>(nAkKV@j2)!VOLVzoX)_kXCKkAE((%qN-XFebm*hwEnq0~iFk}2@mSBk9W!~kP$}8!r
z7^yq&VjgJUkob{+IwGHl;}*|UNnWjtTy$f(bL{?w7zRUf<>HQT?_-Apw6M^z^WaQ)
z5$ICdju~x&1c1(Vl6HMe*)dl?^(61Ou%0zr+e!VZS>_8IYcs>4Mr2OLQRTlQYX<&|
ze>TvjmT=j=g{_fNcoTsPZVzkPGS&bFj39&AMXhuH_D(6M)xw(vtaI6b5t%{5d+O^|
zDE>R?0llOIjaJifdW<3}0rBkX{h{kOv*4Fj4fwJ&klihJx{Q`Z$#Vspl{xTpcr(am
zDkrydx)T|kesND3k?85j=xiCZR4BJg%L+fHp4dp5lP{e>3!#6Ux
z=?Unb`w$u!j0B6u|8W4+E7Cu%hCA^xef}xqOoS(4fyucMHbiNijLxRsqo6FYjg6)I
z+YHBc!Zg0IGRKJN7@=FP;n2il}pZHAV#Yh>ZGA
z4UBg`=7AX5IRJTh@phP93$UTW(t{(RQk$EHwj@Nqseb^$q0FJFe26n7dFnRh&UCTu
zaP5wN1qEWoD4Z98`@h9fx1@-b1ys&&gi2x|q`$;gP@6_c-%!FAanFtJn3B1WS6xo^
zCOYnGR^xvoUkAh(`c}zW>g^r{3m_F*=T`)jTxjx92o0pEVGPnar+E7}T_kHz1hou>
z*=&yyTRciUK$93vmi6>&<8wiW15#JYOlW2*>UjrHun`+Xt!)k7+MKM!<Zv}A0|8O=b!{!xi(HY_@A^;di6J0t)f!e{6Hvy+#2
zA!MIhseB1_5JUb6Tn7;p=J8E4o#A$H1
zU^1N(fPze_yCGD{?t9`Bt`kPJIbe{5044u)MXY-%mubfuFB+G?*Sp0?gnW<;ah>h7
z)uLwYwRqdb(M0^)hGee}Kuhpfb{>+<1&x@s+j1Ifr(~z18xrl+yFNa
z=Z?v9jveW2<)3t|Ln;;mbyUWX)#9`l7YIJg+QhT8trhIEW3uYjR(%znPc|_?m2?+z
zn#qDXRUy&DwTxl+brQn_>$>GwTMl^sH?O{Z->+K#l~IiD8^EPJ>lu@b?yX
z2m^99SI$3`(0ofbzbHLvZZyw)aB*yfL5AC?f5d9cWT?W**2&;3BpX5IWiZXz^a2^(
z6YB1UrYP(O-@9vp?W_6FZ3)f4j4BsveBgD#;{+hBRYi05HwuXW$CqviOis)p|M_*V
zl1(f`HnQdUaqUXbN#lNO%ri_3Ku^S_dtoC7oH?iuN82RYu*v?S(334|&5SEn&U1o$
zk3~vcdGk?2UVEUg3UIDLOg%0qIu`>H`|pY`_2r$kGI{QNop7sZ6!>zEcd0}@nnI#H
zjmlO{00JJnr+I^`1E$NKL5TpV6sQ2DVj(2i)-p2l)K5PPOK^_XSYw
z5DILGT;$J#Q8ML@`R7-fdG(&|{0XN?pWGN!moWEieEuReUR*t@C=@{CEJ`KZ+gEZv>xzzb5-P+4q@*{bQElAVF7E&j*?H-@I9
z*3B`ZHD9Z82Wbk3fKJrA!Bi3|$tJDZMmIK^Cx*{(QJv46uF`OS)^%h^cZBCe9~)-$%Y4mIk@Sj}&M%z7kt-k}bglHMD_=0dGdKiCzLw%hNX!3W
zdRx(S$MFywblW7Dcb>BK4C+A-I+#0>{ql}yA2pY>j_e5`!Xt7WQrX{p2OVl>xE`dh
zcUaM&vnx@vh_hIVaC(wuqk$6*3f0sN<|VPv9l*
zk;RUkYZ}2Q4&^JdL2M>13mF0?=SovfW2pQ05_Y+TR?jV|ofK-LyK@234D_R1N{Pv}
z&byMBu1(82-`KN=i|tm@8bY2+wAvi%!G7xIvM
zWxJm5flFy{?}lq>w0d9y{l?SV`;R$)at*Z-T`^E%%7PMbK)6Pa3c{CD2;?k-$eL4E
zG~z)oJRCFz`U|!*OGPFh9A9~~ErrzIr<$)FWIXLyjz8Vu2XA$bk|jv{u4_l6)K|w;
zOJm6hxZRq(&G9M?CB!#N%~i{Cpl&^d;RJ8g+KPt1@*Q9A0d-#iBoey4uT?-v=G_4i
zVeLQ1GR3o7G^2w(_PD|9H8L?xUWcx>)EiDJ+FqWI%hH?DxR?|(lSpk6f1eQe#d>R4
zHLao3|7L)NrD&Fhw}iZ%)^L!n9Asi#MhHSbT-(?1CX{l`IOlRF>0j%CR$VyV(Lg+s
z|3Q-Y3!|d`a!OL@7Y6nsf|sr^{|JDF(e!`{IwLr{5RYPVG3vogegudzkCDr=ivL%su09Qhv%T*byNow_
znW6_`QtuQCbl*IvZiu=N@>zT^ASM_AL^Xf8X*`2A{#w^y?v#V4PF`dm%0JqT3Jf9LpbN5gA)RYm&!NR{1
z*uFX(uIi5Ako@y@R}wGSeyb8DrQc`#RoAjq@tO4j!6BL+)fVH+#^Py<9Y_ck0Ue9wx{05
zHH2C{LdVEtE8w-^@FkGRM`x-f^ob3-Q(F4lpy6c#obg_-T}*!WXF1Zg2|2Ao2zdzv
zb8-#xxUXQz7?mirE0HzIQM=^!Ym$9PuRLFW6zPmqUAfL1vr{FeMB`4Io6YSR`G31j1M
z>NzjZi>nDh|8BBv2_96}6I~ob#}@y`ah$g>KfiJFU)YT178EG3Q1@VHb<0c}4vHj`
z8lzjx*1r{7aMsp$EO9mEsZF#w-ptXQfFk2l4T=f1;?#kt>DWGdL
z)~}cFtC1dN&k5zPD8e@ebOOo7C7@i^@sj__f8YFA1W=r8*Nbc92j74=J|;e`vGC+r
zS`&P;3@hZFBX;6Po_|YV*>~tP7Scb=9V9zgf^>$5uDv-cB=48umA!{<0nMxkt}Jme
zGAW=TAQY!IDCCU6B*745_+QfszT@UHzE5RLE{5U2W(p5x76;IoVAHU4v;+v{k}QCg
zoD5+ndw7?DPcRo!)r<303q+uvHrW-ya(U%A96
z-+@zF&dIuU`pKiVBUV@flqxY3T%Q}`O8Tfqp1Sq?QH8}WcR?5THpSh^V}Ct4=t~rU!ZsaO!(Z;g(N@}OVb@xcLf-auZ&pu`VhmKi`9XC#
z8EYu63w^9{8L>uZGD(!7yO4$Rv-NpEdvC1kskHb*y4{od47y;D_aK1Re#H$uRclQ{
zOl4##dBS{zz&9f<(qMK2Napb<#GS<*aN&fPup)0`aQAK?sJf555~r9UA^WP0hdzD*
zs*mO{(p;Ug#YDRFxNBz5U1SM)Am76?2^K^+$B-0QJcci`q)|jLjji3^p@{5P;T=fB
z?>#5u5Z@Tp5S)JAdW0N6ujxI|JEin6W}DK)(7E^_ewj$wVV1WjL?K36N3vj;>409Y
z;(Az=8cqO>@OnopF9Ge!q#|b|&VmDgr5+k3+Hp&`4n!^QdGqg1;iXIHl#$rhlkSTf^628^;e}QKP=r%_vF)H47_aD2WX{1R&p6;GNlGx5RsT4HBrm
zV+S0yN}vY$Hc7GTi^y=BJJmMFZ1|lkjKPZS+OP|FVV%LxP|A`^$~KH~uEUrMl;}I<
zpuH&ttLLwGr9ztoneu{=M>ImvY_EO9$D$}K3;<|5XZa4i@rAN`=F?XKq?J!>nfIaq
zCCCuW9+%m)CSg&u!kQANI%f`u>~~|Bq~U0zah>yrj_tp|M?SFI*7OPCwd`-9`1b?K
z3{Wy}elCxGnIyUPT4G@m^t^k`W_{b82%-};0$_lu&9#d`H)X7-%h!or;&S1&E?*`^
z-NOF@B;QACjQ?l>gUY40ev(Tqg(5a7Q8qBcT66P%s?gZcXSZPLyt!LXmy?!1_R!)v
zcJ_E@{(+0b10M!WCeebOWTT7(*8TVk2Fx>eQ9AhSs1*M*DDE9ybPp-id!^l{%INruM_V@a>Y)+#E1c03B~Iz)JiTsVh~gpt&M
zQ~}{Cqk_e7Lk4V|J2(ce?xVsMR-Oan|H)L~=$U;$a@^3hl;dp3xQ@SFx_g|J&sjNP
zQGun^IxzhGph5Q+PLih2XAl>`LOJ|e#LmSc#1F%jQicLSBwL@drN#x{G#MPqD!~&?
zi~@TS&?lWxZOeW$m(@uZ3q?}1(~)ay1^cUIbtJOlecT@r%I?6B5-55tsNZq&5Qag6
z75DU$N7pSvp)}W!3diHgYE;2H;_z}k^MmMq9ZF)Ej}aSmZPr`OjYb
z8Y_2YV^TEjiFZ!#kJWWY%^I(3meDjk2U^xfQd59ZLk@o|C*7lI^Dhvb`0d4DLPFuS
zE7-@?kS{r~Cp{@EccmCHx6(MW?9byBO{5f7qo->qx+>__{Ksyx7bA!cRS!t5ni!bI
zy74PyedF58@}R0SM^eeNGW_&fZd=h&o#apQ3{a}X-bYbxY0w9@*w@B{(8NlY;f#r#
z-w@de3Iy55LY6XXiLBN4E*mXKyqLV92Dki0BWr3QALM>1+;i`HfAdJVV$A|n_~R`^
zCRc<!b7uo+@-JD-(r*nvHDpA
z-^;zBaVZ}7*n!*_T?N$#O?&@;nHgMA47Jc#3{2wam^zQRkw-cOO*`DAi9fh}4C;&i
z@x35qbO~p%EAW3SOQ#A`vKMdBpE*kY*3htQ{ClFmBrk^IriAjM@=ezgx_S#+Ymt
z_1^h#l_Iw>7aMd{Q4z*?7r3^y09JZj&oWX?qMaXYm%I-Q+C(o2swQ431$*j1d4DAQ
zwo%FU5`Uw{hXbA7_n-f*>QJU(jQ&T;oP$Ez2*I#_<9BtpgC!IB)G(3Q{`P1=6@vlz
z6Q%QTH?s`EtdP{s5Vp@(&oQ{id%i*j?>QW)B;pD1Z47b-=&S>gD3ck2GJ8_}kXQfX
z$6w6897kTSL)K8#BwtM*FxV%)B{J43>ZkkgTBW}Q5aTA2%GSjv?dWpKEgZ3{+Z_i(
zE~YrQQNm>`tR2p4!Obk!Fq_)67$&yRE&DQr@Jyl7HQ;tq988E5xr}J2e|s>}9`Lr}
z>;WUUaj%@cl6h3aV+|rbb~<&i22+7I?c2wcLy6VIeRyH2Wm5Hk@YKN;ZF>)z$SF+X
zKdH>$Lk5r!NLrHB?5Hg;1Z>Gg6~8$`mmi|
zuUREp+u1yx7W!92$M
z8f~ppD_d0e&3)%ej&-vnn@U{;Fab`>6WxUs)W~KCxg-n>_4dnJK-@<=++;)E2R7(`
z^HvLvUR&l#(O{NRjhl;;Xl9Tj
z+7$=+j{YIH)8#kgNV7$e1un^8k=0hy-C~Ac3SfR_4sQctnG1$}LF|4WKa3k{H#uiR
z%V`YLjrjI^TI^=Zg!)Um6NZ|`WD8arF^S!heE9SmPxv4vLQ&1}wgN=+;!EvV!)+=h
zv8Yn0JV~1wRHkb-e}HfVWZ=zKJ-X5xzc{%BiUV6Nlk^K{ivz*qa5iGt2a2NqVD(b9
zpu2@Se?hN}n5_>1eEWKSYdNGL_|)HztHsUR9A$hchIR`w`w2%9Il3&>h6(`(`2{~m
zU~qOg|CXf0xm>A!|8boyeS#4o>Ym{*$Y?8oUs-@`LB|lfAtn6zV%mI7cl10#g1X$&
z`>~}br-dGq{5$vEV+83P3>VUfXGusnWGQgEo@>NasEDw>XwCd?czOUz11?1=D2e*Q
zN+(U7>r9*$)#Za!#c9^9ngEYvH(}CFnbg&2b@l0=?gAA$CWPpM-%xU9V9ht8j5M*4
z@felvwW7NE!~S}Zz^U`@Nl8dd_4j`#si&H<&K?1a=L50#c_KboFr;$m&a;(1QLPvT
zNj`P!?Dv1H8b9}klGp)lk*M$RW$8%8-~*rRWSEv>89;x)C<)o#!!1&S$CleOCcea;
z^P~;joVa(`Xm?E)A7X|E0c>od7t_kOYJ$8f(CtfS!w|p(K!YrZa<1D&HhbKE_5Ig#
zmNdjNC`kwT@+790jz8<+O!BiGz=^L%^&^?lbMkORMt%EnsDI4$41E9~GMeT>!dVCT~<3kBjD
znNt(-MWynjqWbZ9`lUm
zSWmA57pUFrk(#zCN&Xy-dA?Na=CZ=JhylejnILDzlKChG3!)(R2slB#v0O<`Ivfu9
zET&!#Y@UGng`+kqZxeiz9%_9q_C=2t5jJ6yZH56Og7T7#5SPc4Kpys~BoH?kvNPMD
z_Ux;M3C)41R5nD~Mqcsw1dsa;K`$Slpi(*UuVDi6nftw$B?V62a?TwlW)m)Fn&(dJ
z+4;x_t*If`7touZ;L3T*^Hh6?$jaAv3bu#E9;;!H2g~#fJl!+%UPC=Y+z{^{yDE|J
z81kUg1@_kEE6!=nF`n!xjri_+k`88@ocOAc1mD=P_E&|N7Zj@wF|@8ZN7moz#C^^_
z$s`wBzC@B4$iTtcY|O$~^`TI}Lt2(6(P0-$;mm4CY(BfFvd8sgJ+_>bfD6`2@{BIt
zi!R7rK$ab)!9rU2=Xf>P%zg%7w^82IF+2fm(_NYi1VlVgG=+1LI`m3S{K9^nz&09EU
zW~6}C8Rv)+X&ayMT(8Ih-?dgr>UnU=1_Y+FhkQNgIbv6U6sr=F^y`Z-lF4Ftc;}l&
z`HbaNJ21`c(?r#N9Y-k+2>hgaHj`1q*9g(oNQH!8O@d_ileR9R6rrAB`f>WZJIUVv
zMGYyDE6G2XusEY(kTBt^QT3UxndVmUubLKcz&a*h-O)vAi-Rq(qcv_H>Md{?-qbG<
ztC<;mQGrJ^$_rDpF+nRFBJlDCt0eK^4^mAm?MLilY+-6pUTwMAk}Xt`ObiQ~U<0_1
zaUZRv=I}}sGxXJg{^>6|&+F`%jD~}6kV8UCOFI9!;bG8N@N(y#hX?!Q)7qMg<(%d}
zhc>O`!$kt*bb?SZ>*eD|ppHJ;s8_6D0EKi2xV>vHr!Dya@{
z0)V06n;mB4Y)={>gC(@KK29X-B2;yFThj)?;t>3?^)J}Nd534R@weN-tn$*OFvFHx
zv4PVR+sB;x)Ea(RH}e9RwYo)z6*%bs6{=25rT)fapG!)n6Dt7
zE5~6?;()Dou)_F7j@5UvqBqx85Wyg8f6x2dg?7PxGyl7T$|pxitxkd5wBQz4WjtBL
zthP*FNH|^dI>hf{o(h^ii9W@DOjba9&zh^7mI#4kM3X5#BZ`AW{i
z6IHsJj**mgd&}2FvZ_KudpCVEc~-E0{{n5ioNM~O8F;BE4ste-JbkrU!uPY~l65xUwk{W?!g!i4ZPlN=rm{7q1mUdim$LB|eo4`t6<
zwmx-$i`w~_c%c&YF`96D+kUeG{`Fc*P}bg4ClKTLz}+h%NbMBNY}O{zMaAl;sX&);
z)-N6UX;
z?xSpm9d|^&`@KWhEo{J-AQL3OluwBGOoym_3#Qyo(dup51~U9UDeIcQNKHS9Lf}&o
z5W126O^5HYb26It^9sPS6~!gEu$W5UML_8;S>F`R6?TWqBip>C8@a>w6xNYltv|+B
zm6?qbj+6tuM0;*zSY)Pa9Bl?XMEFt+28RoBd4~T1sQXCujBR;Rh-PRj6yFp>v%QZ=
zfgGUZ9U!zjLU-hFjBFx^V3v#YZ!D#;Qnbx=cwq)E^6n$V0FGy6~%PftT2M}fLX+g69WliTH@%9hl=-3wPH$sTJqqu
zQxTVFzL(LBd%Wg6$~uCKOd}6NNH@DRuCXooM`)Lu!LHja%8{qiVwa$^^P``Z%qyqE
z)p}H;oW!th;cNy}Ez1^x>$rs@>WhIL`3PQF@3~=l7Ymt2t%L%b6*^S&2EzLZEXe!+
znl@9ufW?DR?|pe(vTN=TWHxY4o5>5Uk#9ps(=NodN@<9^?EDe%mm#8+#2*u4B9t}!
zj#m3RnS6Kma4od9Ej~$=wR4j^v*ovtvfRQSJ5jGvajy*e1eh`;$0gxb6i3f*hAkD!
z?+J||tMp#d7s0MpuyO=+quCh_%o95jyM{xx%7T$HIDd{~F8USS6?65R^4c(!U-IYr
zdtwr68=Xt2=PfPliBW8nI-dmm;{ku7uK}l+Sk@&C$;Zg7dqAaox@6c7ZL!|lkN_c>
zwvf@@M=-|J9n1w+k7HSb9f0ZKa2vf9zsu`s|RJ1vCY9i61&
zH?mh)0%RYciFsp@jcAWeEPmfecY_ZNh)$l?ELe1RnnNDs?}2BJ?GVzvsd$JbKxCqj
zXrWebR5k@aduj8u=6!_ts??bN-4FW^Lx2>+)}xpC%Apg0N8X&Qy)I+^2!m-XOH}|v
znRO19
z-a)Kk=0+fU^-yaVKm+CEwu2V3Nr?2gohL{@8soxtZf)VjgLeIgWie9!Yc&oItWm7RHqtV~k@Kxz0Y?h{o;r>A{oEcNBk7QT%_mXJ
z$K`V8*V_3nVyj)BPr;fr$uLqT|B#n_fzP~F2F}4axYNkoV~2N=3ergP_f{6czGLL}
z<;ZfJ!NgzIqlz6arD;3@$oo-PPtp@GJjcNsR=;(`H)s6j3)XLeZuP_29cgR`GOPWD
zlySk|%EW;0393h1Bc>x;uY8U2ea+iMNZ}io>QdHfjk{7rB5`{Y)I&=)<31uIad
zKDr5*UPrg9F8B6Bw<-odXeoAs>sr@$z7O555Y%qWUvo1n?h3hOmx6yw`6URBJs2{*
zs8?ac)zr3!?|6XB6t{ZX6d6}i#~3@-gq`)@)yGy{nhvpR_>bhq1oMou$Dmc{OA9+W
zLDmA!xDFw>+gV!m>rzsa4sFc_7TrKi?gK>RCUs620NB&6UWP3*C6oS+8VE}GkI)Z#
zNnZ)CsLuLOtF<}ER#oKfOX4qnt-M+_ux@$XQ8_Tk?^52Sy{dnz)VtIUBRI7}D^1Wj
ze;0skey;&Hyx<=@Fi2tQo98Yunh$tkjgwD(uZ0XnQ&j605`gAKcBS{^|?Axg*3~
z^aHLx^17Ja;^=eR>W=J_}LBCVO`JN5|n2#sr7)tj|YE}Ypr
z$%WKA^4(xxgv^wd!^zG~j!9BA$Ve(_pL-yT0J0-Ov6d(3Y8FV|kxxYdn*(IKT55Qi-S8hx>NQSvp`@
z8bKAc?cQDi87F*|PE=3`M=_-Sma6I8O6*e;e%NjkNK_TvZPnR^PqsvqP<#Y54k$Pt
zn3IIWmLwIJF|1)UJ_w9YV#_Gz7P(Lx|2*Zv3nxi@j$!}sRlU0S
zyt2!2xJ8=u=`yij$Suj6~Vb6n9FWz3sFiK_dXBQ
z3v1LeED!LH`5mD}&Z|QB15Q1UP6n1Y>Dk~)vK^tk5Q7p~1tniSV2u&)N^%b`Kq%WB
zmD4y7#5&qFE{c6w(YDIiDVljVvyy$Wz5cpsOHgCRWmWwA#SeS7YTo@9C$o_Xjp)Lm
z1;_Di%$}BSAP`))2i>1fnv?)cERg_$+Qf*OXH6n#+Q6q3d2!9a8x-yve9|Hyth&*-
z1NAg;UcenDR>|(@fg7wd_6@VGW#K6QwBN^c=d?Q0b1!Nl}M^_SK-^PEa-NW5j*}CDuN)h}c0@eU_K^2?2k>Wwi_>
z6}W|R=ESbMx>0*busI-xeL1{QN|m*tCO%0&UiJ;-{0FQr9iy|LZ>UkQIHq2sa7Fsf#6RTAx9^lRzH$}BDQp>SLd
zn6`ym(2D|Clj8o%IU^E!+`NrrrsQO3V}?^bzB=!F!01Di$F;%q=^^^WM<-0?0)CDj
z+v5i#a-TAz+GfpU^<_T{Cizl{`jRGiaFCZRt*Ft=eC>VJw|_o%2yj>oDCt%6RBxn6
z|IHvv3msq9+T(Zw3*qm<4#?kMf{F6%q_g2uWD?J-5hTiW`{vk<=AtM1npv1SIWV(5
zt_XxmWtrxmzFled?*Q}%7r^@j$E#kss?TCrEc3m5p$(zxXj(i55w!#8
zjN!P`YtIx!V<={WS7U;;?jK%oGvui*^)=YsI3;D48lQmc8S!?F6H@P)iAT1A&vSl?
zEya`S%YLK%tF56pZ&dj6LtF
zyOw}l2tO4U
zamE02+7ei69ywVPIc%Agrjp{kCXte&)F!i^8zs4>lfyU3M}Ky0Dhex?=>csNb2MZp
zpdS}J9%Kq!H47)qOrsQQZ_;3g_tXVo_d>>UyYjm*(PPo!4{$i{t7XWPs4aAKfiWMV`yrp1@QIMni>M
zn&-{7haWF;IAl>h%|QUc4%_&5sCMQm?g7^34rqO{2_Blpu45_boVlTXsNp$mp7fvoJYaD~BTXW5V%p6M
zU@oMnZkH^SjpZ(bnU8IbJnVvA$q+$T?Or>05+n^u=GgK1BL@ht6&22f!6n~aTG32b
zZAk2$xgs6qB)+z~NZF7r=+N_=J1Xuu&OijSwBf@uj`XcRz*E{Fs-d%7r(&@P
zJfaMOd95$*jZX1CL)}W};znb4H7$~LX5(W{a^O7{^6cKLfu!PpgnW`G64KD4%U&3DVqxSVlhBFk7N7%3KNKpc5!Q<($fzboLm=Pc^VzWD>XSDIbXbYu!}v`zWyCI!25;=X
zyj-Rw;QKaN>|@X&f{ePJ0K+U7G|T?64OS!F_I*-!M+vbTrnTQ9b-S=-Pm$DNW@Z#;CB7Hjz+$2_c2>xU
zxE5c->Stu!2%U!{qba#`2!cDXD)Mrmo#VpN-Uqo`o;O}%}^9XGTx4S
zwci3;f?An&Vmwq|xxqfTN9Vzcq!>x)LWdgeX5~;J?3ZYN-v{OY+xU98dORy*5KRk-
ztnqeT^@SRw-!OL{;B>m<+fJ{uCd;UAwH<#S0A48nh&HsazB<%8%$&BUO&GX`z)}nQ
z5w!bGL_wVQ?oMJDDhi9Xb9Q9n>J{A2z2BB8L4DL9yLSAq&Nu*9H+<8~31KavB~7H}
zTs8kazZR(eH7z=xiDm2ogZZ<0?=_f#)KHkhY^6skew&NJ8liSjkA!k^2{1%MZ%PT^
z0?%_=a~f&6W%M?j-O^%@45@DHYH*RP=HLYLQI(Mlg)A04!?ePZrFrEENf;6*=IwTi
z|IZ#saqvMmA<5jw>v^1fct4VicGPs)$qWmT$HV+y4+kr3NE}3UzG$NP1~A32cN4V8
z+0W!jQ_uTu1x76|(!+1X5J&Xqox_yW7vQ4ZK17@5O3UgPoDDX?6JV!XyRySKO>6T=
zsIwA&&@`cCMqI7?G>@!O#0a&C@Tuqs4+&h>Hi}4tL*DSs_PI+rqS|hW`zSE2k#O?p
zUNIc6s%h}tfbp~>yl7%w6fj7x-lJ%xrNO;n#gAcpOI8bb>H;v;J1N5=DVeMFi_?p?
zpJf6b1Q*P1UJI}7upO<1R|ZR}E70p;0S@QI2DOm)+!ZsaIC-o`r(w9;u#
zIHX%{-l)jQk4cg){Oz3tvA1s;tn55KG4}ZUb>ssS3}t{y;hUSyCED^rMYUPGT9wQ|
zl+0u-lw@P_c^I8P5GUu*>qbtfym10cUk|BHK9hHpon$)*yR0}d>1)I9b)2WX5%m15
z(F|EveTj+C4t1+?(qqwCu{N>DM4?qO6XMp}4ZH@XVy?-|ykjO$`!t+y#}Uc-mq&-Kl0pKZl{?0CS^Pka{j|
z3d@XW9l2>WR)6z$yez$;Q3p?QNX`RGTLW#?@&OX|U0{7(p?R_sxN|C-Ag6=U(1|`TMt~~MNM86zHtpubZzPhTd4sdS4)5LMmsdCQME@$Hf_1w>MP+3;bvht
zs*;~9zX79_E$ch#QKzqg$vi{9=T{%9X_X3I^;;r6#l-twJtAvIqUbU!Pz5QQRLJ-z
z*1gE|<8_U(JY7JSK&~66zR~pXS{EAbv
zSJ6`p*@>lgz|w)qEzhA5k**1Vq^K+|M8IT`%F1TX0BqK5pB8J&SxMJbo=&SL5fQRz
zyLcnfGuJ(|P%9ndD~zs9U{_e(;7(fa4Tr*REXaq5Y{EJHjDi4ANKqt&MT)YFe1!ey
zE*9$@0(@ZpaTQ&n6vmx>BIfYDjURS7kDTvj4p(q3Ok=}I4OJM8;HmLWR8pbmTx7S5
zEEL?-jqK3%+p{V&10k^pHa|y2)fY?Gd%hzac#-c*1#kV|OS3Rv+4Cr?r4&NPpO^|Jd7K~%CikD%=g%qDcVknWE&OJMv
zUzj+cPzTxl)cbKvUpZ>--~|2QW1%+
zl2m9ePy47(p$&!r*vWfLR;eWCAtP{pN?~(xe8UuGgOK6gDM?|^`P+7VB32kXn3y>v
zA!{HzIpu~%4jH}1De5LxWb&wZHVbnWwe=y+Ma@s1e8^=N=R}3l&gqjAsUaw=0{4g=
z$54VI*9i{c(4ki*{oE8GMZV-PROz58sLokCxH#kiLz8`XIUPuu0wJdmcBUU%QIiN@
znw*a+!FwgOYR}IoCnMeH-?Sy7`DF)`#d`*)
z&+(jCe>{M+zKyFk{Y&MKELNJ-5P>5GiM2ks=XS-Axx&gPUx~hQ7{qsYe=`zgt6C8I
zMT%E3A!#iZ7-*ekgn!Jd|3-Sk(E#7%h~AJ04LW6M4Z!a>7Le*dih}m<~&`DahKB
z0>Id8k=>iAQP9E2-+>i^{BRVxI@1SJEKZ98fUdIOBNJI#w{Ti5?PGa=l_|&>hdLLC6;#xMa5Khec=1z
zDNI5v#sigan-l6U=I}JsZg+hr1U2LX75EKdHj28oCeVCg3eKDadgRY4h8DO`YPVLN
zX4yIUV#Tl1B7{sYHvCC|aDDZJ@l|VrEpzur
zF*%BAIVsN$`q@rWV()<|aOu{x`mvn^(%eqZm6)p6lzDHvvv0Lw4DeW}Qe7c`IHImM
zmw2rOq2ge*
z7`QFuHsF6W*&7RNR*_y^yMgYXy<=dCZQ^$eQ!W@vVIFnywgW;bvPu$2@vM}R6o*{A
zS2!-0;jXD<-cLd_iQVaWfA+9Wp2qbWg5dD2dn6W=owMiL
zH2~69h#L$Y+K+V-mI2v)qlH<#q|LcI@`Tz!GGhCjX$_zd!M_(l3W|8Ag(HC~qYZ;OqsQOr&N
ztqHerhlF!q=u}2ll7O=9w9SDpW1*fDfkx(&^pWSbvY=(Nke5Cxfxd2q3TF(D1IoIq
za*Y;H8826MPu+~}?)C&&3WZYB&uf$j
zVfn$zlrL3Q$B1ba+Pl!5Dutq3q>`F(oe|qV8id)qNT!@~;HL`R04Z@C=!M;5Ht0IS
zC~n-4(f5l61gdV(zxayK;PbKwoPTEJ%%War#cEF$?(nwY9V|x%e_w25x`dw6XhmZC
z*{{iQe)*pd4v7+$>lX~#oo7QojNSv|C|0VYL6PLFgj9W1$$JYUs_e0_M)wzw8(0it
z^tiXg75gnYO~rI8osBMV1Fgpl&NHHVa)MpAPjRwZdcU6nKYu??Bm-5lTJkXqP0AtF
znH@r=nF;&uFZEQ|CIn@omJPa|)_$|wrn+1TG!sWLq}poUba?EIY*lg&D8%oU2}HH3
z6cux@A)yBn`LU^Ik=r(ZcPJa(Zib2(wcCjoe
z@ap5y*WolQ5;~g%oSf~RjbWfG;b=@;AZ>yXo8kF}L$FX~KZLKW(KFx|*TqIv?s@PM
z1s&TD+3!IwfEz#oBi82oP>wVZS_>Job^J^=f1r26g8592ncaADZarNRwkH35zbHIg
z(FX5srQAXr&^4l)s>`_Lp10#Hry>()xsv)R60&;*NA3O0#XDb?w9Ob*)lJ3Q)5G>y
z8=HX5U^%ZEP#W|Tx|+7UO}ofH<+@KJ`Sox^49(3SV%DfvK(EAg6Pa~`v`jo@0?uno
zE^>f^o_B4MI5UWy)bKDm8tI+WEGC`X35Is}(LG!Xe`#yuvv|oMMaHrWXwk6MhYJx`
z=1C#*0^l{DuUzhTou)qM!r(iO1AO+d<`Egw5dcrf{cFZ;|3q?=Yf)fpm9AUw0=ER9
zxe1nYld^O0l7>vg1mh)vr`Q^NRe5LzO+~xO>2w3$_1Q=7l!N8w#DZSL4^ET$F}^nH
zG`OoFT?W6m-}BD7RQSQTyi#4;?f}w~hwic3zUS0bPM0amPs9R5^e1G^>O^*A7+d
z`Q}rAPgVNF=G0?@)>jwFm|$(zO~S9HeI7mFimUYIABw3xRJ|tjZQ1_YZeOF9$U=+>
zFTC2guf=oS7=P6x2)-TqH^&`@K2sv7tC)_PgJ-9VBj$DnU{w@4r380n?wJe+z$GYHdgqEtRB9L<(6z>|=3S+=Ghu_SA!tscHnEQY(EAO7
zdie-2#26;NT8+sm2uRLYs2PvXW-FHvg{2Z6kPZt(qbT!feK#$s<>nJO*+YEptm@I<5fzwv?fcn)oLygKY_x7g$t062NO
znPxWbQ4VL{>K!6tIIJA2SfVUr=p#M!Z7!`JGC?g%SFGJ3Zt5q_n|e4v0_%>1Mf23>
z$rq;HC@{^vk`>MZjEC*X|N2fryIb5q9RU*gEzO;ew^eVPyD?teQzO}s*j$^GvnLbe
zRVjKh-{x4D%Kr!Xs$8SOww|WhNWkPTEy$*EK2v4soL3b3oox
zL2n}(0rN_3>K3r?6sf61gPgrEMj`rdXK8c9aGJaK0UZ?6tZVz1ov;*ms$+|Qhv#Zzp2!c|X$!`RHPmxJTSHDWbouXRh98L|
zzlzWPRc4)x-3Xb<>=ijeYgPF`1l}sGjqdGFwUf@{hgP@OQfFpTje59Lz6-mc5TJ5K
z{!hBJ4jcf
z>D_`O^U^9fYXD;JzKoNPa|0uOB_h=fJ^e?mo!%Fm2^nP#y3tVB%EQz*bF<-831XQ!
z=&fbP8nxBSEtXV({+{O5(jUqr2=YsKJnq5=Ml*%SYWowbF;T!cYVL&oBC)+8;>8fJ
zrmQztNDK;bNJvzN(?td)yK>X0vRhAwv+?Ln((H|{=IU0fn=YQit+zhR<`Q4$Ptttc
z(PR^Ged0osXVJtv+&5eT6gb~NyvMN6g&(W+plgC%h9i9pYvSy4(eGG?bGwx{Whp1J
z$ZwwBeuv+SzH3nq)6XQGtFaNxbV2S+JzFJ`J0f9s
zdC*m$iV;qrOnJaoN9ofa;nKP?Fv5+)A}bpa*hFDzHm4Ea#BO7I+otF@om3VV~}QUY7+ad(w9}uoa0ITQeAYc_j{-SWAIN
zDHn){EvX=1%jYHU(W{|+>v=$}TOXzL-!g-S(?CkMdH|KtscD9Fga=K{xz?+;i>o;F
zmPEQi;&Beh`HEgX+15REBqomv`vAAvuRIM;FBKzoGvO$bzMuR6zf%7S3|;3$sTzE?
zGsNjXj`p6uLKI%z1-8T1FKmxi-F+_h#hGb1m;iIYN}5*ms>G~?A`(<^bwALPw5hXg
z{t2$t*;J(16DUK+&3E6k03Uu-%bHMRArS2*=kimqaG(dDJ(AsiVrXWW#fA#uNf`sq1-k~F~!pJ>o^
z&bZ26fmV6#3pj;dhs6I4_pwC7RQVtrqXr=p7t_i&rVwIwOUg8`J7VyZwYvTMA)kB9
zM*a=Tg%3a4*uDuZ58YPkI6HGSLEnJ0l4<499F^{=BaS|vuL*5;f27n-V}`qj|?$DhdiILqnmh^VPLz&lIg^YS`S}6
zE4umN(p7~Myfr=?VrZIj(zaFLvZ2A?Jg}f_IiYgyM+40nJ$4J>tb4z#>5QxP7%Q`^
zZ^Sg|^%RQoE=rKKmYvW==|3CO&rH@_gpOI_rA~D%qTv63(Pbs9hER4G2hzedw!IGY
zy#Z#fpYQWOL9)p`!smBDN%&N92OHg8!Ab{tQxL{*fh<5!t(t9Htqn@UsOW(If)cI5E)=3C&R?Z6dzI_wFDyFsaV5
zJ1?=r3mT%66S6qa!)p4V%7Dn%oaPR!=#qY6QSYH0BO)X+0(FaP;!ZWXay>;_`6>lS
z+lO{q5S#9)9&>7a$w!Gf$J%vfgfolt@g$BV(CvSo4KB{J&Yl(I2Ld9ln6VBfnzRS2
z6nrL>ph^Ka?gO9v(nk$DjsWg|4ZV>0Bk{UYNC#2G4_8L5qeyYjeCJNwEr13&*`d%c
z>;qTxZeY=K2}X~1s8KjSkT6Yb-i
zwdZR@NaFbHjZCUwqq|S_3Mq0Rd6ara{Zm5T@A7_usjOOE%n>6x(j&|{U6f}^bV(cR
zev@!fkdR)ebq5kO0j#Dz?0ry6gI!%gNADu@hLf|(O|f-OGf
zjtxuerGJ35yD(p27v>-k_x#$zVp8*~H{4}Ay65vd!`(G;qCiR(G}|yIcN5F^-KxHe
z!miT!>Te_Pf#(xx?p}V)ZVkmCbfOOAIw~kR>qBS3$w>(hcl?y<=h0t-
z8G#m!TdGcEk$7ncSY#8BhQX<}n_mQ=D9JP%?q|s0mh%Goh$UTe`E>QogfN8J^u;)YoSy&vM?qi$TK+ZeB4L)oBy%6x}4wshU#Lim2915@dht@vlADGkI^T&q$Na
zV~<%h>KYe~d#V`YQ`lQNof2=5IDGh6v4EZt-Z9>jNW+JeUBq4fFW;`LiTRp*FrDgG_54Xk-yvmL^K
zX+Ov8cP6YF7MK@o6^5e<`=Ruf#^+!^tCOKktm28x{)KWExlroUhAks=HPLRt0vDwf
z4rma?qy$?It=fz`du_D}Fk6lY&?@H%aUNNl+l2U-$sib&9C^2w(&@hvEcM&()8H#=B@BCqVG{Ds9i8Jf$3>7}5YT7o
z?LJA)BVkhF3)-()?UTdKUR>yMnoTFm$=Oy>xE98AhC(hVreE-AI)AFrFtHGaYh=R^
zoy$@{SsLZJ)JqJ25)nxM-8J^7ymnhSrNt-w2dHRf>E_S*|;!at~
zmp`ib{N&G3b70^b=PjHIrqsEPK@8$1@3@#2b!QO|D5iZHh^GxN)1d{=Kh6_0X&LzI
zpZYrAktJ5gms7a7*kV>Ahs?nB=MoEziMRsE0V>T@oex5#K
z@|`|qWlzO!NHq(3OdOO)uy7iUX}8|@Zb^c^8rU2$K4WG=1wUkfE9v4)?ir&{(E(-M
zZ4Vr?tkI3PAlC&*4&l
zHMYqlSd0#iz@m(CTw>Y*tS&yM4k$rTXp-usFq=g_&9^q#|903B@%S}Aivu!I&P9Fv
zFwsRLOHE7LC(AQ_-!qoBa?M?Ch);lJmpsIS?$0g8^@I!9x5dQWx%W;|YGL39>%Uw_
z;!#S(GawoRyq+`V0Vnv;_aMLk^k_GPItc_b2xOrvXr_{A&2MUZ!VVfJap0dgDL=L{
z2~wblsyFo6Fe6>9%Kqe9Z!E^X^fR;fp%(YFumC=_gIWpFF0SdXzjc-$e@$%;#FWGK
zI)YVxQM?vY`yMb;Glm%Vv#bh884NefD)Q$d$Jxy&P1bEx%4e`RMxvK(%A9iKQ_%&BNVqre<-+E-
ze#}L0ybh9ZuV~G>Fq)`oQ?>xOL2a;5vPd{14+PqW@nSIElLzgxK$Si-g~C2v$8^N8
zL5V@_uVseDLwAwNK^m(V4i52}Q4y2?gBW?CyVB(a8l!w+gNa9(47yEO{-$|oMYo;<
zcA}J~gB3oyFj4gwWPRd-pdZ^tWNDvdhtRvEY@m)=Sp66^U*Q()ey?+X8MU#adKrHb+|5I^`(
ze{~_HgkLtSu^0X*bAJ?BWCiZ~r-S}Yxy}`|3P8o4m)`OQxFcV(C+TMV7}^53|17fz
zm%Pru{_;j0c^4}S9NtNZgN?0nvTsnEM{*ql$>~=ic=4Y$UCTX`W)r9py+eV*LDGo)
zY-rVfk>!V9h9Cb&N7I%4?6107nL^F&u*2CLfF;E9QZaKsQ&WPrRn%ZnNRC^NOe$3n
zs#gy&(71970vS(HLe*X$v3!sX{DffAc_^Epv;1~!5a5GN3kDCF<4n&sC#iyk`lq-R
z&wv>o)jaMS3)Ik)+p<0$ZddQ8K<|fZdXYvKr4$j^Now37RIkUzIW5!fOF^qX{@?ub
zS90+rz|<%L4?h5A8W4#w257EI`{Yw$CV77@T=y}L=WHC3yyA6Uy^^K$h$waR^`&%+
z>v-8VjI38}=TZFDfFkZ)tjax2jM9aOHpLiM)(^KxdyQPLb6bt~
zNX#^AK+kt7wFO7?K2zGAy1%=%x;>}$Gmt%udaCYkkXqZMgrz;gz;7h@e;7RHVn=T$
z1fFzJhgBnJk@Y@Pv;4lgoEwfzDV^gUnG?=t3tgVw65H$NT5uD0DIGeOj$xgcMKGHX
z-=}c&nP0bsb_=^xmGH7^*TmC!plS*b!vE~o1HIZ3`W@vz*N6Hl(UULmuc8(n>n`f$
zpI2a>KIUpsSg1R2wdk!iQ-j^0f;>wuewr*&QxxfBSKc^|%O9gVPpj-ncFGyD$nKm}`
z3>|+~Y4Z%To3|WC?(d)5Vgac<8)l>5w-aKl=4g2RRkJ_KCx|e#jQQ
zRig?o=m}?X0fXuOHhBjyP$G2cCJeT~-8}%=x^CAvD_PT!9!k#7Jn8qma*=Nb=xQ?*
zSG~uDM1*cJ?!K=oT32;Cy&E3eNKw*t2V%p`onmN#ixgp#$fSC<*QCu_&Bm@&8zduS
zz^Hh#(OF2E8W3cl8H4R0Yi>I$(h1!vTK)l>mRP18YN93Jex`^QZFWs2iDQ-7v#+H+
z7(BS}5;JX)%>}=Jo)Em=UIj9t&?4amd9()GF=?V~nuoMmi>bw1V&la>DCQ)Ul7DLg1|f@{w+L|J(*3CV4VRLCl3pw+^)CL|06R0
z%DsMsY?7vD4t*RkC=y=Dj3Ty*+DVny+IIypVmgG#RUp{KNaZo|9^vg01MxJki@Zd-
z32}3MgdO|l03M!Us6XdX6!a#Zr91o!(6b-GJB+4{iA9OAJsj!B=M)xnJh{2Bm&wQC
zG_!VXPYcz1sQ47%Rj{W2XanbFSp4TozCN0P89s*y)rGTU=*3m4F8q(RKAq%>GG+}A
z_)!QzJ^ajJ%vqeCMJL4YS=tP7IT2O#X%H}(5$$yjcT=lz7?YnvS&Ln=w<9v~mgy>*
zpH`5#z+jT);_?yeXql@XUSy&{Ghk$WPO1Rdx3NjT)+#CAajdp2`yYIAo*o$EDx=2{
zQ2#zRtG>=cTeSL?Yy8IvD`wP{Rs$gIblV`mzrVSLW7)UE$Lt=&?_R?*oB~SElCSk%
zLM18E%bGU_fsEV`%9T5lx|U_=ks>@v$(ykyvJLB^$FrzX`MQ`?NcM23Wkf*Lh}DqBF6KI{<;kl~ORCkMjzPf*q4W
zXOh9iWr;-?AdbngJ#H%=Hbzh~dI@7b1C~_>j6TgLeJx6g^I8Z=Qs1}Q*n|Uas}h1*
zPvg;xoJZ^YDptYCslATW6GZ4J%=%rhB-S@e4e7`j6@VJgCd?_NNQS&F~M6Hq35
zNg)zCWaOE|ww>5nVE*90sKG&?i3#2|!QTfVF>m(wWOl)QFdpp}>8)zlhO&9gTV%3(
zdGa*^{WG?)=d(9OiQq2>MVN0@R|z41Q(Ke<56`~rrl8*|xo9|m-``oVD`g+L23
zO`ddE2|ji1aVaOUUvGQ*pjSju?I3%k_bufgp(EE8wqrHZeu6WvI&P~-Ny};vo`5qo
zW2fKFy40&QdFeN3|{p
zd!s?G2~6|iYg~j6k)P|h3Q6J5AG$vkCEQ1%%y~+PFJi9qv7N7O_e&c6wZS5(o4~
zZ~-K!<0I_L51YQ!3=sSKqXv%FOmbA7=Z^Q}N&s&c3tPceiZWdaL==&_cF_6LUT?yE
zCEHKEe9=0RTW;VHvGCns`q&zmU_;=a4mS}99mOm+rLi&uFN~%@B>z$e>&*;NM9xK?L1J*Aw!1Q|7N((v
z^xThE9p^L^$Ceg!IbVXPeWTyhSD
z!Sz{K>g0Wn)O#3sY;@IDb6v_0V8jPh;vcx=<^R?Qvr@>oLZ|Z10P32AfG#B{aW&-B
zH!1^0Cvy001cJe5c!F(7MID-a6zbT$9k|MFRjP@*-`a
zOQDkh!B?7Q$z?d0|Cuk#128^B=X!MNuc`hM0evTvjhVqN4kJczG5Y!FucZ@!S09NX
zv|!Th3vawll(AIP-ZszaC{GVB>W7?{nfKQvTSggHEoo?4Jac{k0hsElS#3LvC{a2r
zuL1{rCPQ**<3C!?RLt_4;-@qNY{wHheBA%>a-0*RZx5R>9t3s9H3!u>+x^%<=ha0c
zNOn})l3RPfG_#dfcG3gzRep->Rmt^y)kNLqWv_}R;d5^$nytzw)o-K
z;4h3Xp*P95AuVy5h1sW%6bVyQU%s!enEfCmw^SfSnd#5kjVcRfumX+CaR&{-U@#5n
zBGRD^5a^FJ!)|tG@c>^kQ~nEMPq)`t_~~s1Y4Dqza?$*`t)`ojHpRD%{7@;kLHjq|1pOKw(OK2pw`e(E7GtDbf?j
z@kJu=E6rpr13P#t1>
zh`)m6qn*~*_|0lL53|OnGnf(#Ku-Y&?!pl3vZ%GynF0y5wNBpb5jU<1Frx9NoU-G(
z?@&h8O1v8e1@3WaZiKsEVuft0(ez6kr722p$!DO9eA7z2F){YziO%&c$aAPe_&(~X
zx>H+L9(3)n?5j?uJ{JRYQeZa1+?KF#+++dK_+bP9Cf%XxQhLOByx!Z|BVU_Q8p=hC
zn}$Y$!?87O`I&88gXk;*kzhvhmNxHqjqcwTF`Ubcd6@t3Yb=ToWmk>3sIr<}fZm46
z0j{i=bp8AkX?}eu*WY^hY*Co)b}ZqqnxX4p9THTlmRS{7=x$vNcJ;S|`d#SLnpU4-
z0jwCrrBFIjJdlGrI>?J|7F0g5;27;E8QnnwdGfC%!>e)~SB%t8R9U61MMgaoy@N`P
zq~4<6I*+fUDrjn{kUv3V$F$qRnN#|7_pxx(zjxCWj(K%*rNGOe9iP@-1;@W
z?i*fC(-mDo!3K}T=kU3-`j@}-iQmZ_lic?j+tS|khNj;#ahf&K(-qScH1@=oI}T*`
zfB#XnB&cKx8&$^^d;slp)i(gG`gsJhOgeT=RW-9S<19zi`O!9B>K6{{C^~VkrCh!@zsm05kwZOq``5sQ7eBwFX2O^W8qGn_46hRp$)_L$Lj!
z?Bj3Nfs2aUnroak5h}%zj)k8|^bgIU6LA(y+kK9vr;+k$4YBU8%pqBaX^$L@J6ECq
z{S}><;4iPIKcfbhcL&*^x*5gmS`MOSB=|s_@+_8~QI-5QK>&MWG}veFGm$n+?H4YL
zP@LL@A@X4_g2&)e9qR9o8t3#h2W~))
z!}WZ>pO)z`so-@1k4MEutA6y9vxB6!Sf7EKR;W5~WxKIUe5psJzW9A66=fs6-a+6Fs
zdIkC?F2VcL|Ejp23odQ;g?*&|3?q9V45#`ZfZU9c5RaeSvx`6(pOW2dC4(t05QE{~F2~)O
z52`s7#ERAj7jXJxClcc`fP0%)ObNE>jd5bP3e%-hyr$-HH#$u2tjoflQjt@U`1my2(7J+i?Qd8gnHlp{wV}Q+NY{vde8t*w&XgZq1Kqz#jappX{+n^i;9Gz}
z8xAUO{2(=t`(6xfkN1D#2uGIe5ag9dh_Le*-CDDJL2;BWY{<-bWEm{%fR`rU`ZQS6
z7kA0bj)mO__m+=2NhWO)h+5-2Z%xX!sW4(xs)4xwTeZN}>THCDHhy%-2-6$
z9eh3wMlsJ{)@dqNZ+o`USZI80D0CDNsLq|etsXt9!PqIv58(S~^)ci}gEYh1=C^lW
yOgO}+!gR+xN3=J*pRaQTeik99C%GeCRyY>Ne!sA>m@?S27= d.grade and on_duty then
+ return true
+ end
+ end
+
+ elseif Config.Framework == 'qbcore' then
+ for c, d in pairs(door_perms_data.job) do
+ if (JobData.name == d.name and JobData.grade.level >= d.grade and on_duty) or (GangData.name == d.name and GangData.grade.level >= d.grade) then
+ return true
+ end
+ end
+
+ elseif Config.Framework == 'vrp' then
+ return Callback('check_door_perms_vrp', door_perms_data.job)
+
+ elseif Config.Framework == 'other' then
+ --add your own permissions check here (boolean).
+ return true
+ end
+ end
+ if Config.DoorAccessPerms.Identifiers or Config.DoorAccessPerms.AcePerms or Config.DoorAccessPerms.Discord or Config.DoorAccessPerms.Items then
+ if (door_perms_data.identifier and #door_perms_data.identifier > 0) or (door_perms_data.ace and #door_perms_data.ace > 0) or (door_perms_data.discord and #door_perms_data.discord > 0) or (door_perms_data.items and #door_perms_data.items > 0) then
+ return Callback('check_door_perms_all', door_perms_data)
+ end
+ end
+
+ return false
+end
+
+function CheckAdminPerms()
+ return Callback('check_admin_perms')
+end
+
+
+--██╗ ██╗███████╗██╗ ██╗███████╗ █████╗ ███╗ ██╗██████╗ ██████╗ ██████╗ ███╗ ███╗███╗ ███╗ █████╗ ███╗ ██╗██████╗ ███████╗
+--██║ ██╔╝██╔════╝╚██╗ ██╔╝██╔════╝ ██╔══██╗████╗ ██║██╔══██╗ ██╔════╝██╔═══██╗████╗ ████║████╗ ████║██╔══██╗████╗ ██║██╔══██╗██╔════╝
+--█████╔╝ █████╗ ╚████╔╝ ███████╗ ███████║██╔██╗ ██║██║ ██║ ██║ ██║ ██║██╔████╔██║██╔████╔██║███████║██╔██╗ ██║██║ ██║███████╗
+--██╔═██╗ ██╔══╝ ╚██╔╝ ╚════██║ ██╔══██║██║╚██╗██║██║ ██║ ██║ ██║ ██║██║╚██╔╝██║██║╚██╔╝██║██╔══██║██║╚██╗██║██║ ██║╚════██║
+--██║ ██╗███████╗ ██║ ███████║ ██║ ██║██║ ╚████║██████╔╝ ╚██████╗╚██████╔╝██║ ╚═╝ ██║██║ ╚═╝ ██║██║ ██║██║ ╚████║██████╔╝███████║
+--╚═╝ ╚═╝╚══════╝ ╚═╝ ╚══════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═════╝ ╚══════╝
+
+
+TriggerEvent('chat:addSuggestion', '/'..Config.OpenDoorMenu.command, L('command_opendoormenu'))
+RegisterCommand(Config.OpenDoorMenu.command, function()
+ TriggerEvent('cd_doorlock:OpenDoorLockMenu')
+end)
+
+RegisterKeyMapping(Config.ToggleDoorLock.command, L('command_toggledoorlock'), 'keyboard', Config.ToggleDoorLock.key)
+TriggerEvent('chat:addSuggestion', '/'..Config.ToggleDoorLock.command, L('command_toggledoorlock'))
+RegisterCommand(Config.ToggleDoorLock.command, function()
+ TriggerEvent('cd_doorlock:ToggleDoorState')
+end)
+
+
+-- ██╗ ██████╗ ██████╗██╗ ██╗██████╗ ██╗ ██████╗██╗ ██╗██╗███╗ ██╗ ██████╗
+-- ██║ ██╔═══██╗██╔════╝██║ ██╔╝██╔══██╗██║██╔════╝██║ ██╔╝██║████╗ ██║██╔════╝
+-- ██║ ██║ ██║██║ █████╔╝ ██████╔╝██║██║ █████╔╝ ██║██╔██╗ ██║██║ ███╗
+-- ██║ ██║ ██║██║ ██╔═██╗ ██╔═══╝ ██║██║ ██╔═██╗ ██║██║╚██╗██║██║ ██║
+-- ███████╗╚██████╔╝╚██████╗██║ ██╗██║ ██║╚██████╗██║ ██╗██║██║ ╚████║╚██████╔╝
+-- ╚══════╝ ╚═════╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝ ╚═════╝
+
+
+function StartLockpicking()
+ if math.random(1, 100) <= Config.LockpickItems.police_alert_chance then
+ PoliceDispatchAlert()
+ end
+
+ if GetResourceState('cd_keymaster') == 'started' then
+ local result = exports['cd_keymaster']:StartKeyMaster()
+ return result
+ else
+ --Add your own lockpick/minigame here. You must return a boolean (true or false).
+ print('^1You must configure a lockpick/minigame resource to use this feature.^0')
+ return false
+ end
+end
+
+function PoliceDispatchAlert()
+ if GetResourceState('cd_dispatch') == 'started' then
+ local data = exports['cd_dispatch']:GetPlayerInfo()
+ TriggerServerEvent('cd_dispatch:AddNotification', {
+ job_table = {'police', },
+ coords = data.coords,
+ title = '10-15 - Lock picking',
+ message = 'A '..data.sex..' is lock picking a door at '..data.street,
+ flash = 0,
+ unique_id = data.unique_id,
+ sound = 1,
+ blip = {
+ sprite = 431,
+ scale = 1.2,
+ colour = 3,
+ flashes = false,
+ text = '911 - Lock picking',
+ time = 5,
+ radius = 0,
+ }
+ })
+ else
+ --Add your own police dispatch alert here.
+ print('^1You must configure a dispatch resource to use this feature.^0')
+ end
+end
+
+
+--███╗ ██╗ ██████╗ ████████╗██╗███████╗██╗ ██████╗ █████╗ ████████╗██╗ ██████╗ ███╗ ██╗███████╗
+--████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██║██╔════╝██╔══██╗╚══██╔══╝██║██╔═══██╗████╗ ██║██╔════╝
+--██╔██╗ ██║██║ ██║ ██║ ██║█████╗ ██║██║ ███████║ ██║ ██║██║ ██║██╔██╗ ██║███████╗
+--██║╚██╗██║██║ ██║ ██║ ██║██╔══╝ ██║██║ ██╔══██║ ██║ ██║██║ ██║██║╚██╗██║╚════██║
+--██║ ╚████║╚██████╔╝ ██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║╚██████╔╝██║ ╚████║███████║
+--╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝
+
+
+function Notification(notif_type, message)
+ if notif_type and message then
+ if Config.Notification == 'esx' then
+ ESX.ShowNotification(message)
+
+ elseif Config.Notification == 'qbcore' then
+ if notif_type == 1 then
+ QBCore.Functions.Notify(message, 'success')
+ elseif notif_type == 2 then
+ QBCore.Functions.Notify(message, 'primary')
+ elseif notif_type == 3 then
+ QBCore.Functions.Notify(message, 'error')
+ end
+
+ elseif Config.Notification == 'cd_notifications' then
+ if notif_type == 1 then
+ TriggerEvent('cd_notifications:Add', {title = L('doorlock'), message = message, type = 'success', options = {duration = 5}})
+ elseif notif_type == 2 then
+ TriggerEvent('cd_notifications:Add', {title = L('doorlock'), message = message, type = 'inform', options = {duration = 5}})
+ elseif notif_type == 3 then
+ TriggerEvent('cd_notifications:Add', {title = L('doorlock'), message = message, type = 'error', options = {duration = 5}})
+ end
+
+ elseif Config.Notification == 'okokNotify' then
+ if notif_type == 1 then
+ exports['okokNotify']:Alert(L('doorlock'), message, 5000, 'success')
+ elseif notif_type == 2 then
+ exports['okokNotify']:Alert(L('doorlock'), message, 5000, 'info')
+ elseif notif_type == 3 then
+ exports['okokNotify']:Alert(L('doorlock'), message, 5000, 'error')
+ end
+
+ elseif Config.Notification == 'ps-ui' then
+ if notif_type == 1 then
+ exports['ps-ui']:Notify(message, 'success', 5000)
+ elseif notif_type == 2 then
+ exports['ps-ui']:Notify(message, 'primary', 5000)
+ elseif notif_type == 3 then
+ exports['ps-ui']:Notify(message, 'error', 5000)
+ end
+
+ elseif Config.Notification == 'ox_lib' then
+ if notif_type == 1 then
+ lib.notify({title = L('doorlock'), description = message, type = 'success'})
+ elseif notif_type == 2 then
+ lib.notify({title = L('doorlock'), description = message, type = 'inform'})
+ elseif notif_type == 3 then
+ lib.notify({title = L('doorlock'), description = message, type = 'error'})
+ end
+
+ elseif Config.Notification == 'chat' then
+ TriggerEvent('chatMessage', message)
+
+ elseif Config.Notification == 'other' then
+ --add your own notification.
+
+ end
+ end
+end
+
+
+--██████╗ ███████╗██████╗ ██╗ ██╗ ██████╗
+--██╔══██╗██╔════╝██╔══██╗██║ ██║██╔════╝
+--██║ ██║█████╗ ██████╔╝██║ ██║██║ ███╗
+--██║ ██║██╔══╝ ██╔══██╗██║ ██║██║ ██║
+--██████╔╝███████╗██████╔╝╚██████╔╝╚██████╔╝
+--╚═════╝ ╚══════╝╚═════╝ ╚═════╝ ╚═════╝
+
+
+if Config.Debug then
+ local function Debug()
+ print('^6-----------------------^0')
+ print('^1CODESIGN DEBUG^0')
+ print(string.format('^6Resource Name:^0 %s', GetCurrentResourceName()))
+ print(string.format('^6Framework:^0 %s', Config.Framework))
+ print(string.format('^6Notification:^0 %s', Config.Notification))
+ print(string.format('^6Language:^0 %s', Config.Language))
+ if Config.Framework == 'esx' then
+ while JobData.name == nil do Wait(0) end
+ print(string.format('^6Job Name:^0 %s', JobData.name))
+ print(string.format('^6Job Grade:^0 %s', JobData.grade))
+ elseif Config.Framework == 'qbcore' then
+ while JobData.name == nil do Wait(0) end
+ print(string.format('^6Job Name:^0 %s', JobData.name))
+ print(string.format('^6Job Grade:^0 %s', JobData.grade.level))
+ print(string.format('^6Gang Name:^0 %s', GangData.name))
+ print(string.format('^6Gang Grade:^0 %s', GangData.grade.level))
+ end
+ print(string.format('^6Use Framework Duty System:^0 %s', Config.UseFrameworkDutySystem))
+ print(string.format('^6On Duty:^0 %s', on_duty))
+ print(string.format('^6Config.AdminAccess: [Framework: ^0%s^6] [Identifiers: ^0%s^6] [AcePerms: ^0%s^6] [Discord: ^0%s^6]', Config.AdminAccess.Framework.ENABLE, Config.AdminAccess.Identifiers.ENABLE, Config.AdminAccess.AcePerms.ENABLE, Config.AdminAccess.Discord.ENABLE))
+ print(string.format('^6Config.DoorAccessPerms: [Framework: ^0%s^6] [Identifiers: ^0%s^6] [AcePerms: ^0%s^6] [Discord: ^0%s^6] [Items: ^0%s^6]', Config.DoorAccessPerms.Framework, Config.DoorAccessPerms.Identifiers, Config.DoorAccessPerms.AcePerms, Config.DoorAccessPerms.Discord, Config.DoorAccessPerms.Items))
+ print(string.format('^6Admin Access:^0 %s', CheckAdminPerms()))
+ print('^6-----------------------^0')
+ TriggerServerEvent('cd_doorlock:Debug')
+ end
+
+ CreateThread(function()
+ Wait(3000)
+ Debug()
+ end)
+
+ RegisterCommand('debug_doorlock', function()
+ Debug()
+ end)
+end
\ No newline at end of file
diff --git a/resources/cd_doorlock/configs/config.lua b/resources/cd_doorlock/configs/config.lua
new file mode 100644
index 000000000..158ec5eaa
--- /dev/null
+++ b/resources/cd_doorlock/configs/config.lua
@@ -0,0 +1,198 @@
+Config = {}
+function L(cd) if Locales[Config.Language][cd] then return Locales[Config.Language][cd] else print('Locale is nil ('..cd..')') end end
+--███████╗██████╗ █████╗ ███╗ ███╗███████╗██╗ ██╗ ██████╗ ██████╗ ██╗ ██╗
+--██╔════╝██╔══██╗██╔══██╗████╗ ████║██╔════╝██║ ██║██╔═══██╗██╔══██╗██║ ██╔╝
+--█████╗ ██████╔╝███████║██╔████╔██║█████╗ ██║ █╗ ██║██║ ██║██████╔╝█████╔╝
+--██╔══╝ ██╔══██╗██╔══██║██║╚██╔╝██║██╔══╝ ██║███╗██║██║ ██║██╔══██╗██╔═██╗
+--██║ ██║ ██║██║ ██║██║ ╚═╝ ██║███████╗╚███╔███╔╝╚██████╔╝██║ ██║██║ ██╗
+--╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚══╝╚══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
+
+
+--WHAT DOES 'auto_detect' DO?
+--The 'auto_detect' feature automatically identifies your framework and notification resource and applies the appropriate default settings.
+
+Config.Framework = 'auto_detect' --[ 'auto_detect' / 'other' ] If you select 'auto_detect', only ESX, QBCore, vRP and Standalone frameworks will be detected. Use 'other' for custom frameworks.
+Config.Notification = 'auto_detect' --[ 'auto_detect' / 'other' ] If you select 'auto_detect', only ESX, QBCore, cd_notifications, okokNotify, ps-ui and ox_lib notifications will be detected. Use 'other' for custom notification resources.
+Config.Language = 'EN' --[ 'EN' / 'DE' / 'NL' ] You can add your own locales to Locales.lua, but be sure to update the Config.Language to match it.
+
+Config.FrameworkTriggers = {
+ esx = { --If you have modified the default event names in the es_extended resource, change them here.
+ resource_name = 'es_extended',
+ main = 'esx:getSharedObject',
+ load = 'esx:playerLoaded',
+ job = 'esx:setJob'
+ },
+ qbcore = { --If you have modified the default event names in the qb-core resource, change them here.
+ resource_name = 'qb-core',
+ main = 'QBCore:GetObject',
+ load = 'QBCore:Client:OnPlayerLoaded',
+ job = 'QBCore:Client:OnJobUpdate',
+ gang = 'QBCore:Client:OnGangUpdate',
+ duty = 'QBCore:Client:SetDuty'
+ }
+}
+
+
+--██╗███╗ ███╗██████╗ ██████╗ ██████╗ ████████╗ █████╗ ███╗ ██╗████████╗
+--██║████╗ ████║██╔══██╗██╔═══██╗██╔══██╗╚══██╔══╝██╔══██╗████╗ ██║╚══██╔══╝
+--██║██╔████╔██║██████╔╝██║ ██║██████╔╝ ██║ ███████║██╔██╗ ██║ ██║
+--██║██║╚██╔╝██║██╔═══╝ ██║ ██║██╔══██╗ ██║ ██╔══██║██║╚██╗██║ ██║
+--██║██║ ╚═╝ ██║██║ ╚██████╔╝██║ ██║ ██║ ██║ ██║██║ ╚████║ ██║
+--╚═╝╚═╝ ╚═╝╚═╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═╝
+
+
+Config.Debug = false --To enable debug prints.
+Config.UseFrameworkDutySystem = false --Do you want to use your frameworks (esx/qbcore) built-in duty system?
+
+
+--███╗ ███╗ █████╗ ██╗███╗ ██╗
+--████╗ ████║██╔══██╗██║████╗ ██║
+--██╔████╔██║███████║██║██╔██╗ ██║
+--██║╚██╔╝██║██╔══██║██║██║╚██╗██║
+--██║ ╚═╝ ██║██║ ██║██║██║ ╚████║
+--╚═╝ ╚═╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝
+
+
+Config.AdminAccess = { --A list of different methods where you can define which players have admin permissions to create/edit/delete/import doors on the in-game UI.
+ Framework = { --(ESX, QBcore & vRP only!) Ignore this framework section if you don't use a framework.
+ ['esx'] = {'superadmin', 'admin', },
+ ['qbcore'] = {'god', 'admin', },
+ ['vrp'] = {5, 6, 7, 8, 9, 10, }
+ },
+
+ Identifiers = {
+ ENABLE = true, --Do you want to allow players with specific fivem identifiers to use the admin features?
+ identifier_list = {'steam:xxxxx', 'license:xxxxx', 'fivem:xxxxx', }, --You can use a players steam, license or fivem id etc.
+ },
+
+ AcePerms = {
+ ENABLE = true, --Do you want to allow players with specific ace perms to use the admin features?
+ aceperms_list = {'doorlock.police', }, --Make sure you have your ace perms configured correctly in your server.cfg.
+ },
+
+ Discord = { --(REQUIRES Badger Discord API).
+ ENABLE = true, --Do you want to allow players with specific discord roles in your discord to use the admin features?
+ discord_list = {'xxxxx', 'xxxxx', }, --You must put the role id from your discord here (https://www.itgeared.com/how-to-get-role-id-on-discord).
+ }
+}
+
+
+Config.DoorAccessPerms = { --When creating/editing/deleting/importing doors, you always need to define which permission groups can lock/unlock these doors. Here you can choose which perms options are available to choose from on the in-game UI.
+ Identifiers = true, --Do you want to allow players to use doors based on their fivem identifiers? (license,steam,fivem etc)
+ AcePerms = true, --Do you want to allow players to use doors based on their ace perms?
+ Discord = true, --(REQUIRES Badger Discord API). Do you want to allow players to use doors based on their discord roles?
+ Items = true --(REQUIRES ESX/QBCore). Do you want to allow players to use doors based on the items they have in their inventory?
+}
+
+
+Config.DoorStateDisplay = {
+ DrawTextUI = true, --Do you want doors to display the lock/unlock state via the built in draw text UI?
+ Emojis = true, --Do you want doors to display the lock/unlock state via emojis?
+ Draw3DText = false, --Do you want doors to display the lock/unlock state via draw 3d text UI?
+ Notification = true --Do you want a notification to show after a door is locked/unlocked?
+}
+
+Config.LockpickItems = {
+ ENABLE = true, --(ESX & QBcore only!) Do you want to require a playern to have an item in their inventory to lockpick a door?
+ usable_lockpick_item = true, --In addition to pressing E to lockpick a door, do you want to allow players to use a usable lockpick item from their inventory?
+ police_alert_chance = 50, --(0 = 0% chance, 100 = 100% chance) When a player is lockpicking a door, there is a chance that the police will be alerted. This is the percentage chance of this happening.
+ lockpick_items = { --Having at least 1 of these items in your inventory will allow a player to lockpick a door.
+ 'lockpick',
+ 'advanced_lockpick',
+ --'add_more_here',
+ }
+}
+
+
+--██╗ ██╗███████╗██╗ ██╗███████╗ █████╗ ███╗ ██╗██████╗ ██████╗ ██████╗ ███╗ ███╗███╗ ███╗ █████╗ ███╗ ██╗██████╗ ███████╗
+--██║ ██╔╝██╔════╝╚██╗ ██╔╝██╔════╝ ██╔══██╗████╗ ██║██╔══██╗ ██╔════╝██╔═══██╗████╗ ████║████╗ ████║██╔══██╗████╗ ██║██╔══██╗██╔════╝
+--█████╔╝ █████╗ ╚████╔╝ ███████╗ ███████║██╔██╗ ██║██║ ██║ ██║ ██║ ██║██╔████╔██║██╔████╔██║███████║██╔██╗ ██║██║ ██║███████╗
+--██╔═██╗ ██╔══╝ ╚██╔╝ ╚════██║ ██╔══██║██║╚██╗██║██║ ██║ ██║ ██║ ██║██║╚██╔╝██║██║╚██╔╝██║██╔══██║██║╚██╗██║██║ ██║╚════██║
+--██║ ██╗███████╗ ██║ ███████║ ██║ ██║██║ ╚████║██████╔╝ ╚██████╗╚██████╔╝██║ ╚═╝ ██║██║ ╚═╝ ██║██║ ██║██║ ╚████║██████╔╝███████║
+--╚═╝ ╚═╝╚══════╝ ╚═╝ ╚══════╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚═════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═════╝ ╚══════╝
+
+
+Config.OpenDoorMenu = {
+ ENABLE = true, --Do you want to allow player's open the door lock UI?
+ command = 'doorlockui' --The chat command.
+}
+
+Config.ToggleDoorLock = {
+ ENABLE = true, --Do you want to allow player's to toggle door locks?
+ command = 'doorlock', --The chat command.
+ key = 'e' --The keypress.
+}
+
+
+-- ██████╗ ████████╗██╗ ██╗███████╗██████╗
+--██╔═══██╗╚══██╔══╝██║ ██║██╔════╝██╔══██╗
+--██║ ██║ ██║ ███████║█████╗ ██████╔╝
+--██║ ██║ ██║ ██╔══██║██╔══╝ ██╔══██╗
+--╚██████╔╝ ██║ ██║ ██║███████╗██║ ██║
+-- ╚═════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
+
+
+function Round(cd) return math.floor(cd+0.5) end
+function Trim(cd) return cd:gsub('%s+', '') end
+
+
+-- █████╗ ██╗ ██╗████████╗ ██████╗ ██████╗ ███████╗████████╗███████╗ ██████╗████████╗
+--██╔══██╗██║ ██║╚══██╔══╝██╔═══██╗ ██╔══██╗██╔════╝╚══██╔══╝██╔════╝██╔════╝╚══██╔══╝
+--███████║██║ ██║ ██║ ██║ ██║ ██║ ██║█████╗ ██║ █████╗ ██║ ██║
+--██╔══██║██║ ██║ ██║ ██║ ██║ ██║ ██║██╔══╝ ██║ ██╔══╝ ██║ ██║
+--██║ ██║╚██████╔╝ ██║ ╚██████╔╝ ██████╔╝███████╗ ██║ ███████╗╚██████╗ ██║
+--╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝ ╚═╝ ╚══════╝ ╚═════╝ ╚═╝
+
+
+-----DO NOT TOUCH ANYTHING BELOW THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING.-----
+if Config.Framework == 'auto_detect' then
+ if GetResourceState(Config.FrameworkTriggers.esx.resource_name) == 'started' then
+ Config.Framework = 'esx'
+ elseif GetResourceState(Config.FrameworkTriggers.qbcore.resource_name) == 'started' then
+ Config.Framework = 'qbcore'
+ elseif GetResourceState('vrp') == 'started' then
+ Config.Framework = 'vrp'
+ else
+ Config.Framework = 'standalone'
+ end
+ if Config.Framework == 'esx' or Config.Framework == 'qbcore' then
+ for c, d in pairs(Config.FrameworkTriggers[Config.Framework]) do
+ Config.FrameworkTriggers[c] = d
+ end
+ Config.FrameworkTriggers.esx, Config.FrameworkTriggers.qbcore = nil, nil
+ end
+end
+
+if Config.Notification == 'auto_detect' then
+ if GetResourceState('cd_notifications') == 'started' then
+ Config.Notification = 'cd_notifications'
+ elseif GetResourceState('okokNotify') == 'started' then
+ Config.Notification = 'okokNotify'
+ elseif GetResourceState('ps-ui') == 'started' then
+ Config.Notification = 'ps-ui'
+ elseif GetResourceState('ox_lib') == 'started' then
+ Config.Notification = 'ox_lib'
+ else
+ if Config.Framework == 'esx' or Config.Framework == 'qbcore' then
+ Config.Notification = Config.Framework
+ else
+ Config.Notification = 'chat'
+ end
+ end
+end
+
+if GetResourceState('Badger_Discord_API') ~= 'started' then
+ Config.AdminAccess.Discord.ENABLE = false
+ Config.DoorAccessPerms.Discord = false
+end
+
+if Config.Framework == 'esx' or Config.Framework == 'qbcore' or Config.Framework == 'other' then
+ Config.AdminAccess.Framework.ENABLE = true
+ Config.DoorAccessPerms.Framework = true
+else
+ Config.AdminAccess.Framework.ENABLE = false
+ Config.DoorAccessPerms.Framework = false
+ Config.LockpickItems.ENABLE = false
+ Config.DoorAccessPerms.Items = false
+end
+-----DO NOT TOUCH ANYTHING ABOVE THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING.-----
\ No newline at end of file
diff --git a/resources/cd_doorlock/configs/config_ui.js b/resources/cd_doorlock/configs/config_ui.js
new file mode 100644
index 000000000..e34a1308b
--- /dev/null
+++ b/resources/cd_doorlock/configs/config_ui.js
@@ -0,0 +1,13 @@
+window['config'] = {
+ "door_name_max_length": 32,
+ "door_name_match": new RegExp(/[^a-zA-Z-\/\s\\0-9]/guis),
+
+ "door_passcode_max_length": 8,
+
+ "job_name_max_length": 32,
+ "job_name_match": new RegExp(/[^a-zA-Z0-9]/guis),
+
+ "job_grade_max": 16,
+
+ "identifier_max_length": 64
+}
\ No newline at end of file
diff --git a/resources/cd_doorlock/configs/locales.lua b/resources/cd_doorlock/configs/locales.lua
new file mode 100644
index 000000000..b73cf12ee
--- /dev/null
+++ b/resources/cd_doorlock/configs/locales.lua
@@ -0,0 +1,101 @@
+Locales = {
+ ['EN'] = { --english
+ ['data_not_cached'] = 'Please try again in a few seconds...',
+ ['camera_unavailable'] = 'Camera unavailable. Try again when you are closer to the door',
+ ['door_locked'] = 'Door locked',
+ ['door_unlocked'] = 'Door unlocked',
+ ['webhook_message_1'] = '**Player Info**\nSource: **%s**\nPlayer Name: **%s**\nIdentifier: **%s**\n\n**Door Data**\nLocation Group: **%s**\nDoor Name: **%s**\nDoor Type: **%s**',
+ ['webhook_message_2'] = '**Player Info**\nSource: **%s**\nPlayer Name: **%s**\nIdentifier: **%s**\n\n**Import File Data**\nFile Name: **%s**\nDoor Count: **%s**',
+ ['webhook_message_3'] = '**Player Info**\nSource: **%s**\nPlayer Name: **%s**\nIdentifier: **%s**\n\n**Location Group Data**\nGroup Name: **%s**\nDoor Count: **%s**',
+ ['create'] = 'Created New Door',
+ ['delete'] = 'Deleted Door',
+ ['edit'] = 'Edited Door',
+ ['add_import_data'] = 'Added Imported Doors',
+ ['remove_import_data'] = 'Removed Imported Doors',
+ ['remove_full_locationgroup'] = 'Removed Full Location Group Doors',
+ ['bot_name'] = 'Doorlock',
+ ['waypoint_set'] = 'Waypoint Set',
+ ['command_opendoormenu'] = 'Open door lock UI',
+ ['command_toggledoorlock'] = 'Toogle door lock',
+ ['drawtextui_door_locked'] = 'Locked
Press E to unlock',
+ ['drawtextui_door_unlocked'] = 'Unlocked Press E to lock',
+ ['draw3dtext_door_locked'] = 'Press [E] to unlock',
+ ['draw3dtext_door_unlocked'] = 'Press [E] to lock',
+ ['emoji_door_locked'] = '🔒',
+ ['emoji_door_unlocked'] = '🔓',
+ ['lockpick_door_prompt'] = 'Press [E] again to lockpick this door',
+ ['doorlock'] = 'Door Lock',
+ ['missing_lockpick'] = 'You are missing the required lockpick item',
+ ['cant_lockpick_while_in_vehicle'] = 'Get out of the vehicle to lockpick a door',
+ ['cant_lockpick_unlocked_door'] = 'This door is already unlocked',
+ ['door_cant_be_lockpicked'] = 'This door cannot be lockpicked',
+ ['lockdown_group'] = 'This building is currently in lockdown. All dorrs are locked!',
+ ['unlockdown_group'] = 'This building is no longer in lockdown. All doors are unlocked!',
+ },
+
+ ['DE'] = { --german
+ ['data_not_cached'] = 'Versuche es in ein paar Sekunden erneut...',
+ ['camera_unavailable'] = 'Kamera nicht verfügbar, Bitte geh näher zur Tür!',
+ ['door_locked'] = 'Tür Abgeschlossen',
+ ['door_unlocked'] = 'Tür Aufgeschlossen',
+ ['webhook_message_1'] = '**Spieler Info**\nQuelle: **%s**\nSpieler Name: **%s**\nIdentifier: **%s**\n\n**Tür Daten**\nStandort Gruppe: **%s**\nTür Name: **%s**\nTür Typ: **%s**',
+ ['webhook_message_2'] = '**Spieler Info**\nQuelle: **%s**\nSpieler Name: **%s**\nIdentifier: **%s**\n\n**Importierte Daten**\nDatei Name: **%s**\nTür Anzahl: **%s**',
+ ['webhook_message_3'] = '**Spieler Info**\nQuelle: **%s**\nSpieler Name: **%s**\nIdentifier: **%s**\n\n**Standort Gruppen Daten**\nGruppen Name: **%s**\nTür Anzahl: **%s**',
+ ['create'] = 'Neue Tür erstellt',
+ ['delete'] = 'Tür gelöscht',
+ ['edit'] = 'Tür bearbeitet',
+ ['add_import_data'] = 'Importierte Türen hinzugefügt',
+ ['remove_import_data'] = 'Importierte Türen gelöscht',
+ ['remove_full_locationgroup'] = 'Alle Türen für Ort gelöscht',
+ ['bot_name'] = 'Doorlock',
+ ['waypoint_set'] = 'Wegpunkt gesetzt',
+ ['command_opendoormenu'] = 'Öffne Türschloss UI',
+ ['command_toggledoorlock'] = 'Benutze Türschloss',
+ ['drawtextui_door_locked'] = 'Locked Press E to unlock',
+ ['drawtextui_door_unlocked'] = 'Unlocked Press E to lock',
+ ['draw3dtext_door_locked'] = 'Press [E] to unlock',
+ ['draw3dtext_door_unlocked'] = 'Press [E] to lock',
+ ['emoji_door_locked'] = '🔒',
+ ['emoji_door_unlocked'] = '🔓',
+ ['lockpick_door_prompt'] = 'Press [E] again to lockpick this door',
+ ['doorlock'] = 'Door Lock',
+ ['missing_lockpick'] = 'You are missing the required lockpick item',
+ ['cant_lockpick_while_in_vehicle'] = 'Get out of the vehicle to lockpick a door',
+ ['cant_lockpick_unlocked_door'] = 'This door is already unlocked',
+ ['door_cant_be_lockpicked'] = 'This door cannot be lockpicked',
+ ['lockdown_group'] = 'This building is currently in lockdown. All dorrs are locked!',
+ ['unlockdown_group'] = 'This building is no longer in lockdown. All doors are unlocked!',
+ },
+
+ ['NL'] = { --dutch
+ ['data_not_cached'] = 'Probeer het over een paar seconden opnieuw...',
+ ['camera_unavailable'] = 'Camera niet beschikbaar. Probeer het opnieuw wanneer u dichter bij de deur bent',
+ ['door_locked'] = 'Deur op slot',
+ ['door_unlocked'] = 'Deur ontgrendeld',
+ ['webhook_message_1'] = '**Spelerinfo**\nBron: **%s**\nSpelernaam: **%s**\nID: **%s**\n\n**Deurgegevens* *\nLocatiegroep: **%s**\nDeurnaam: **%s**\nDeurtype: **%s**',
+ ['webhook_message_2'] = '**Spelerinfo**\nBron: **%s**\nSpelernaam: **%s**\nID: **%s**\n\n**Bestandsgegevens importeren **\nBestandsnaam: **%s**\nDoor Count: **%s**',
+ ['webhook_message_3'] = '**Spelerinfo**\nBron: **%s**\nSpelernaam: **%s**\nID: **%s**\n\n**Locatiegroepsgegevens **\nGroepsnaam: **%s**\nAantal deuren: **%s**',
+ ['create'] = 'Nieuwe deur gemaakt',
+ ['delete'] = 'Delete Deur',
+ ['edit'] = 'Bewerkte deur',
+ ['add_import_data'] = 'Geïmporteerde deuren toegevoegd',
+ ['remove_import_data'] = 'Geïmporteerde deuren verwijderd',
+ ['remove_full_locationgroup'] = 'Volledige locatiegroepsdeuren verwijderd',
+ ['bot_name'] = 'Deurslot',
+ ['waypoint_set'] = 'Waypoint-set',
+ ['command_opendoormenu'] = 'UI deurslot openen',
+ ['command_toggledoorlock'] = 'Toogle deurslot',
+ ['drawtextui_door_locked'] = 'Vergrendeld Druk op E om te ontgrendelen',
+ ['drawtextui_door_unlocked'] = 'Ontgrendeld Druk op E om te vergrendelen',
+ ['draw3dtext_door_locked'] = 'Druk op [E] om te ontgrendelen',
+ ['draw3dtext_door_unlocked'] = 'Druk op [E] om te vergrendelen',
+ ['emoji_door_locked'] = '🔒',
+ ['emoji_door_unlocked'] = '🔓',
+ ['missing_lockpick'] = 'You are missing the required lockpick item',
+ ['cant_lockpick_while_in_vehicle'] = 'Get out of the vehicle to lockpick a door',
+ ['cant_lockpick_unlocked_door'] = 'This door is already unlocked',
+ ['door_cant_be_lockpicked'] = 'This door cannot be lockpicked',
+ ['lockdown_group'] = 'This building is currently in lockdown. All dorrs are locked!',
+ ['unlockdown_group'] = 'This building is no longer in lockdown. All doors are unlocked!',
+ },
+}
diff --git a/resources/cd_doorlock/configs/locales_ui.js b/resources/cd_doorlock/configs/locales_ui.js
new file mode 100644
index 000000000..c5cb0a3c6
--- /dev/null
+++ b/resources/cd_doorlock/configs/locales_ui.js
@@ -0,0 +1,198 @@
+window['locales'] = {
+ main: {
+ info: "Door management",
+ version: "Doorlock 1.1.0",
+ logo: ``,
+
+ alerts: {
+ door_selected: ["Door", "successfully selected", "Door(s) successfully selected."],
+ door_exists: "This door already exists - ",
+ door_does_not_exist: "This door is not in the system. Please create one first.",
+ },
+ },
+ camera: {
+ move: "Mouse - Move",
+ zoom: "Scroll - Zoom",
+ reverse: "Reverse Camera - Middle mouse",
+ exit: "Right click - Exit"
+ },
+
+ control: {
+ search: "Search for doors",
+ search_placeholder: "Door group or door name",
+ search_by_name: "Search by name",
+ search_by_group: "Search by group",
+ found: ["Found", "result(s)"],
+
+ number: "#",
+ group: "Group",
+ name: "Name",
+ lock: "Lock",
+ unlock: "Unlock",
+ camera: "Camera",
+ visit: "Visit",
+ delete: "Delete",
+ delete_group: "Delete group",
+
+ previous: "Previous",
+ next: "Next"
+ },
+
+ create: {
+ alerts: {
+ name_too_long: "The door name needs to be between 1 and 32 characters",
+ name_out_of_scope: "The name includes illegal characters. (Allowed - Upper and lower case letters, numbers, -, /, ⎵, _)",
+ location_group_not_set: "You need to select a location group!",
+ passcode_length_bad: "The length of the passcode can be from 0 to 8 numbers",
+ passcode_out_of_scope: "The passcode can only have numbers",
+ permissions_not_set: "For doors without a passcode you need to have at least one permission to set-up the door.",
+
+ // Success
+ door_updated: "Door successfully updated.",
+ door_created: "Door successfully created.",
+ },
+
+ state_editing: "Editing",
+ state_create: "Create a door",
+
+ select_a_door: "Select a new door or pick one from the list",
+ door_selection: "Door selection",
+ door_single: "Single door",
+ door_double: "Double door",
+ door_garage: "Garage door",
+ door_gate: "Gate",
+ door_double_gate: "Double gate",
+ door_edit: "Edit selected",
+
+ button_update: "Update",
+ button_submit: "Submit",
+ button_delete: "Delete",
+ button_cancel: "Cancel",
+ button_clear: "Clear",
+
+ all_doors: "All doors",
+ location: "Location",
+
+ copy: "Copy",
+ paste: "Paste",
+
+ form: {
+ alerts: {
+ location_group_has_doors: "Cannot remove a location group with doors attached to it!",
+ location_group_exists: "This group already exists.",
+ job_name_too_long: "The job/gang name needs to be between 1 and 32 characters",
+ job_name_out_of_scope: "The job/gang name includes illegal characters. (Allowed - Upper and lower case letters)",
+ job_grade_nan: "The job/gang grade needs to be a number!",
+ job_grade_too_large: "The job/gang grade needs to be a number between 0 and 16!",
+
+ identifier_too_long: "The identifier needs to be less than 64 characters"
+ },
+
+ helpers: {
+ door_name: "The name which will identify the door",
+ location_group: "A named group which contains doors from the same location. E.g MRPD",
+ location_group_new: "Create new",
+ location_group_select: "Select location group",
+ location_group_none: "No groups",
+ job: "The job/gang name (left), and the job/gang grade (right). E.g. police 0",
+ identifier: "The identifier(s) of people which can access the door controls.",
+ ace: "The ace identifier which will be allowed to access the door.",
+ discord: "The discord role ID which will be allowed to access the door",
+ sound: "The sound which will be played when a door is locked and unlocked.",
+ sound_select: "Select the sound file",
+ locked: "The default state of the door. Ticked = locked",
+ lockpick: "Enables or disabled lockpicking. Ticket = enabled",
+ secret: "If selected the door will not display a lock and remain hidden when approached.",
+ camera: "Enables door camera usability.",
+ passcode: "A passcode which will be used to unlock the door. If there is no passcode set the door will not require it.",
+ distance: "The distance at which the door will become usable.",
+ autolock: "The amount of time in seconds after which the door will automatically lock.",
+ item: "The name of the item which will be allowed to open the door"
+ },
+
+ door_name: "Name",
+ location_group: "Location group",
+ permissions: "Permissions",
+ job: ["Job/gang name", "Grade"],
+ identifier: "Identifier",
+ ace: "Ace",
+ ace_placeholder: "doorlock.police",
+ discord: "Discord",
+ discord_placeholder: "779469416273281035",
+ sound: "Sound",
+ locked: "Locked",
+ lockpick: "Lockpick",
+ secret: "Secret",
+ camera: "Camera",
+ passcode: "Passcode",
+ distance: "Distance",
+ add: "Add",
+ autolock: "Auto lock",
+ item: "Item",
+ item_placeholder: "Item name"
+ },
+
+ selection: {
+ select: ["Press", "LMB", "to select a door"],
+ cancel: ["Press", "RMB", "to cancel selection"],
+ amount_selected: ["You have", "door(s) selected."],
+ }
+ },
+
+ delete: {
+ alerts: {
+ success: "Successfully deleted"
+ },
+ notification: "This action will delete", // ... door name
+ irreversible: "This action is irreversible!",
+ are_you_sure: "Are you sure you want to delete this", // ... door / group
+ yes: "Yes, I am sure!",
+ no: "Cancel",
+
+ type: ["door", "group"]
+ },
+
+ import: {
+ select: "Select to import",
+ select_helper: "Select a GABZ map to import its doors.",
+
+ imported: "Imported",
+ imported_helper: "Remove doors from a GABZ map for unused maps",
+
+ permissions: ["Default permissions", "When importing doors this job / grade will be used as a default.", "When importing doors this identifier will be used as a default."],
+
+
+ job: "Job",
+ grade: "Grade",
+
+ identifier: "Identifier",
+
+ no_permissions: "You need to add at least one permission in order to import doors."
+ },
+
+ navigation: {
+ create_edit: "Create / Edit",
+ control: "Control",
+ import: "Import",
+ settings: "Settings",
+ },
+
+ selector: {
+ icon: `` // from https://icons.getbootstrap.com/
+ },
+
+ settings: {
+ scale: "UI Scale",
+ volume: "Sound volume"
+ },
+
+ permissions: {
+ framework: "Job/gang",
+ identifiers: "Identifier",
+ aceperms: "Ace",
+ discord: "Discord",
+ passcode: "Passcode",
+ items: "Items"
+ }
+
+}
\ No newline at end of file
diff --git a/resources/cd_doorlock/configs/server_customise_me.lua b/resources/cd_doorlock/configs/server_customise_me.lua
new file mode 100644
index 000000000..986d22b7e
--- /dev/null
+++ b/resources/cd_doorlock/configs/server_customise_me.lua
@@ -0,0 +1,464 @@
+--███████╗██████╗ █████╗ ███╗ ███╗███████╗██╗ ██╗ ██████╗ ██████╗ ██╗ ██╗
+--██╔════╝██╔══██╗██╔══██╗████╗ ████║██╔════╝██║ ██║██╔═══██╗██╔══██╗██║ ██╔╝
+--█████╗ ██████╔╝███████║██╔████╔██║█████╗ ██║ █╗ ██║██║ ██║██████╔╝█████╔╝
+--██╔══╝ ██╔══██╗██╔══██║██║╚██╔╝██║██╔══╝ ██║███╗██║██║ ██║██╔══██╗██╔═██╗
+--██║ ██║ ██║██║ ██║██║ ╚═╝ ██║███████╗╚███╔███╔╝╚██████╔╝██║ ██║██║ ██╗
+--╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚══╝╚══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
+
+
+ESX, QBCore, vRP = nil, nil, nil
+
+if Config.Framework == 'esx' then
+ pcall(function() ESX = exports[Config.FrameworkTriggers.resource_name]:getSharedObject() end)
+ if ESX == nil then
+ TriggerEvent(Config.FrameworkTriggers.main, function(obj) ESX = obj end)
+ end
+
+elseif Config.Framework == 'qbcore' then
+ TriggerEvent(Config.FrameworkTriggers.main, function(obj) QBCore = obj end)
+ if QBCore == nil then
+ QBCore = exports[Config.FrameworkTriggers.resource_name]:GetCoreObject()
+ end
+
+elseif Config.Framework == 'vrp' then
+ local Proxy = module('vrp', 'lib/Proxy')
+ vRP = Proxy.getInterface('vRP')
+
+elseif Config.Framework == 'other' then
+ --Add your own code here.
+end
+
+function GetIdentifier(source)
+ if Config.Framework == 'esx' then
+ local xPlayer = ESX.GetPlayerFromId(source)
+ return xPlayer.identifier
+
+ elseif Config.Framework == 'qbcore' then
+ local xPlayer = QBCore.Functions.GetPlayer(source)
+ return xPlayer.PlayerData.citizenid
+
+ elseif Config.Framework == 'vrp' then
+ local user_id = vRP.getUserId({source})
+ return user_id
+
+ elseif Config.Framework == 'standalone' then
+ return GetPlayerIdentifiers(source)[2]
+
+ elseif Config.Framework == 'other' then
+ return GetPlayerIdentifiers(source)[2] --return the players identifier here (string).
+
+ end
+end
+
+
+--██████╗ ███████╗██████╗ ███╗ ███╗███████╗ ██████╗██╗ ██╗███████╗ ██████╗██╗ ██╗███████╗
+--██╔══██╗██╔════╝██╔══██╗████╗ ████║██╔════╝ ██╔════╝██║ ██║██╔════╝██╔════╝██║ ██╔╝██╔════╝
+--██████╔╝█████╗ ██████╔╝██╔████╔██║███████╗ ██║ ███████║█████╗ ██║ █████╔╝ ███████╗
+--██╔═══╝ ██╔══╝ ██╔══██╗██║╚██╔╝██║╚════██║ ██║ ██╔══██║██╔══╝ ██║ ██╔═██╗ ╚════██║
+--██║ ███████╗██║ ██║██║ ╚═╝ ██║███████║ ╚██████╗██║ ██║███████╗╚██████╗██║ ██╗███████║
+--╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝ ╚═════╝╚═╝ ╚═╝╚══════╝ ╚═════╝╚═╝ ╚═╝╚══════╝
+
+
+local function GetAllFivemIdentifiers(source)
+ local temp_table = {}
+ for c, d in pairs(GetPlayerIdentifiers(source)) do
+ temp_table[#temp_table+1] = {full = d, trimmed = d:sub(d:find(':')+1, #d)}
+ end
+ return temp_table
+end
+local function PermsCheck_Identifiers(source, data, perms_type)
+ local identifier = GetIdentifier(source)
+ for c, d in pairs(data) do
+ for cc, dd in pairs(GetAllFivemIdentifiers(source)) do
+ if (dd.full == d:lower()) or (dd.trimmed == d:lower()) then
+ return true
+ end
+ end
+ if (perms_type == 'admin_perms' and Config.AdminAccess.Framework.ENABLE) or (perms_type == 'door_perms' and Config.DoorAccessPerms.Framework) then
+ if d:lower() == identifier:lower() then
+ return true
+ end
+ end
+ end
+ return false
+end
+
+local function PermsCheck_AcePerms(source, data)
+ for c, d in pairs(data) do
+ if IsPlayerAceAllowed(source, d) then
+ return true
+ end
+ end
+ return false
+end
+
+local function GetAllDiscordRoles(source)
+ return exports.Badger_Discord_API:GetDiscordRoles(source)
+end
+local function PermsCheck_Discord(source, data)
+ local discord_roles = GetAllDiscordRoles(source)
+ for c, d in pairs(data) do
+ for cc, dd in pairs(discord_roles) do
+ if d == dd then
+ return true
+ end
+ end
+ end
+ return false
+end
+
+local function PermsCheck_Items(source, data)
+ if Config.Framework == 'esx' then
+ for c, d in pairs(data) do
+ local xPlayer = ESX.GetPlayerFromId(source)
+ local get_item = xPlayer.getInventoryItem(d)
+ if get_item then
+ local count = get_item.count
+ if count > 0 then
+ return true
+ end
+ else
+ E('6034 - ['..d..'] is not a valid item.')
+ end
+ end
+
+ elseif Config.Framework == 'qbcore' then
+ for c, d in pairs(data) do
+ if QBCore.Functions.HasItem(source, d, 1) then
+ return true
+ end
+ end
+
+ elseif Config.Framework == 'other' then
+ --add your own framework item checks here.
+ end
+
+ if GetResourceState('ox_inventory') == 'started' then
+ for c, d in pairs(data) do
+ if exports.ox_inventory:GetItem(source, d, false, true) >= 1 then
+ return true
+ end
+ end
+ end
+ return false
+end
+
+function CheckAdminPerms(source)
+ if Config.AdminAccess.Framework.ENABLE then
+ if Config.Framework == 'esx' then
+ local perms = ESX.GetPlayerFromId(source).getGroup()
+ for c, d in pairs(Config.AdminAccess.Framework[Config.Framework]) do
+ if perms == d then
+ return true
+ end
+ end
+ elseif Config.Framework == 'qbcore' then
+ local perms = QBCore.Functions.GetPermission(source)
+ for c, d in pairs(Config.AdminAccess.Framework[Config.Framework]) do
+ if type(perms) == 'string' then
+ if perms == d then
+ return true
+ end
+ elseif type(perms) == 'table' then
+ if perms[d] then
+ return true
+ end
+ end
+ end
+ elseif Config.Framework == 'vrp' then
+ local perms = vRP.getUserAdminLevel(vRP.getUserId({source}))
+ for c, d in pairs(Config.AdminAccess.Framework[Config.Framework]) do
+ if perms == d then
+ return true
+ end
+ end
+ elseif Config.Framework == 'other' then
+ --Add your own permissions check here (boolean).
+ return true
+ end
+ end
+ if Config.AdminAccess.Identifiers.ENABLE then
+ local perms = PermsCheck_Identifiers(source, Config.AdminAccess.Identifiers.identifier_list, 'admin_perms')
+ if perms then return true end
+ end
+ if Config.AdminAccess.AcePerms.ENABLE then
+ local perms = PermsCheck_AcePerms(source, Config.AdminAccess.AcePerms.aceperms_list)
+ if perms then return true end
+ end
+ if Config.AdminAccess.Discord.ENABLE then
+ local perms = PermsCheck_Discord(source, Config.AdminAccess.Discord.discord_list)
+ if perms then return true end
+ end
+ return false
+end
+
+function CheckDoorPerms_All(source, door_perms_data)
+ if Config.DoorAccessPerms.Identifiers and door_perms_data.identifier and #door_perms_data.identifier > 0 then
+ local perms = PermsCheck_Identifiers(source, door_perms_data.identifier, 'door_perms')
+ if perms then return true end
+ end
+ if Config.DoorAccessPerms.AcePerms and door_perms_data.ace and #door_perms_data.ace > 0 then
+ local perms = PermsCheck_AcePerms(source, door_perms_data.ace)
+ if perms then return true end
+ end
+ if Config.DoorAccessPerms.Discord and door_perms_data.discord and #door_perms_data.discord > 0 then
+ local perms = PermsCheck_Discord(source, door_perms_data.discord)
+ if perms then return true end
+ end
+ if Config.DoorAccessPerms.Items and door_perms_data.items and #door_perms_data.items > 0 then
+ local perms = PermsCheck_Items(source, door_perms_data.items)
+ if perms then return true end
+ end
+ return false
+end
+
+
+--██╗ ██████╗ ██████╗██╗ ██╗██████╗ ██╗ ██████╗██╗ ██╗
+--██║ ██╔═══██╗██╔════╝██║ ██╔╝██╔══██╗██║██╔════╝██║ ██╔╝
+--██║ ██║ ██║██║ █████╔╝ ██████╔╝██║██║ █████╔╝
+--██║ ██║ ██║██║ ██╔═██╗ ██╔═══╝ ██║██║ ██╔═██╗
+--███████╗╚██████╔╝╚██████╗██║ ██╗██║ ██║╚██████╗██║ ██╗
+--╚══════╝ ╚═════╝ ╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝
+
+
+if Config.LockpickItems.ENABLE and Config.LockpickItems.usable_lockpick_item then
+ for c, d in pairs(Config.LockpickItems.lockpick_items) do
+ if Config.Framework == 'esx' then
+ ESX.RegisterUsableItem(d, function(source)
+ TriggerClientEvent('cd_doorlock:LockpickDoor_usableitem', source)
+ end)
+
+ elseif Config.Framework == 'qbcore' then
+ QBCore.Functions.CreateUseableItem(d, function(source, item)
+ TriggerClientEvent('cd_doorlock:LockpickDoor_usableitem', source)
+ end)
+
+ elseif Config.Framework == 'other' then
+ --add your own framework code here.
+ end
+ end
+end
+
+function RemoveLockpickItem(source)
+ if Config.Framework == 'esx' then
+ for c, d in pairs(Config.LockpickItems.lockpick_items) do
+ local xPlayer = ESX.GetPlayerFromId(source)
+ local get_item = xPlayer.getInventoryItem(d)
+ if get_item then
+ local count = get_item.count
+ if count > 0 then
+ xPlayer.removeInventoryItem(d, 1)
+ return true
+ end
+ else
+ E('6035 - "'..d..'" is not a valid item.')
+ end
+ end
+
+ elseif Config.Framework == 'qbcore' then
+ local xPlayer = QBCore.Functions.GetPlayer(source)
+ for c, d in pairs(Config.LockpickItems.lockpick_items) do
+ if xPlayer.Functions.RemoveItem(d, 1) then
+ return true
+ end
+ end
+
+ elseif Config.Framework == 'other' then
+ --add your own framework checks here.
+ end
+
+ if GetResourceState('ox_inventory') == 'started' then
+ for c, d in pairs(data) do
+ if exports.ox_inventory:GetItem(source, d, false, true) >= 1 then
+ if Config.Framework == 'esx' then
+ local xPlayer = ESX.GetPlayerFromId(source)
+ xPlayer.removeInventoryItem(d, 1)
+ return true
+
+ elseif Config.Framework == 'qbcore' then
+ local xPlayer = QBCore.Functions.GetPlayer(source)
+ xPlayer.Functions.RemoveItem(d, 1)
+ return true
+
+ elseif Config.Framework == 'other' then
+ --add your own framework code here.
+ end
+ end
+ end
+ end
+ return false
+end
+
+
+--███████╗██╗ ██╗███╗ ██╗ ██████╗████████╗██╗ ██████╗ ███╗ ██╗███████╗
+--██╔════╝██║ ██║████╗ ██║██╔════╝╚══██╔══╝██║██╔═══██╗████╗ ██║██╔════╝
+--█████╗ ██║ ██║██╔██╗ ██║██║ ██║ ██║██║ ██║██╔██╗ ██║███████╗
+--██╔══╝ ██║ ██║██║╚██╗██║██║ ██║ ██║██║ ██║██║╚██╗██║╚════██║
+--██║ ╚██████╔╝██║ ╚████║╚██████╗ ██║ ██║╚██████╔╝██║ ╚████║███████║
+--╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝
+
+
+local function GetDoorPerms_Ideitifier_Discord(source)
+ local temp_table = {}
+ if Config.DoorAccessPerms.Identifiers then
+ temp_table.identifiers = GetAllFivemIdentifiers(source)
+ end
+ if Config.DoorAccessPerms.Discord then
+ temp_table.discord = GetAllDiscordRoles(source)
+ end
+ return temp_table
+end
+
+local function CheckDoorPerms_Vrp(source, door_perms_data)
+ local user_id = vRP.getUserId(source)
+ for c, d in pairs(door_perms_data) do
+ if vRP.getUserFaction(user_id) == d.name and vRP.getFactionRank(faction) >= d.grade then
+ return true
+ end
+ end
+ return false
+end
+
+local function CheckDoorPerms_Ace(source, data)
+ local temp_table = {}
+ for c, d in pairs(data) do
+ if IsPlayerAceAllowed(source, d) then
+ temp_table[#temp_table+1] = d
+ end
+ end
+ return temp_table
+end
+
+
+-- ██████╗ █████╗ ██╗ ██╗ ██████╗ █████╗ ██████╗██╗ ██╗███████╗
+--██╔════╝██╔══██╗██║ ██║ ██╔══██╗██╔══██╗██╔════╝██║ ██╔╝██╔════╝
+--██║ ███████║██║ ██║ ██████╔╝███████║██║ █████╔╝ ███████╗
+--██║ ██╔══██║██║ ██║ ██╔══██╗██╔══██║██║ ██╔═██╗ ╚════██║
+--╚██████╗██║ ██║███████╗███████╗██████╔╝██║ ██║╚██████╗██║ ██╗███████║
+-- ╚═════╝╚═╝ ╚═╝╚══════╝╚══════╝╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚══════╝
+
+
+RegisterServerEvent('cd_doorlock:Callback')
+AddEventHandler('cd_doorlock:Callback', function(id, action, data)
+ local _source = source
+ if action == 'check_admin_perms' then
+ TriggerClientEvent('cd_doorlock:Callback', _source, id, CheckAdminPerms(_source))
+
+ elseif action == 'get_door_perms_identifier_discord' then
+ TriggerClientEvent('cd_doorlock:Callback', _source, id, GetDoorPerms_Ideitifier_Discord(_source))
+
+ elseif action == 'check_door_perms_all' then
+ TriggerClientEvent('cd_doorlock:Callback', _source, id, CheckDoorPerms_All(_source, data))
+
+ elseif action == 'check_door_perms_vrp' then
+ TriggerClientEvent('cd_doorlock:Callback', _source, id, CheckDoorPerms_Vrp(_source, data))
+
+ elseif action == 'check_door_perms_ace' then
+ TriggerClientEvent('cd_doorlock:Callback', _source, id, CheckDoorPerms_Ace(_source, data))
+
+ elseif action == 'remove_lockpick_item' then
+ TriggerClientEvent('cd_doorlock:Callback', _source, id, RemoveLockpickItem(_source))
+
+ end
+end)
+
+
+--███╗ ██╗ ██████╗ ████████╗██╗███████╗██╗ ██████╗ █████╗ ████████╗██╗ ██████╗ ███╗ ██╗███████╗
+--████╗ ██║██╔═══██╗╚══██╔══╝██║██╔════╝██║██╔════╝██╔══██╗╚══██╔══╝██║██╔═══██╗████╗ ██║██╔════╝
+--██╔██╗ ██║██║ ██║ ██║ ██║█████╗ ██║██║ ███████║ ██║ ██║██║ ██║██╔██╗ ██║███████╗
+--██║╚██╗██║██║ ██║ ██║ ██║██╔══╝ ██║██║ ██╔══██║ ██║ ██║██║ ██║██║╚██╗██║╚════██║
+--██║ ╚████║╚██████╔╝ ██║ ██║██║ ██║╚██████╗██║ ██║ ██║ ██║╚██████╔╝██║ ╚████║███████║
+--╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚══════╝
+
+
+function Notification(source, notif_type, message)
+ if source and notif_type and message then
+ if Config.Notification == 'esx' then
+ TriggerClientEvent('esx:showNotification', source, message)
+
+ elseif Config.Notification == 'qbcore' then
+ if notif_type == 1 then
+ TriggerClientEvent('QBCore:Notify', source, message, 'success')
+ elseif notif_type == 2 then
+ TriggerClientEvent('QBCore:Notify', source, message, 'primary')
+ elseif notif_type == 3 then
+ TriggerClientEvent('QBCore:Notify', source, message, 'error')
+ end
+
+ elseif Config.Notification == 'cd_notifications' then
+ if notif_type == 1 then
+ TriggerClientEvent('cd_notifications:Add', source, {title = L('doorlock'), message = message, type = 'success', options = {duration = 5}})
+ elseif notif_type == 2 then
+ TriggerClientEvent('cd_notifications:Add', source, {title = L('doorlock'), message = message, type = 'inform', options = {duration = 5}})
+ elseif notif_type == 3 then
+ TriggerClientEvent('cd_notifications:Add', source, {title = L('doorlock'), message = message, type = 'error', options = {duration = 5}})
+ end
+
+ elseif Config.Notification == 'okokNotify' then
+ if notif_type == 1 then
+ TriggerClientEvent('okokNotify:Alert', source, L('doorlock'), message, 5000, 'success')
+ elseif notif_type == 2 then
+ TriggerClientEvent('okokNotify:Alert', source, L('doorlock'), message, 5000, 'info')
+ elseif notif_type == 3 then
+ TriggerClientEvent('okokNotify:Alert', source, L('doorlock'), message, 5000, 'error')
+ end
+
+ elseif Config.Notification == 'ps-ui' then
+ if notif_type == 1 then
+ TriggerClientEvent('ps-ui:Notify', source, message, 'success')
+ elseif notif_type == 2 then
+ TriggerClientEvent('ps-ui:Notify', source, message, 'primary')
+ elseif notif_type == 3 then
+ TriggerClientEvent('ps-ui:Notify', source, message, 'error')
+ end
+
+ elseif Config.Notification == 'ox_lib' then
+ if notif_type == 1 then
+ lib.notify({title = L('doorlock'), description = message, type = 'success'})
+ elseif notif_type == 2 then
+ lib.notify({title = L('doorlock'), description = message, type = 'inform'})
+ elseif notif_type == 3 then
+ lib.notify({title = L('doorlock'), description = message, type = 'error'})
+ end
+
+ elseif Config.Notification == 'chat' then
+ TriggerClientEvent('chatMessage', source, message)
+
+ elseif Config.Notification == 'other' then
+ --add your own notification.
+
+ end
+ end
+end
+
+
+-- ██████╗ ████████╗██╗ ██╗███████╗██████╗
+--██╔═══██╗╚══██╔══╝██║ ██║██╔════╝██╔══██╗
+--██║ ██║ ██║ ███████║█████╗ ██████╔╝
+--██║ ██║ ██║ ██╔══██║██╔══╝ ██╔══██╗
+--╚██████╔╝ ██║ ██║ ██║███████╗██║ ██║
+-- ╚═════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
+
+
+RegisterServerEvent('cd_doorlock:Debug')
+AddEventHandler('cd_doorlock:Debug', function()
+ local _source = source
+ print('^6-----------------------^0')
+ print('^1CODESIGN DEBUG^0')
+ print(string.format('^6Framework Identifier:^0 %s', GetIdentifier(_source)))
+ if Config.DoorAccessPerms.Identifiers or Config.AdminAccess.Identifiers.ENABLE then
+ for c, d in pairs(GetAllFivemIdentifiers(_source)) do
+ print(string.format('^6Fivem Identifier: [Full: ^0%s^6] [Trimmed: ^0%s^6]', d.full, d.trimmed))
+ end
+ end
+
+ if Config.DoorAccessPerms.Discord or Config.AdminAccess.Discord.ENABLE then
+ if GetResourceState('cd_devtools') == 'started' then
+ print('^6Devtools debug table sent to client.^0')
+ TriggerClientEvent('table', _source, GetAllDiscordRoles(_source))
+ else
+ print('^6cd_devtools is not started.^0')
+ end
+ end
+ print('^6-----------------------^0')
+end)
diff --git a/resources/cd_doorlock/configs/server_webhooks.lua b/resources/cd_doorlock/configs/server_webhooks.lua
new file mode 100644
index 000000000..f7e9ca699
--- /dev/null
+++ b/resources/cd_doorlock/configs/server_webhooks.lua
@@ -0,0 +1,52 @@
+------------------------------------------------------------------------------------------------------
+------------------------------------------- WEBHOOK URLS ---------------------------------------------
+------------------------------------------------------------------------------------------------------
+
+
+--56108 green
+--16711680 red
+--2061822 blue
+
+--These are disabled by default, until you enter your discord webhooks.
+local Webhook_Data = {
+ ['create'] = {colour = 56108, webhook = 'CHANGE_ME'}, --When someone creates a new door.
+ ['delete'] = {colour = 16711680, webhook = 'CHANGE_ME'}, --When someone deletes a door.
+ ['edit'] = {colour = 2061822, webhook = 'CHANGE_ME'}, --When someone edits a door.
+ ['add_import_data'] = {colour = 56108, webhook = 'CHANGE_ME'}, --When someone adds a import group.
+ ['remove_import_data'] = {colour = 16711680, webhook = 'CHANGE_ME'}, --When someone removes a import group.
+ ['remove_full_locationgroup'] = {colour = 16711680, webhook = 'CHANGE_ME'}, --When someone deletes a full location group.
+}
+
+
+------------------------------------------------------------------------------------------------------
+------------------------------------------- WEBHOOK DATA ---------------------------------------------
+------------------------------------------------------------------------------------------------------
+
+
+function SendWebhook(source, action, data)
+ local webhook_data = Webhook_Data[action]
+ if webhook_data.webhook and #webhook_data.webhook > 10 then
+ local player_name = GetPlayerName(source) or L('unknown')
+ local identifier = GetIdentifier(source) or L('unknown')
+
+ local message
+ if action == 'create' or action == 'delete' or action == 'edit' then
+ message = string.format(L('webhook_message_1'), source, player_name, identifier, data.location_group, data.door_name, data.door_type)
+ elseif action == 'add_import_data' or action == 'remove_import_data' then
+ message = string.format(L('webhook_message_2'), source, player_name, identifier, data.name, #data.data)
+ elseif action == 'remove_full_locationgroup' then
+ message = string.format(L('webhook_message_3'), source, player_name, identifier, data.name, data.door_count)
+ end
+
+ local data = {{
+ ['color'] = webhook_data.colour,
+ ['title'] = L(action),
+ ['description'] = message,
+ ['footer'] = {
+ ['text'] = os.date('%c'),
+ ['icon_url'] = 'https://i.imgur.com/VMPGPTQ.png',
+ },
+ }}
+ PerformHttpRequest(webhook_data.webhook, function(err, text, headers) end, 'POST', json.encode({username = L('bot_name'), embeds = data}), { ['Content-Type'] = 'application/json' })
+ end
+end
\ No newline at end of file
diff --git a/resources/cd_doorlock/fxmanifest.lua b/resources/cd_doorlock/fxmanifest.lua
new file mode 100644
index 000000000..0bae57de3
--- /dev/null
+++ b/resources/cd_doorlock/fxmanifest.lua
@@ -0,0 +1,69 @@
+fx_version 'cerulean'
+game 'gta5'
+author 'discord.gg/codesign'
+description 'Codesign Door Lock'
+version '1.1.1'
+lua54 'yes'
+
+shared_scripts {
+ 'configs/locales.lua',
+ 'configs/config.lua'
+ --'@ox_lib/init.lua' --⚠️PLEASE READ⚠️; Uncomment this line if you use 'ox_lib'.⚠️
+}
+
+client_scripts {
+ 'configs/client_customise_me.lua',
+ 'client/*.lua'
+}
+
+server_scripts {
+ 'configs/server_customise_me.lua',
+ 'configs/server_webhooks.lua',
+ 'server/*.lua',
+ 'server/*.js',
+ --'@vrp/lib/utils.lua', --⚠️PLEASE READ⚠️; Uncomment this line if you use 'vrp'.⚠️
+ --'@vrp/lib/Tunnel.lua', --⚠️PLEASE READ⚠️; Uncomment this line if you use 'vrp'.⚠️
+ --'@vrp/lib/Proxy.lua', --⚠️PLEASE READ⚠️; Uncomment this line if you use 'vrp'.⚠️
+}
+
+
+ui_page {
+ 'html/index.html',
+}
+files {
+ 'configs/locales_ui.js',
+ 'configs/config_ui.js',
+ 'html/index.html',
+ 'html/assets/*.css',
+ 'html/assets/*.js',
+ 'html/fonts/*.woff2',
+ 'html/css/vendor/*.css',
+ 'sounds/*.ogg'
+}
+
+exports {
+ 'GetDoorState_closest',
+ 'GetDoorState_name',
+ 'GetDoorDataFull_closest',
+ 'GetDoorDataFull_name',
+ 'GetDoorID',
+}
+
+Server_exports {
+ 'GetDoorState_closest',
+ 'GetDoorState_name',
+ 'GetDoorDataFull_closest',
+ 'GetDoorDataFull_name',
+ 'GetDoorID',
+}
+
+dependencies {
+ '/server:4960' -- ⚠️PLEASE READ⚠️; Requires at least server build 4960.
+}
+
+escrow_ignore {
+ 'client/functions.lua',
+ 'configs/*.lua',
+ 'server/version_check.lua'
+}
+dependency '/assetpacks'
\ No newline at end of file
diff --git a/resources/cd_doorlock/html/assets/index.css b/resources/cd_doorlock/html/assets/index.css
new file mode 100644
index 000000000..296ab784e
--- /dev/null
+++ b/resources/cd_doorlock/html/assets/index.css
@@ -0,0 +1 @@
+*{box-sizing:border-box}.alert-hidden.svelte-1xfidhd{display:none}.cursor-pointer{cursor:pointer;color:#00000080}.cursor-pointer:hover{color:#000}.btn-xs{--bs-btn-padding-y:.2rem;--bs-btn-padding-x:.4rem;--bs-btn-font-size:.6rem}.delete-job:hover{background-color:#ff5d57!important;cursor:pointer}.scrollbar.svelte-1847jqf{max-height:320px;overflow-y:auto;overflow-x:hidden}.scrollbar.svelte-1847jqf::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);background-color:#f5f5f5;border-bottom-right-radius:.3rem}.scrollbar.svelte-1847jqf::-webkit-scrollbar{width:8px;background-color:#f5f5f5}.scrollbar.svelte-1847jqf::-webkit-scrollbar-thumb{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);background-color:#999}.nav-item.svelte-1847jqf{cursor:pointer}#permission-list.svelte-1847jqf{font-size:90%}#header-text.svelte-a3mjdl{display:flex;justify-content:space-between;align-items:center}body{overflow:hidden}.scale-placeholder{display:none;position:absolute;left:var(--pseudo-left);top:var(--pseudo-top);content:" ";width:var(--pseudo-width);height:var(--pseudo-height);z-index:999;pointer-events:none;border:1px dashed #ff5d57;border-radius:.5rem;transform:scale(var(--pseudo-scale));will-change:transform}.placeholder-show{display:block!important}.scale{transform:scale(var(--scale))}#keypad-button-wrapper.svelte-11vz8gd.svelte-11vz8gd{padding:1rem;display:flex;flex-direction:column;gap:1rem}.keypad-button-row.svelte-11vz8gd.svelte-11vz8gd{display:flex;justify-content:space-between;align-items:center;gap:1rem}.keypad-button.svelte-11vz8gd.svelte-11vz8gd{padding:1rem;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.25)),to(#e6e6e6));text-shadow:0px -1px 0px rgba(0,0,0,.4);text-decoration:none;cursor:pointer;position:relative;display:inline-block;box-shadow:inset 0 1px #fff,0 1px 3px #0000004d;outline:none;border:1px solid #ba6;border-color:#7c7c7c;color:#fff;border-radius:5px;min-width:64px;text-align:center;user-select:none}.keypad-button.svelte-11vz8gd.svelte-11vz8gd:active{-webkit-transform:translateY(2px);transform:translateY(2px)}#keypad-screen.svelte-11vz8gd.svelte-11vz8gd{position:relative}#keypad-screen.svelte-11vz8gd>input.svelte-11vz8gd{height:48px;letter-spacing:.5rem;text-align:center;font-weight:900;outline:0;background-color:#1f1f1f4d;border:1px solid rgba(31,31,31,.5);-webkit-box-shadow:inset 0 0 10px #000000;box-shadow:inset 0 0 10px #000;border-radius:.2rem;color:#fff;user-select:none;cursor:auto;text-shadow:0 0 10px #fff}#keypad.svelte-11vz8gd.svelte-11vz8gd{background-color:var(--bs-gray-900);border-radius:.5rem;overflow:hidden;border:12px solid var(--bs-gray-900)}#keypad-round-wrapper.svelte-11vz8gd.svelte-11vz8gd{padding:1rem;border-radius:.5rem;overflow:hidden;background-color:#474747;box-shadow:#32325d40 0 30px 60px -12px inset,#0000004d 0 18px 36px -18px inset}.backspace.svelte-11vz8gd.svelte-11vz8gd{display:flex;justify-content:center;align-items:center;color:#ffffff80;cursor:pointer;user-select:none;pointer-events:all!important}.backspace.svelte-11vz8gd.svelte-11vz8gd:hover{color:#fffc}.led-box.svelte-11vz8gd.svelte-11vz8gd{height:24px;width:25%;margin:10px 0;float:left}.led-green.svelte-11vz8gd.svelte-11vz8gd{margin:0 auto;width:16px;height:16px;background-color:#abff004d;border-radius:50%;box-shadow:#0003 0 -1px 7px 1px,inset #304701 0 -1px 9px,#89ff00 0 0}.led-green-active.svelte-11vz8gd.svelte-11vz8gd{background-color:#abff00;box-shadow:#0003 0 -1px 7px 1px,inset #304701 0 -1px 9px,#89ff0080 0 2px 12px}.led-red.svelte-11vz8gd.svelte-11vz8gd{margin:0 auto;width:16px;height:16px;background-color:#ff5d574d;border-radius:50%;box-shadow:#0003 0 -1px 7px 1px,inset #441313 0 -1px 9px,#ff000080 0 0}.led-red-active.svelte-11vz8gd.svelte-11vz8gd{background-color:#ff5d57;box-shadow:#0003 0 -1px 7px 1px,inset #441313 0 -1px 9px,#ff000080 0 2px 12px}.led-yellow.svelte-11vz8gd.svelte-11vz8gd{margin:0 auto;width:16px;height:16px;background-color:#ffff004d;border-radius:50%;box-shadow:#0003 0 -1px 7px 1px,inset #808002 0 -1px 9px,#ffff0080 0 0}.led-yellow-active.svelte-11vz8gd.svelte-11vz8gd{background-color:#ff0;box-shadow:#0003 0 -1px 7px 1px,inset #808002 0 -1px 9px,#ffff0080 0 2px 12px}#status-led.svelte-11vz8gd.svelte-11vz8gd{display:flex;justify-content:center}#suggest-container.svelte-11vz8gd.svelte-11vz8gd{position:absolute;left:0;top:0;padding-right:1rem;width:100%;height:48px;display:flex;justify-content:flex-end;align-items:center;gap:.5rem;pointer-events:none}#keypad-speaker.svelte-11vz8gd.svelte-11vz8gd{width:100%;height:8px;background-color:#000;border-bottom-left-radius:50%;border-bottom-right-radius:50%;background-size:50%;overflow:hidden;-webkit-box-shadow:inset 0 0 5px #000000;box-shadow:inset 0 0 5px #000;background-blend-mode:difference}.import-item.svelte-1b1fi6t{display:flex;justify-content:space-between}.cursor.svelte-1b1fi6t{cursor:pointer}.scrollbar.svelte-1b1fi6t{height:320px;overflow-y:auto;overflow-x:hidden}.scrollbar.svelte-1b1fi6t::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);background-color:#f5f5f5;border-bottom-right-radius:.3rem}.scrollbar.svelte-1b1fi6t::-webkit-scrollbar{width:8px;background-color:#f5f5f5}.scrollbar.svelte-1b1fi6t::-webkit-scrollbar-thumb{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);background-color:#999}.nav-item.svelte-1b1fi6t{cursor:pointer}#selector.svelte-2ba962{width:100%;height:100%;position:absolute;left:0;top:0;display:flex;justify-content:center;align-items:center}#selector>i{font-size:3vh;color:#ff5f57b3}@font-face{font-family:VCR;src:local("VCR"),local("VCR"),url(../fonts/vcr.woff2) format("woff2")}#camera.svelte-qaw9gz{width:100vw;height:100vh;overflow:hidden;position:absolute;left:0;top:0;display:flex;justify-content:center;align-items:flex-end;font-family:VCR;font-size:32px;color:#fff;padding:3rem}#camera-container.svelte-qaw9gz{background-color:#0000004d;padding:.3rem .75rem;width:100%;display:flex;justify-content:space-between;align-items:center;flex-direction:column}#camera-time-location.svelte-qaw9gz{width:100%;display:flex;justify-content:space-between;align-items:center}#camera-info.svelte-qaw9gz{display:flex;justify-content:space-around;align-items:center;position:absolute;left:0;top:1rem;padding:.3rem .75rem}.camera-tooltip-item.svelte-qaw9gz{background-color:#0000004d;margin-left:1rem;margin-right:1rem;padding:.3rem;font-size:1rem}#game-instructions.svelte-4d2wf{position:absolute;display:flex;justify-content:center;align-items:center;right:1rem;top:50%;transform:translateY(-50%);padding:1rem}.instructions.svelte-4d2wf{font-size:1.5vh;color:#fff;background-color:#00000080;padding:.75rem 2rem;border-radius:.5rem}body{background-color:transparent}.border-cd{border:12px solid var(--bs-gray-900);background-color:var(--bs-gray-900)}.border-cd-sm{border:6px solid var(--bs-gray-900);background-color:var(--bs-gray-900)}#server-logo.svelte-vrcv47{display:flex;align-items:center}#server-logo>svg{height:16px;margin-left:1rem}#create-doors.svelte-vrcv47{transform-origin:center}main.svelte-vrcv47{overflow:hidden}
diff --git a/resources/cd_doorlock/html/assets/index.js b/resources/cd_doorlock/html/assets/index.js
new file mode 100644
index 000000000..39bf3d46f
--- /dev/null
+++ b/resources/cd_doorlock/html/assets/index.js
@@ -0,0 +1,30 @@
+var Qa=Object.defineProperty;var Xa=(n,e,t)=>e in n?Qa(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var Xt=(n,e,t)=>(Xa(n,typeof e!="symbol"?e+"":e,t),t);(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))s(i);new MutationObserver(i=>{for(const l of i)if(l.type==="childList")for(const o of l.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&s(o)}).observe(document,{childList:!0,subtree:!0});function t(i){const l={};return i.integrity&&(l.integrity=i.integrity),i.referrerpolicy&&(l.referrerPolicy=i.referrerpolicy),i.crossorigin==="use-credentials"?l.credentials="include":i.crossorigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function s(i){if(i.ep)return;i.ep=!0;const l=t(i);fetch(i.href,l)}})();function ue(){}const Pi=n=>n;function Lo(n,e){for(const t in e)n[t]=e[t];return n}function Pr(n){return n()}function Do(){return Object.create(null)}function Ee(n){n.forEach(Pr)}function Kn(n){return typeof n=="function"}function rt(n,e){return n!=n?e==e:n!==e||n&&typeof n=="object"||typeof n=="function"}function Ja(n){return Object.keys(n).length===0}function Xs(n,...e){if(n==null)return ue;const t=n.subscribe(...e);return t.unsubscribe?()=>t.unsubscribe():t}function Io(n){let e;return Xs(n,t=>e=t)(),e}function be(n,e,t){n.$$.on_destroy.push(Xs(e,t))}function T(n,e,t){return n.set(t),e}function Za(n){return n&&Kn(n.destroy)?n.destroy:ue}const Rr=typeof window<"u";let Ri=Rr?()=>window.performance.now():()=>Date.now(),ji=Rr?n=>requestAnimationFrame(n):ue;const Hn=new Set;function jr(n){Hn.forEach(e=>{e.c(n)||(Hn.delete(e),e.f())}),Hn.size!==0&&ji(jr)}function Hi(n){let e;return Hn.size===0&&ji(jr),{promise:new Promise(t=>{Hn.add(e={c:n,f:t})}),abort(){Hn.delete(e)}}}function r(n,e){n.appendChild(e)}function Hr(n){if(!n)return document;const e=n.getRootNode?n.getRootNode():n.ownerDocument;return e&&e.host?e:n.ownerDocument}function xa(n){const e=_("style");return ec(Hr(n),e),e.sheet}function ec(n,e){r(n.head||n,e)}function D(n,e,t){n.insertBefore(e,t||null)}function L(n){n.parentNode.removeChild(n)}function _(n){return document.createElement(n)}function V(n){return document.createTextNode(n)}function k(){return V(" ")}function qe(){return V("")}function P(n,e,t,s){return n.addEventListener(e,t,s),()=>n.removeEventListener(e,t,s)}function tc(n){return function(e){return e.preventDefault(),n.call(this,e)}}function Se(n){return function(e){return e.stopPropagation(),n.call(this,e)}}function zt(n){return function(e){e.isTrusted&&n.call(this,e)}}function a(n,e,t){t==null?n.removeAttribute(e):n.getAttribute(e)!==t&&n.setAttribute(e,t)}function ln(n){return n===""?null:+n}function nc(n){return Array.from(n.childNodes)}function fe(n,e){e=""+e,n.wholeText!==e&&(n.data=e)}function pe(n,e){n.value=e==null?"":e}function tt(n,e,t,s){t===null?n.style.removeProperty(e):n.style.setProperty(e,t,s?"important":"")}function jt(n,e,t){n.classList[t?"add":"remove"](e)}function sc(n,e,{bubbles:t=!1,cancelable:s=!1}={}){const i=document.createEvent("CustomEvent");return i.initCustomEvent(n,t,s,e),i}const Ws=new Map;let Fs=0;function ic(n){let e=5381,t=n.length;for(;t--;)e=(e<<5)-e^n.charCodeAt(t);return e>>>0}function oc(n,e){const t={stylesheet:xa(e),rules:{}};return Ws.set(n,t),t}function zs(n,e,t,s,i,l,o,f=0){const d=16.666/s;let p=`{
+`;for(let y=0;y<=1;y+=d){const E=e+(t-e)*l(y);p+=y*100+`%{${o(E,1-E)}}
+`}const u=p+`100% {${o(t,1-t)}}
+}`,c=`__svelte_${ic(u)}_${f}`,m=Hr(n),{stylesheet:h,rules:g}=Ws.get(m)||oc(m,n);g[c]||(g[c]=!0,h.insertRule(`@keyframes ${c} ${u}`,h.cssRules.length));const A=n.style.animation||"";return n.style.animation=`${A?`${A}, `:""}${c} ${s}ms linear ${i}ms 1 both`,Fs+=1,c}function Gs(n,e){const t=(n.style.animation||"").split(", "),s=t.filter(e?l=>l.indexOf(e)<0:l=>l.indexOf("__svelte")===-1),i=t.length-s.length;i&&(n.style.animation=s.join(", "),Fs-=i,Fs||lc())}function lc(){ji(()=>{Fs||(Ws.forEach(n=>{const{stylesheet:e}=n;let t=e.cssRules.length;for(;t--;)e.deleteRule(t);n.rules={}}),Ws.clear())})}let os;function ts(n){os=n}function Vr(){if(!os)throw new Error("Function called outside component initialization");return os}function Yn(n){Vr().$$.on_mount.push(n)}function Vi(n){Vr().$$.on_destroy.push(n)}function xn(n,e){const t=n.$$.callbacks[e.type];t&&t.slice().forEach(s=>s.call(this,e))}const es=[],Mo=[],js=[],$o=[],rc=Promise.resolve();let Ti=!1;function ac(){Ti||(Ti=!0,rc.then(Br))}function it(n){js.push(n)}const di=new Set;let Ns=0;function Br(){const n=os;do{for(;Ns{Xn=null})),Xn}function mn(n,e,t){n.dispatchEvent(sc(`${e?"intro":"outro"}${t}`))}const Hs=new Set;let Ht;function ft(){Ht={r:0,c:[],p:Ht}}function pt(){Ht.r||Ee(Ht.c),Ht=Ht.p}function ce(n,e){n&&n.i&&(Hs.delete(n),n.i(e))}function ge(n,e,t,s){if(n&&n.o){if(Hs.has(n))return;Hs.add(n),Ht.c.push(()=>{Hs.delete(n),s&&(t&&n.d(1),s())}),n.o(e)}else s&&s()}const Wi={duration:0};function Js(n,e,t){let s=e(n,t),i=!1,l,o,f=0;function d(){l&&Gs(n,l)}function p(){const{delay:c=0,duration:m=300,easing:h=Pi,tick:g=ue,css:A}=s||Wi;A&&(l=zs(n,0,1,m,c,h,A,f++)),g(0,1);const y=Ri()+c,E=y+m;o&&o.abort(),i=!0,it(()=>mn(n,!0,"start")),o=Hi(C=>{if(i){if(C>=E)return g(1,0),mn(n,!0,"end"),d(),i=!1;if(C>=y){const N=h((C-y)/m);g(N,1-N)}}return i})}let u=!1;return{start(){u||(u=!0,Gs(n),Kn(s)?(s=s(),Bi().then(p)):p())},invalidate(){u=!1},end(){i&&(d(),i=!1)}}}function Zs(n,e,t){let s=e(n,t),i=!0,l;const o=Ht;o.r+=1;function f(){const{delay:d=0,duration:p=300,easing:u=Pi,tick:c=ue,css:m}=s||Wi;m&&(l=zs(n,1,0,p,d,u,m));const h=Ri()+d,g=h+p;it(()=>mn(n,!1,"start")),Hi(A=>{if(i){if(A>=g)return c(0,1),mn(n,!1,"end"),--o.r||Ee(o.c),!1;if(A>=h){const y=u((A-h)/p);c(1-y,y)}}return i})}return Kn(s)?Bi().then(()=>{s=s(),f()}):f(),{end(d){d&&s.tick&&s.tick(1,0),i&&(l&&Gs(n,l),i=!1)}}}function Bt(n,e,t,s){let i=e(n,t),l=s?0:1,o=null,f=null,d=null;function p(){d&&Gs(n,d)}function u(m,h){const g=m.b-l;return h*=Math.abs(g),{a:l,b:m.b,d:g,duration:h,start:m.start,end:m.start+h,group:m.group}}function c(m){const{delay:h=0,duration:g=300,easing:A=Pi,tick:y=ue,css:E}=i||Wi,C={start:Ri()+h,b:m};m||(C.group=Ht,Ht.r+=1),o||f?f=C:(E&&(p(),d=zs(n,l,m,g,h,A,E)),m&&y(0,1),o=u(C,g),it(()=>mn(n,m,"start")),Hi(N=>{if(f&&N>f.start&&(o=u(f,g),f=null,mn(n,o.b,"start"),E&&(p(),d=zs(n,l,o.b,o.duration,0,A,i.css))),o){if(N>=o.end)y(l=o.b,1-l),mn(n,o.b,"end"),f||(o.b?p():--o.group.r||Ee(o.group.c)),o=null;else if(N>=o.start){const b=N-o.start;l=o.a+o.d*A(b/o.duration),y(l,1-l)}}return!!(o||f)}))}return{run(m){Kn(i)?Bi().then(()=>{i=i(),c(m)}):c(m)},end(){p(),o=f=null}}}const uc=typeof window<"u"?window:typeof globalThis<"u"?globalThis:global;function Ke(n,e){n.d(1),e.delete(n.key)}function Po(n,e){ge(n,1,1,()=>{e.delete(n.key)})}function Ve(n,e,t,s,i,l,o,f,d,p,u,c){let m=n.length,h=l.length,g=m;const A={};for(;g--;)A[n[g].key]=g;const y=[],E=new Map,C=new Map;for(g=h;g--;){const w=c(i,l,g),S=t(w);let M=o.get(S);M?s&&M.p(w,e):(M=p(S,w),M.c()),E.set(S,y[g]=M),S in A&&C.set(S,Math.abs(g-A[S]))}const N=new Set,b=new Set;function v(w){ce(w,1),w.m(f,u),o.set(w.key,w),u=w.first,h--}for(;m&&h;){const w=y[h-1],S=n[m-1],M=w.key,G=S.key;w===S?(u=w.first,m--,h--):E.has(G)?!o.has(M)||N.has(M)?v(w):b.has(G)?m--:C.get(M)>C.get(G)?(b.add(M),v(w)):(N.add(G),m--):(d(S,o),m--)}for(;m--;){const w=n[m];E.has(w.key)||d(w,o)}for(;h;)v(y[h-1]);return y}function _t(n){n&&n.c()}function ot(n,e,t,s){const{fragment:i,on_mount:l,on_destroy:o,after_update:f}=n.$$;i&&i.m(e,t),s||it(()=>{const d=l.map(Pr).filter(Kn);o?o.push(...d):Ee(d),n.$$.on_mount=[]}),f.forEach(it)}function lt(n,e){const t=n.$$;t.fragment!==null&&(Ee(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function dc(n,e){n.$$.dirty[0]===-1&&(es.push(n),ac(),n.$$.dirty.fill(0)),n.$$.dirty[e/31|0]|=1<{const g=h.length?h[0]:m;return p.ctx&&i(p.ctx[c],p.ctx[c]=g)&&(!p.skip_bound&&p.bound[c]&&p.bound[c](g),u&&dc(n,c)),m}):[],p.update(),u=!0,Ee(p.before_update),p.fragment=s?s(p.ctx):!1,e.target){if(e.hydrate){const c=nc(e.target);p.fragment&&p.fragment.l(c),c.forEach(L)}else p.fragment&&p.fragment.c();e.intro&&ce(n.$$.fragment),ot(n,e.target,e.anchor,e.customElement),Br()}ts(d)}class bt{$destroy(){lt(this,1),this.$destroy=ue}$on(e,t){const s=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return s.push(t),()=>{const i=s.indexOf(t);i!==-1&&s.splice(i,1)}}$set(e){this.$$set&&!Ja(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const Dn=[];function St(n,e=ue){let t;const s=new Set;function i(f){if(rt(n,f)&&(n=f,t)){const d=!Dn.length;for(const p of s)p[1](),Dn.push(p,n);if(d){for(let p=0;p{s.delete(p),s.size===0&&(t(),t=null)}}return{set:i,update:l,subscribe:o}}let ye=St([]);function Ro(n,e,t){const s=n.slice();return s[8]=e[t],s[10]=t,s}function jo(n){let e,t,s;return{c(){e=_("i"),a(e,"class","bi bi-caret-left-fill cursor-pointer")},m(i,l){D(i,e,l),t||(s=P(e,"click",Se(n[5])),t=!0)},p:ue,d(i){i&&L(e),t=!1,s()}}}function Ho(n){let e,t,s;return{c(){e=_("i"),a(e,"class","bi bi-caret-right-fill cursor-pointer")},m(i,l){D(i,e,l),t||(s=P(e,"click",Se(n[6])),t=!0)},p:ue,d(i){i&&L(e),t=!1,s()}}}function Vo(n,e){let t,s,i=e[8].message+"",l,o,f,d,p,u,c,m=e[1]+1+"",h,g,A,y=e[0].length+"",E,C,N,b,v,w,S,M=e[1]!=0&&jo(e),G=e[1]!=e[0].length-1&&Ho(e);return{key:n,first:null,c(){t=_("div"),s=_("span"),l=k(),o=_("button"),f=k(),d=_("hr"),p=k(),u=_("div"),c=_("small"),h=V(m),g=V(" of "),A=_("strong"),E=V(y),C=k(),M&&M.c(),N=k(),G&&G.c(),b=k(),a(s,"class","message"),a(o,"type","button"),a(o,"class","btn-close btn-sm"),a(d,"class","mb-1"),a(u,"class","container-fluid d-flex justify-content-end align-items-center p-0"),a(t,"id","create-doors-alert"),a(t,"class",v="w-100 alert "+e[8].type+" alert-dismissible fade show rounded-0 mb-0 "+(e[10]!=e[1]?"alert-hidden":"")+" svelte-1xfidhd"),a(t,"role","alert"),this.first=t},m(U,K){D(U,t,K),r(t,s),s.innerHTML=i,r(t,l),r(t,o),r(t,f),r(t,d),r(t,p),r(t,u),r(u,c),r(c,h),r(c,g),r(c,A),r(A,E),r(c,C),M&&M.m(c,null),r(c,N),G&&G.m(c,null),r(t,b),w||(S=P(o,"click",Se(e[3])),w=!0)},p(U,K){e=U,K&1&&i!==(i=e[8].message+"")&&(s.innerHTML=i),K&2&&m!==(m=e[1]+1+"")&&fe(h,m),K&1&&y!==(y=e[0].length+"")&&fe(E,y),e[1]!=0?M?M.p(e,K):(M=jo(e),M.c(),M.m(c,N)):M&&(M.d(1),M=null),e[1]!=e[0].length-1?G?G.p(e,K):(G=Ho(e),G.c(),G.m(c,null)):G&&(G.d(1),G=null),K&3&&v!==(v="w-100 alert "+e[8].type+" alert-dismissible fade show rounded-0 mb-0 "+(e[10]!=e[1]?"alert-hidden":"")+" svelte-1xfidhd")&&a(t,"class",v)},d(U){U&&L(t),M&&M.d(),G&&G.d(),w=!1,S()}}}function fc(n){let e=[],t=new Map,s,i=n[0];const l=o=>o[10];for(let o=0;ot(0,i=u));let{type:l="alert-success"}=e;function o(u){t(1,s=s+u)}function f(){T(ye,i.length=0,i)}const d=()=>{o(-1)},p=()=>{o(1)};return n.$$set=u=>{"type"in u&&t(4,l=u.type)},n.$$.update=()=>{n.$$.dirty&1&&t(1,s=i.length-1)},[i,s,o,f,l,d,p]}class _c extends bt{constructor(e){super(),gt(this,e,pc,fc,rt,{type:4})}}class He{constructor(){Xt(this,"resource");Xt(this,"run",!0);this.resource=GetParentResourceName(),this.resource!="cd_doorlock"&&this.resource!="gabz-doorlock"&&(this.run=!1)}send(e,t){!this.run||fetch(`https://${this.resource}/${e}`,{method:"POST",body:JSON.stringify(t)}).then(s=>{}).catch(s=>{})}static send(e,t){GetParentResourceName()!="cd_doorlock"&&GetParentResourceName()!="gabz-doorlock"||fetch(`https://${GetParentResourceName()}/${e}`,{method:"POST",body:JSON.stringify(t)}).then(s=>{}).catch(s=>{})}}function Fi(n){const e=n-1;return e*e*e+1}function hc(n){return--n*n*n*n*n+1}/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */function mc(n,e){var t={};for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&e.indexOf(s)<0&&(t[s]=n[s]);if(n!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,s=Object.getOwnPropertySymbols(n);i`
+ transform: ${p} translate(${(1-c)*i}px, ${(1-c)*l}px);
+ opacity: ${d-u*m}`}}function Wt(n,{delay:e=0,duration:t=400,easing:s=Fi}={}){const i=getComputedStyle(n),l=+i.opacity,o=parseFloat(i.height),f=parseFloat(i.paddingTop),d=parseFloat(i.paddingBottom),p=parseFloat(i.marginTop),u=parseFloat(i.marginBottom),c=parseFloat(i.borderTopWidth),m=parseFloat(i.borderBottomWidth);return{delay:e,duration:t,easing:s,css:h=>`overflow: hidden;opacity: ${Math.min(h*20,1)*l};height: ${h*o}px;padding-top: ${h*f}px;padding-bottom: ${h*d}px;margin-top: ${h*p}px;margin-bottom: ${h*u}px;border-top-width: ${h*c}px;border-bottom-width: ${h*m}px;`}}function gc(n){var{fallback:e}=n,t=mc(n,["fallback"]);const s=new Map,i=new Map;function l(f,d,p){const{delay:u=0,duration:c=w=>Math.sqrt(w)*30,easing:m=Fi}=Lo(Lo({},t),p),h=d.getBoundingClientRect(),g=f.left-h.left,A=f.top-h.top,y=f.width/h.width,E=f.height/h.height,C=Math.sqrt(g*g+A*A),N=getComputedStyle(d),b=N.transform==="none"?"":N.transform,v=+N.opacity;return{delay:u,duration:Kn(c)?c(C):c,easing:m,css:(w,S)=>`
+ opacity: ${w*v};
+ transform-origin: top left;
+ transform: ${b} translate(${S*g}px,${S*A}px) scale(${w+(1-w)*y}, ${w+(1-w)*E});
+ `}}function o(f,d,p){return(u,c)=>(f.set(c.key,{rect:u.getBoundingClientRect()}),()=>{if(d.has(c.key)){const{rect:m}=d.get(c.key);return d.delete(c.key),l(m,u,c)}return f.delete(c.key),e&&e(u,c,p)})}return[o(i,s,!1),o(s,i,!0)]}let Me=St([]),j=St({status:!1,creating:!1,door_count:1,doors_selected:!1,doors_data:null,group_type:"job",editing:{state:!1,door:-1,selection:!1},delete:{state:!1,door:-1,name:"",type:"door"},keypad:!1,keypad_processing:!1,keypad_success:!1,keypad_error:!1,selection_icon:!1,camera:{state:!1,door_id:-1,name:"",group:""}}),kt=St({});var nt="top",ht="bottom",mt="right",st="left",xs="auto",qn=[nt,ht,mt,st],bn="start",Vn="end",Wr="clippingParents",zi="viewport",$n="popper",Fr="reference",Ci=qn.reduce(function(n,e){return n.concat([e+"-"+bn,e+"-"+Vn])},[]),Gi=[].concat(qn,[xs]).reduce(function(n,e){return n.concat([e,e+"-"+bn,e+"-"+Vn])},[]),zr="beforeRead",Gr="read",Kr="afterRead",Yr="beforeMain",qr="main",Ur="afterMain",Qr="beforeWrite",Xr="write",Jr="afterWrite",Zr=[zr,Gr,Kr,Yr,qr,Ur,Qr,Xr,Jr];function Ft(n){return n?(n.nodeName||"").toLowerCase():null}function Tt(n){if(n==null)return window;if(n.toString()!=="[object Window]"){var e=n.ownerDocument;return e&&e.defaultView||window}return n}function vn(n){var e=Tt(n).Element;return n instanceof e||n instanceof Element}function Et(n){var e=Tt(n).HTMLElement;return n instanceof e||n instanceof HTMLElement}function Ki(n){if(typeof ShadowRoot>"u")return!1;var e=Tt(n).ShadowRoot;return n instanceof e||n instanceof ShadowRoot}function bc(n){var e=n.state;Object.keys(e.elements).forEach(function(t){var s=e.styles[t]||{},i=e.attributes[t]||{},l=e.elements[t];!Et(l)||!Ft(l)||(Object.assign(l.style,s),Object.keys(i).forEach(function(o){var f=i[o];f===!1?l.removeAttribute(o):l.setAttribute(o,f===!0?"":f)}))})}function vc(n){var e=n.state,t={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,t.popper),e.styles=t,e.elements.arrow&&Object.assign(e.elements.arrow.style,t.arrow),function(){Object.keys(e.elements).forEach(function(s){var i=e.elements[s],l=e.attributes[s]||{},o=Object.keys(e.styles.hasOwnProperty(s)?e.styles[s]:t[s]),f=o.reduce(function(d,p){return d[p]="",d},{});!Et(i)||!Ft(i)||(Object.assign(i.style,f),Object.keys(l).forEach(function(d){i.removeAttribute(d)}))})}}const Yi={name:"applyStyles",enabled:!0,phase:"write",fn:bc,effect:vc,requires:["computeStyles"]};function Vt(n){return n.split("-")[0]}var gn=Math.max,Ys=Math.min,Bn=Math.round;function Oi(){var n=navigator.userAgentData;return n!=null&&n.brands?n.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function xr(){return!/^((?!chrome|android).)*safari/i.test(Oi())}function Wn(n,e,t){e===void 0&&(e=!1),t===void 0&&(t=!1);var s=n.getBoundingClientRect(),i=1,l=1;e&&Et(n)&&(i=n.offsetWidth>0&&Bn(s.width)/n.offsetWidth||1,l=n.offsetHeight>0&&Bn(s.height)/n.offsetHeight||1);var o=vn(n)?Tt(n):window,f=o.visualViewport,d=!xr()&&t,p=(s.left+(d&&f?f.offsetLeft:0))/i,u=(s.top+(d&&f?f.offsetTop:0))/l,c=s.width/i,m=s.height/l;return{width:c,height:m,top:u,right:p+c,bottom:u+m,left:p,x:p,y:u}}function qi(n){var e=Wn(n),t=n.offsetWidth,s=n.offsetHeight;return Math.abs(e.width-t)<=1&&(t=e.width),Math.abs(e.height-s)<=1&&(s=e.height),{x:n.offsetLeft,y:n.offsetTop,width:t,height:s}}function ea(n,e){var t=e.getRootNode&&e.getRootNode();if(n.contains(e))return!0;if(t&&Ki(t)){var s=e;do{if(s&&n.isSameNode(s))return!0;s=s.parentNode||s.host}while(s)}return!1}function tn(n){return Tt(n).getComputedStyle(n)}function wc(n){return["table","td","th"].indexOf(Ft(n))>=0}function un(n){return((vn(n)?n.ownerDocument:n.document)||window.document).documentElement}function ei(n){return Ft(n)==="html"?n:n.assignedSlot||n.parentNode||(Ki(n)?n.host:null)||un(n)}function Bo(n){return!Et(n)||tn(n).position==="fixed"?null:n.offsetParent}function yc(n){var e=/firefox/i.test(Oi()),t=/Trident/i.test(Oi());if(t&&Et(n)){var s=tn(n);if(s.position==="fixed")return null}var i=ei(n);for(Ki(i)&&(i=i.host);Et(i)&&["html","body"].indexOf(Ft(i))<0;){var l=tn(i);if(l.transform!=="none"||l.perspective!=="none"||l.contain==="paint"||["transform","perspective"].indexOf(l.willChange)!==-1||e&&l.willChange==="filter"||e&&l.filter&&l.filter!=="none")return i;i=i.parentNode}return null}function as(n){for(var e=Tt(n),t=Bo(n);t&&wc(t)&&tn(t).position==="static";)t=Bo(t);return t&&(Ft(t)==="html"||Ft(t)==="body"&&tn(t).position==="static")?e:t||yc(n)||e}function Ui(n){return["top","bottom"].indexOf(n)>=0?"x":"y"}function ns(n,e,t){return gn(n,Ys(e,t))}function kc(n,e,t){var s=ns(n,e,t);return s>t?t:s}function ta(){return{top:0,right:0,bottom:0,left:0}}function na(n){return Object.assign({},ta(),n)}function sa(n,e){return e.reduce(function(t,s){return t[s]=n,t},{})}var Ec=function(e,t){return e=typeof e=="function"?e(Object.assign({},t.rects,{placement:t.placement})):e,na(typeof e!="number"?e:sa(e,qn))};function Ac(n){var e,t=n.state,s=n.name,i=n.options,l=t.elements.arrow,o=t.modifiersData.popperOffsets,f=Vt(t.placement),d=Ui(f),p=[st,mt].indexOf(f)>=0,u=p?"height":"width";if(!(!l||!o)){var c=Ec(i.padding,t),m=qi(l),h=d==="y"?nt:st,g=d==="y"?ht:mt,A=t.rects.reference[u]+t.rects.reference[d]-o[d]-t.rects.popper[u],y=o[d]-t.rects.reference[d],E=as(l),C=E?d==="y"?E.clientHeight||0:E.clientWidth||0:0,N=A/2-y/2,b=c[h],v=C-m[u]-c[g],w=C/2-m[u]/2+N,S=ns(b,w,v),M=d;t.modifiersData[s]=(e={},e[M]=S,e.centerOffset=S-w,e)}}function Tc(n){var e=n.state,t=n.options,s=t.element,i=s===void 0?"[data-popper-arrow]":s;i!=null&&(typeof i=="string"&&(i=e.elements.popper.querySelector(i),!i)||!ea(e.elements.popper,i)||(e.elements.arrow=i))}const ia={name:"arrow",enabled:!0,phase:"main",fn:Ac,effect:Tc,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Fn(n){return n.split("-")[1]}var Cc={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Oc(n){var e=n.x,t=n.y,s=window,i=s.devicePixelRatio||1;return{x:Bn(e*i)/i||0,y:Bn(t*i)/i||0}}function Wo(n){var e,t=n.popper,s=n.popperRect,i=n.placement,l=n.variation,o=n.offsets,f=n.position,d=n.gpuAcceleration,p=n.adaptive,u=n.roundOffsets,c=n.isFixed,m=o.x,h=m===void 0?0:m,g=o.y,A=g===void 0?0:g,y=typeof u=="function"?u({x:h,y:A}):{x:h,y:A};h=y.x,A=y.y;var E=o.hasOwnProperty("x"),C=o.hasOwnProperty("y"),N=st,b=nt,v=window;if(p){var w=as(t),S="clientHeight",M="clientWidth";if(w===Tt(t)&&(w=un(t),tn(w).position!=="static"&&f==="absolute"&&(S="scrollHeight",M="scrollWidth")),w=w,i===nt||(i===st||i===mt)&&l===Vn){b=ht;var G=c&&w===v&&v.visualViewport?v.visualViewport.height:w[S];A-=G-s.height,A*=d?1:-1}if(i===st||(i===nt||i===ht)&&l===Vn){N=mt;var U=c&&w===v&&v.visualViewport?v.visualViewport.width:w[M];h-=U-s.width,h*=d?1:-1}}var K=Object.assign({position:f},p&&Cc),J=u===!0?Oc({x:h,y:A}):{x:h,y:A};if(h=J.x,A=J.y,d){var q;return Object.assign({},K,(q={},q[b]=C?"0":"",q[N]=E?"0":"",q.transform=(v.devicePixelRatio||1)<=1?"translate("+h+"px, "+A+"px)":"translate3d("+h+"px, "+A+"px, 0)",q))}return Object.assign({},K,(e={},e[b]=C?A+"px":"",e[N]=E?h+"px":"",e.transform="",e))}function Nc(n){var e=n.state,t=n.options,s=t.gpuAcceleration,i=s===void 0?!0:s,l=t.adaptive,o=l===void 0?!0:l,f=t.roundOffsets,d=f===void 0?!0:f,p={placement:Vt(e.placement),variation:Fn(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:i,isFixed:e.options.strategy==="fixed"};e.modifiersData.popperOffsets!=null&&(e.styles.popper=Object.assign({},e.styles.popper,Wo(Object.assign({},p,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:o,roundOffsets:d})))),e.modifiersData.arrow!=null&&(e.styles.arrow=Object.assign({},e.styles.arrow,Wo(Object.assign({},p,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:d})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})}const Qi={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Nc,data:{}};var Ss={passive:!0};function Sc(n){var e=n.state,t=n.instance,s=n.options,i=s.scroll,l=i===void 0?!0:i,o=s.resize,f=o===void 0?!0:o,d=Tt(e.elements.popper),p=[].concat(e.scrollParents.reference,e.scrollParents.popper);return l&&p.forEach(function(u){u.addEventListener("scroll",t.update,Ss)}),f&&d.addEventListener("resize",t.update,Ss),function(){l&&p.forEach(function(u){u.removeEventListener("scroll",t.update,Ss)}),f&&d.removeEventListener("resize",t.update,Ss)}}const Xi={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Sc,data:{}};var Lc={left:"right",right:"left",bottom:"top",top:"bottom"};function Vs(n){return n.replace(/left|right|bottom|top/g,function(e){return Lc[e]})}var Dc={start:"end",end:"start"};function Fo(n){return n.replace(/start|end/g,function(e){return Dc[e]})}function Ji(n){var e=Tt(n),t=e.pageXOffset,s=e.pageYOffset;return{scrollLeft:t,scrollTop:s}}function Zi(n){return Wn(un(n)).left+Ji(n).scrollLeft}function Ic(n,e){var t=Tt(n),s=un(n),i=t.visualViewport,l=s.clientWidth,o=s.clientHeight,f=0,d=0;if(i){l=i.width,o=i.height;var p=xr();(p||!p&&e==="fixed")&&(f=i.offsetLeft,d=i.offsetTop)}return{width:l,height:o,x:f+Zi(n),y:d}}function Mc(n){var e,t=un(n),s=Ji(n),i=(e=n.ownerDocument)==null?void 0:e.body,l=gn(t.scrollWidth,t.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),o=gn(t.scrollHeight,t.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),f=-s.scrollLeft+Zi(n),d=-s.scrollTop;return tn(i||t).direction==="rtl"&&(f+=gn(t.clientWidth,i?i.clientWidth:0)-l),{width:l,height:o,x:f,y:d}}function xi(n){var e=tn(n),t=e.overflow,s=e.overflowX,i=e.overflowY;return/auto|scroll|overlay|hidden/.test(t+i+s)}function oa(n){return["html","body","#document"].indexOf(Ft(n))>=0?n.ownerDocument.body:Et(n)&&xi(n)?n:oa(ei(n))}function ss(n,e){var t;e===void 0&&(e=[]);var s=oa(n),i=s===((t=n.ownerDocument)==null?void 0:t.body),l=Tt(s),o=i?[l].concat(l.visualViewport||[],xi(s)?s:[]):s,f=e.concat(o);return i?f:f.concat(ss(ei(o)))}function Ni(n){return Object.assign({},n,{left:n.x,top:n.y,right:n.x+n.width,bottom:n.y+n.height})}function $c(n,e){var t=Wn(n,!1,e==="fixed");return t.top=t.top+n.clientTop,t.left=t.left+n.clientLeft,t.bottom=t.top+n.clientHeight,t.right=t.left+n.clientWidth,t.width=n.clientWidth,t.height=n.clientHeight,t.x=t.left,t.y=t.top,t}function zo(n,e,t){return e===zi?Ni(Ic(n,t)):vn(e)?$c(e,t):Ni(Mc(un(n)))}function Pc(n){var e=ss(ei(n)),t=["absolute","fixed"].indexOf(tn(n).position)>=0,s=t&&Et(n)?as(n):n;return vn(s)?e.filter(function(i){return vn(i)&&ea(i,s)&&Ft(i)!=="body"}):[]}function Rc(n,e,t,s){var i=e==="clippingParents"?Pc(n):[].concat(e),l=[].concat(i,[t]),o=l[0],f=l.reduce(function(d,p){var u=zo(n,p,s);return d.top=gn(u.top,d.top),d.right=Ys(u.right,d.right),d.bottom=Ys(u.bottom,d.bottom),d.left=gn(u.left,d.left),d},zo(n,o,s));return f.width=f.right-f.left,f.height=f.bottom-f.top,f.x=f.left,f.y=f.top,f}function la(n){var e=n.reference,t=n.element,s=n.placement,i=s?Vt(s):null,l=s?Fn(s):null,o=e.x+e.width/2-t.width/2,f=e.y+e.height/2-t.height/2,d;switch(i){case nt:d={x:o,y:e.y-t.height};break;case ht:d={x:o,y:e.y+e.height};break;case mt:d={x:e.x+e.width,y:f};break;case st:d={x:e.x-t.width,y:f};break;default:d={x:e.x,y:e.y}}var p=i?Ui(i):null;if(p!=null){var u=p==="y"?"height":"width";switch(l){case bn:d[p]=d[p]-(e[u]/2-t[u]/2);break;case Vn:d[p]=d[p]+(e[u]/2-t[u]/2);break}}return d}function zn(n,e){e===void 0&&(e={});var t=e,s=t.placement,i=s===void 0?n.placement:s,l=t.strategy,o=l===void 0?n.strategy:l,f=t.boundary,d=f===void 0?Wr:f,p=t.rootBoundary,u=p===void 0?zi:p,c=t.elementContext,m=c===void 0?$n:c,h=t.altBoundary,g=h===void 0?!1:h,A=t.padding,y=A===void 0?0:A,E=na(typeof y!="number"?y:sa(y,qn)),C=m===$n?Fr:$n,N=n.rects.popper,b=n.elements[g?C:m],v=Rc(vn(b)?b:b.contextElement||un(n.elements.popper),d,u,o),w=Wn(n.elements.reference),S=la({reference:w,element:N,strategy:"absolute",placement:i}),M=Ni(Object.assign({},N,S)),G=m===$n?M:w,U={top:v.top-G.top+E.top,bottom:G.bottom-v.bottom+E.bottom,left:v.left-G.left+E.left,right:G.right-v.right+E.right},K=n.modifiersData.offset;if(m===$n&&K){var J=K[i];Object.keys(U).forEach(function(q){var ne=[mt,ht].indexOf(q)>=0?1:-1,O=[nt,ht].indexOf(q)>=0?"y":"x";U[q]+=J[O]*ne})}return U}function jc(n,e){e===void 0&&(e={});var t=e,s=t.placement,i=t.boundary,l=t.rootBoundary,o=t.padding,f=t.flipVariations,d=t.allowedAutoPlacements,p=d===void 0?Gi:d,u=Fn(s),c=u?f?Ci:Ci.filter(function(g){return Fn(g)===u}):qn,m=c.filter(function(g){return p.indexOf(g)>=0});m.length===0&&(m=c);var h=m.reduce(function(g,A){return g[A]=zn(n,{placement:A,boundary:i,rootBoundary:l,padding:o})[Vt(A)],g},{});return Object.keys(h).sort(function(g,A){return h[g]-h[A]})}function Hc(n){if(Vt(n)===xs)return[];var e=Vs(n);return[Fo(n),e,Fo(e)]}function Vc(n){var e=n.state,t=n.options,s=n.name;if(!e.modifiersData[s]._skip){for(var i=t.mainAxis,l=i===void 0?!0:i,o=t.altAxis,f=o===void 0?!0:o,d=t.fallbackPlacements,p=t.padding,u=t.boundary,c=t.rootBoundary,m=t.altBoundary,h=t.flipVariations,g=h===void 0?!0:h,A=t.allowedAutoPlacements,y=e.options.placement,E=Vt(y),C=E===y,N=d||(C||!g?[Vs(y)]:Hc(y)),b=[y].concat(N).reduce(function(Z,de){return Z.concat(Vt(de)===xs?jc(e,{placement:de,boundary:u,rootBoundary:c,padding:p,flipVariations:g,allowedAutoPlacements:A}):de)},[]),v=e.rects.reference,w=e.rects.popper,S=new Map,M=!0,G=b[0],U=0;U=0,O=ne?"width":"height",X=zn(e,{placement:K,boundary:u,rootBoundary:c,altBoundary:m,padding:p}),I=ne?q?mt:st:q?ht:nt;v[O]>w[O]&&(I=Vs(I));var le=Vs(I),se=[];if(l&&se.push(X[J]<=0),f&&se.push(X[I]<=0,X[le]<=0),se.every(function(Z){return Z})){G=K,M=!1;break}S.set(K,se)}if(M)for(var ie=g?3:1,_e=function(de){var ke=b.find(function(ae){var oe=S.get(ae);if(oe)return oe.slice(0,de).every(function(Ae){return Ae})});if(ke)return G=ke,"break"},B=ie;B>0;B--){var Q=_e(B);if(Q==="break")break}e.placement!==G&&(e.modifiersData[s]._skip=!0,e.placement=G,e.reset=!0)}}const ra={name:"flip",enabled:!0,phase:"main",fn:Vc,requiresIfExists:["offset"],data:{_skip:!1}};function Go(n,e,t){return t===void 0&&(t={x:0,y:0}),{top:n.top-e.height-t.y,right:n.right-e.width+t.x,bottom:n.bottom-e.height+t.y,left:n.left-e.width-t.x}}function Ko(n){return[nt,mt,ht,st].some(function(e){return n[e]>=0})}function Bc(n){var e=n.state,t=n.name,s=e.rects.reference,i=e.rects.popper,l=e.modifiersData.preventOverflow,o=zn(e,{elementContext:"reference"}),f=zn(e,{altBoundary:!0}),d=Go(o,s),p=Go(f,i,l),u=Ko(d),c=Ko(p);e.modifiersData[t]={referenceClippingOffsets:d,popperEscapeOffsets:p,isReferenceHidden:u,hasPopperEscaped:c},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":u,"data-popper-escaped":c})}const aa={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:Bc};function Wc(n,e,t){var s=Vt(n),i=[st,nt].indexOf(s)>=0?-1:1,l=typeof t=="function"?t(Object.assign({},e,{placement:n})):t,o=l[0],f=l[1];return o=o||0,f=(f||0)*i,[st,mt].indexOf(s)>=0?{x:f,y:o}:{x:o,y:f}}function Fc(n){var e=n.state,t=n.options,s=n.name,i=t.offset,l=i===void 0?[0,0]:i,o=Gi.reduce(function(u,c){return u[c]=Wc(c,e.rects,l),u},{}),f=o[e.placement],d=f.x,p=f.y;e.modifiersData.popperOffsets!=null&&(e.modifiersData.popperOffsets.x+=d,e.modifiersData.popperOffsets.y+=p),e.modifiersData[s]=o}const ca={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:Fc};function zc(n){var e=n.state,t=n.name;e.modifiersData[t]=la({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})}const eo={name:"popperOffsets",enabled:!0,phase:"read",fn:zc,data:{}};function Gc(n){return n==="x"?"y":"x"}function Kc(n){var e=n.state,t=n.options,s=n.name,i=t.mainAxis,l=i===void 0?!0:i,o=t.altAxis,f=o===void 0?!1:o,d=t.boundary,p=t.rootBoundary,u=t.altBoundary,c=t.padding,m=t.tether,h=m===void 0?!0:m,g=t.tetherOffset,A=g===void 0?0:g,y=zn(e,{boundary:d,rootBoundary:p,padding:c,altBoundary:u}),E=Vt(e.placement),C=Fn(e.placement),N=!C,b=Ui(E),v=Gc(b),w=e.modifiersData.popperOffsets,S=e.rects.reference,M=e.rects.popper,G=typeof A=="function"?A(Object.assign({},e.rects,{placement:e.placement})):A,U=typeof G=="number"?{mainAxis:G,altAxis:G}:Object.assign({mainAxis:0,altAxis:0},G),K=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,J={x:0,y:0};if(!!w){if(l){var q,ne=b==="y"?nt:st,O=b==="y"?ht:mt,X=b==="y"?"height":"width",I=w[b],le=I+y[ne],se=I-y[O],ie=h?-M[X]/2:0,_e=C===bn?S[X]:M[X],B=C===bn?-M[X]:-S[X],Q=e.elements.arrow,Z=h&&Q?qi(Q):{width:0,height:0},de=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:ta(),ke=de[ne],ae=de[O],oe=ns(0,S[X],Z[X]),Ae=N?S[X]/2-ie-oe-ke-U.mainAxis:_e-oe-ke-U.mainAxis,Ne=N?-S[X]/2+ie+oe+ae+U.mainAxis:B+oe+ae+U.mainAxis,$=e.elements.arrow&&as(e.elements.arrow),Y=$?b==="y"?$.clientTop||0:$.clientLeft||0:0,R=(q=K==null?void 0:K[b])!=null?q:0,W=I+Ae-R-Y,x=I+Ne-R,Le=ns(h?Ys(le,W):le,I,h?gn(se,x):se);w[b]=Le,J[b]=Le-I}if(f){var Re,et=b==="x"?nt:st,he=b==="x"?ht:mt,me=w[v],Te=v==="y"?"height":"width",F=me+y[et],Oe=me-y[he],Be=[nt,st].indexOf(E)!==-1,at=(Re=K==null?void 0:K[v])!=null?Re:0,Ye=Be?F:me-S[Te]-M[Te]-at+U.altAxis,We=Be?me+S[Te]+M[Te]-at-U.altAxis:Oe,vt=h&&Be?kc(Ye,me,We):ns(h?Ye:F,me,h?We:Oe);w[v]=vt,J[v]=vt-me}e.modifiersData[s]=J}}const ua={name:"preventOverflow",enabled:!0,phase:"main",fn:Kc,requiresIfExists:["offset"]};function Yc(n){return{scrollLeft:n.scrollLeft,scrollTop:n.scrollTop}}function qc(n){return n===Tt(n)||!Et(n)?Ji(n):Yc(n)}function Uc(n){var e=n.getBoundingClientRect(),t=Bn(e.width)/n.offsetWidth||1,s=Bn(e.height)/n.offsetHeight||1;return t!==1||s!==1}function Qc(n,e,t){t===void 0&&(t=!1);var s=Et(e),i=Et(e)&&Uc(e),l=un(e),o=Wn(n,i,t),f={scrollLeft:0,scrollTop:0},d={x:0,y:0};return(s||!s&&!t)&&((Ft(e)!=="body"||xi(l))&&(f=qc(e)),Et(e)?(d=Wn(e,!0),d.x+=e.clientLeft,d.y+=e.clientTop):l&&(d.x=Zi(l))),{x:o.left+f.scrollLeft-d.x,y:o.top+f.scrollTop-d.y,width:o.width,height:o.height}}function Xc(n){var e=new Map,t=new Set,s=[];n.forEach(function(l){e.set(l.name,l)});function i(l){t.add(l.name);var o=[].concat(l.requires||[],l.requiresIfExists||[]);o.forEach(function(f){if(!t.has(f)){var d=e.get(f);d&&i(d)}}),s.push(l)}return n.forEach(function(l){t.has(l.name)||i(l)}),s}function Jc(n){var e=Xc(n);return Zr.reduce(function(t,s){return t.concat(e.filter(function(i){return i.phase===s}))},[])}function Zc(n){var e;return function(){return e||(e=new Promise(function(t){Promise.resolve().then(function(){e=void 0,t(n())})})),e}}function xc(n){var e=n.reduce(function(t,s){var i=t[s.name];return t[s.name]=i?Object.assign({},i,s,{options:Object.assign({},i.options,s.options),data:Object.assign({},i.data,s.data)}):s,t},{});return Object.keys(e).map(function(t){return e[t]})}var Yo={placement:"bottom",modifiers:[],strategy:"absolute"};function qo(){for(var n=arguments.length,e=new Array(n),t=0;tn==null?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase(),ru=n=>{do n+=Math.floor(Math.random()*iu);while(document.getElementById(n));return n},fa=n=>{let e=n.getAttribute("data-bs-target");if(!e||e==="#"){let t=n.getAttribute("href");if(!t||!t.includes("#")&&!t.startsWith("."))return null;t.includes("#")&&!t.startsWith("#")&&(t=`#${t.split("#")[1]}`),e=t&&t!=="#"?t.trim():null}return e},pa=n=>{const e=fa(n);return e&&document.querySelector(e)?e:null},Zt=n=>{const e=fa(n);return e?document.querySelector(e):null},au=n=>{if(!n)return 0;let{transitionDuration:e,transitionDelay:t}=window.getComputedStyle(n);const s=Number.parseFloat(e),i=Number.parseFloat(t);return!s&&!i?0:(e=e.split(",")[0],t=t.split(",")[0],(Number.parseFloat(e)+Number.parseFloat(t))*ou)},_a=n=>{n.dispatchEvent(new Event(Si))},xt=n=>!n||typeof n!="object"?!1:(typeof n.jquery<"u"&&(n=n[0]),typeof n.nodeType<"u"),rn=n=>xt(n)?n.jquery?n[0]:n:typeof n=="string"&&n.length>0?document.querySelector(n):null,Un=n=>{if(!xt(n)||n.getClientRects().length===0)return!1;const e=getComputedStyle(n).getPropertyValue("visibility")==="visible",t=n.closest("details:not([open])");if(!t)return e;if(t!==n){const s=n.closest("summary");if(s&&s.parentNode!==t||s===null)return!1}return e},an=n=>!n||n.nodeType!==Node.ELEMENT_NODE||n.classList.contains("disabled")?!0:typeof n.disabled<"u"?n.disabled:n.hasAttribute("disabled")&&n.getAttribute("disabled")!=="false",ha=n=>{if(!document.documentElement.attachShadow)return null;if(typeof n.getRootNode=="function"){const e=n.getRootNode();return e instanceof ShadowRoot?e:null}return n instanceof ShadowRoot?n:n.parentNode?ha(n.parentNode):null},qs=()=>{},cs=n=>{n.offsetHeight},ma=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,fi=[],cu=n=>{document.readyState==="loading"?(fi.length||document.addEventListener("DOMContentLoaded",()=>{for(const e of fi)e()}),fi.push(n)):n()},At=()=>document.documentElement.dir==="rtl",Ct=n=>{cu(()=>{const e=ma();if(e){const t=n.NAME,s=e.fn[t];e.fn[t]=n.jQueryInterface,e.fn[t].Constructor=n,e.fn[t].noConflict=()=>(e.fn[t]=s,n.jQueryInterface)}})},Jt=n=>{typeof n=="function"&&n()},ga=(n,e,t=!0)=>{if(!t){Jt(n);return}const s=5,i=au(e)+s;let l=!1;const o=({target:f})=>{f===e&&(l=!0,e.removeEventListener(Si,o),Jt(n))};e.addEventListener(Si,o),setTimeout(()=>{l||_a(e)},i)},no=(n,e,t,s)=>{const i=n.length;let l=n.indexOf(e);return l===-1?!t&&s?n[i-1]:n[0]:(l+=t?1:-1,s&&(l=(l+i)%i),n[Math.max(0,Math.min(l,i-1))])},uu=/[^.]*(?=\..*)\.|.*/,du=/\..*/,fu=/::\d+$/,pi={};let Uo=1;const ba={mouseenter:"mouseover",mouseleave:"mouseout"},pu=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function va(n,e){return e&&`${e}::${Uo++}`||n.uidEvent||Uo++}function wa(n){const e=va(n);return n.uidEvent=e,pi[e]=pi[e]||{},pi[e]}function _u(n,e){return function t(s){return so(s,{delegateTarget:n}),t.oneOff&&z.off(n,s.type,e),e.apply(n,[s])}}function hu(n,e,t){return function s(i){const l=n.querySelectorAll(e);for(let{target:o}=i;o&&o!==this;o=o.parentNode)for(const f of l)if(f===o)return so(i,{delegateTarget:o}),s.oneOff&&z.off(n,i.type,e,t),t.apply(o,[i])}}function ya(n,e,t=null){return Object.values(n).find(s=>s.callable===e&&s.delegationSelector===t)}function ka(n,e,t){const s=typeof e=="string",i=s?t:e||t;let l=Ea(n);return pu.has(l)||(l=n),[s,i,l]}function Qo(n,e,t,s,i){if(typeof e!="string"||!n)return;let[l,o,f]=ka(e,t,s);e in ba&&(o=(g=>function(A){if(!A.relatedTarget||A.relatedTarget!==A.delegateTarget&&!A.delegateTarget.contains(A.relatedTarget))return g.call(this,A)})(o));const d=wa(n),p=d[f]||(d[f]={}),u=ya(p,o,l?t:null);if(u){u.oneOff=u.oneOff&&i;return}const c=va(o,e.replace(uu,"")),m=l?hu(n,t,o):_u(n,o);m.delegationSelector=l?t:null,m.callable=o,m.oneOff=i,m.uidEvent=c,p[c]=m,n.addEventListener(f,m,l)}function Li(n,e,t,s,i){const l=ya(e[t],s,i);!l||(n.removeEventListener(t,l,Boolean(i)),delete e[t][l.uidEvent])}function mu(n,e,t,s){const i=e[t]||{};for(const l of Object.keys(i))if(l.includes(s)){const o=i[l];Li(n,e,t,o.callable,o.delegationSelector)}}function Ea(n){return n=n.replace(du,""),ba[n]||n}const z={on(n,e,t,s){Qo(n,e,t,s,!1)},one(n,e,t,s){Qo(n,e,t,s,!0)},off(n,e,t,s){if(typeof e!="string"||!n)return;const[i,l,o]=ka(e,t,s),f=o!==e,d=wa(n),p=d[o]||{},u=e.startsWith(".");if(typeof l<"u"){if(!Object.keys(p).length)return;Li(n,d,o,l,i?t:null);return}if(u)for(const c of Object.keys(d))mu(n,d,c,e.slice(1));for(const c of Object.keys(p)){const m=c.replace(fu,"");if(!f||e.includes(m)){const h=p[c];Li(n,d,o,h.callable,h.delegationSelector)}}},trigger(n,e,t){if(typeof e!="string"||!n)return null;const s=ma(),i=Ea(e),l=e!==i;let o=null,f=!0,d=!0,p=!1;l&&s&&(o=s.Event(e,t),s(n).trigger(o),f=!o.isPropagationStopped(),d=!o.isImmediatePropagationStopped(),p=o.isDefaultPrevented());let u=new Event(e,{bubbles:f,cancelable:!0});return u=so(u,t),p&&u.preventDefault(),d&&n.dispatchEvent(u),u.defaultPrevented&&o&&o.preventDefault(),u}};function so(n,e){for(const[t,s]of Object.entries(e||{}))try{n[t]=s}catch{Object.defineProperty(n,t,{configurable:!0,get(){return s}})}return n}const sn=new Map,_i={set(n,e,t){sn.has(n)||sn.set(n,new Map);const s=sn.get(n);if(!s.has(e)&&s.size!==0){console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`);return}s.set(e,t)},get(n,e){return sn.has(n)&&sn.get(n).get(e)||null},remove(n,e){if(!sn.has(n))return;const t=sn.get(n);t.delete(e),t.size===0&&sn.delete(n)}};function Xo(n){if(n==="true")return!0;if(n==="false")return!1;if(n===Number(n).toString())return Number(n);if(n===""||n==="null")return null;if(typeof n!="string")return n;try{return JSON.parse(decodeURIComponent(n))}catch{return n}}function hi(n){return n.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}const en={setDataAttribute(n,e,t){n.setAttribute(`data-bs-${hi(e)}`,t)},removeDataAttribute(n,e){n.removeAttribute(`data-bs-${hi(e)}`)},getDataAttributes(n){if(!n)return{};const e={},t=Object.keys(n.dataset).filter(s=>s.startsWith("bs")&&!s.startsWith("bsConfig"));for(const s of t){let i=s.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=Xo(n.dataset[s])}return e},getDataAttribute(n,e){return Xo(n.getAttribute(`data-bs-${hi(e)}`))}};class us{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const s=xt(t)?en.getDataAttribute(t,"config"):{};return{...this.constructor.Default,...typeof s=="object"?s:{},...xt(t)?en.getDataAttributes(t):{},...typeof e=="object"?e:{}}}_typeCheckConfig(e,t=this.constructor.DefaultType){for(const s of Object.keys(t)){const i=t[s],l=e[s],o=xt(l)?"element":lu(l);if(!new RegExp(i).test(o))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${s}" provided type "${o}" but expected type "${i}".`)}}}const gu="5.2.0";class Lt extends us{constructor(e,t){super(),e=rn(e),e&&(this._element=e,this._config=this._getConfig(t),_i.set(this._element,this.constructor.DATA_KEY,this))}dispose(){_i.remove(this._element,this.constructor.DATA_KEY),z.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t,s=!0){ga(e,t,s)}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return _i.get(rn(e),this.DATA_KEY)}static getOrCreateInstance(e,t={}){return this.getInstance(e)||new this(e,typeof t=="object"?t:null)}static get VERSION(){return gu}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const ni=(n,e="hide")=>{const t=`click.dismiss${n.EVENT_KEY}`,s=n.NAME;z.on(document,t,`[data-bs-dismiss="${s}"]`,function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),an(this))return;const l=Zt(this)||this.closest(`.${s}`);n.getOrCreateInstance(l)[e]()})},bu="alert",vu="bs.alert",Aa=`.${vu}`,wu=`close${Aa}`,yu=`closed${Aa}`,ku="fade",Eu="show";class si extends Lt{static get NAME(){return bu}close(){if(z.trigger(this._element,wu).defaultPrevented)return;this._element.classList.remove(Eu);const t=this._element.classList.contains(ku);this._queueCallback(()=>this._destroyElement(),this._element,t)}_destroyElement(){this._element.remove(),z.trigger(this._element,yu),this.dispose()}static jQueryInterface(e){return this.each(function(){const t=si.getOrCreateInstance(this);if(typeof e=="string"){if(t[e]===void 0||e.startsWith("_")||e==="constructor")throw new TypeError(`No method named "${e}"`);t[e](this)}})}}ni(si,"close");Ct(si);const Au="button",Tu="bs.button",Cu=`.${Tu}`,Ou=".data-api",Nu="active",Jo='[data-bs-toggle="button"]',Su=`click${Cu}${Ou}`;class ii extends Lt{static get NAME(){return Au}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle(Nu))}static jQueryInterface(e){return this.each(function(){const t=ii.getOrCreateInstance(this);e==="toggle"&&t[e]()})}}z.on(document,Su,Jo,n=>{n.preventDefault();const e=n.target.closest(Jo);ii.getOrCreateInstance(e).toggle()});Ct(ii);const we={find(n,e=document.documentElement){return[].concat(...Element.prototype.querySelectorAll.call(e,n))},findOne(n,e=document.documentElement){return Element.prototype.querySelector.call(e,n)},children(n,e){return[].concat(...n.children).filter(t=>t.matches(e))},parents(n,e){const t=[];let s=n.parentNode.closest(e);for(;s;)t.push(s),s=s.parentNode.closest(e);return t},prev(n,e){let t=n.previousElementSibling;for(;t;){if(t.matches(e))return[t];t=t.previousElementSibling}return[]},next(n,e){let t=n.nextElementSibling;for(;t;){if(t.matches(e))return[t];t=t.nextElementSibling}return[]},focusableChildren(n){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(t=>`${t}:not([tabindex^="-"])`).join(",");return this.find(e,n).filter(t=>!an(t)&&Un(t))}},Lu="swipe",Qn=".bs.swipe",Du=`touchstart${Qn}`,Iu=`touchmove${Qn}`,Mu=`touchend${Qn}`,$u=`pointerdown${Qn}`,Pu=`pointerup${Qn}`,Ru="touch",ju="pen",Hu="pointer-event",Vu=40,Bu={endCallback:null,leftCallback:null,rightCallback:null},Wu={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class Us extends us{constructor(e,t){super(),this._element=e,!(!e||!Us.isSupported())&&(this._config=this._getConfig(t),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Bu}static get DefaultType(){return Wu}static get NAME(){return Lu}dispose(){z.off(this._element,Qn)}_start(e){if(!this._supportPointerEvents){this._deltaX=e.touches[0].clientX;return}this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX)}_end(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX),this._handleSwipe(),Jt(this._config.endCallback)}_move(e){this._deltaX=e.touches&&e.touches.length>1?0:e.touches[0].clientX-this._deltaX}_handleSwipe(){const e=Math.abs(this._deltaX);if(e<=Vu)return;const t=e/this._deltaX;this._deltaX=0,t&&Jt(t>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(z.on(this._element,$u,e=>this._start(e)),z.on(this._element,Pu,e=>this._end(e)),this._element.classList.add(Hu)):(z.on(this._element,Du,e=>this._start(e)),z.on(this._element,Iu,e=>this._move(e)),z.on(this._element,Mu,e=>this._end(e)))}_eventIsPointerPenTouch(e){return this._supportPointerEvents&&(e.pointerType===ju||e.pointerType===Ru)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const Fu="carousel",zu="bs.carousel",dn=`.${zu}`,Ta=".data-api",Gu="ArrowLeft",Ku="ArrowRight",Yu=500,Jn="next",In="prev",Pn="left",Bs="right",qu=`slide${dn}`,mi=`slid${dn}`,Uu=`keydown${dn}`,Qu=`mouseenter${dn}`,Xu=`mouseleave${dn}`,Ju=`dragstart${dn}`,Zu=`load${dn}${Ta}`,xu=`click${dn}${Ta}`,Ca="carousel",Ls="active",ed="slide",td="carousel-item-end",nd="carousel-item-start",sd="carousel-item-next",id="carousel-item-prev",Oa=".active",Na=".carousel-item",od=Oa+Na,ld=".carousel-item img",rd=".carousel-indicators",ad="[data-bs-slide], [data-bs-slide-to]",cd='[data-bs-ride="carousel"]',ud={[Gu]:Bs,[Ku]:Pn},dd={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},fd={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class ds extends Lt{constructor(e,t){super(e,t),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=we.findOne(rd,this._element),this._addEventListeners(),this._config.ride===Ca&&this.cycle()}static get Default(){return dd}static get DefaultType(){return fd}static get NAME(){return Fu}next(){this._slide(Jn)}nextWhenVisible(){!document.hidden&&Un(this._element)&&this.next()}prev(){this._slide(In)}pause(){this._isSliding&&_a(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval(()=>this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){if(!!this._config.ride){if(this._isSliding){z.one(this._element,mi,()=>this.cycle());return}this.cycle()}}to(e){const t=this._getItems();if(e>t.length-1||e<0)return;if(this._isSliding){z.one(this._element,mi,()=>this.to(e));return}const s=this._getItemIndex(this._getActive());if(s===e)return;const i=e>s?Jn:In;this._slide(i,t[e])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(e){return e.defaultInterval=e.interval,e}_addEventListeners(){this._config.keyboard&&z.on(this._element,Uu,e=>this._keydown(e)),this._config.pause==="hover"&&(z.on(this._element,Qu,()=>this.pause()),z.on(this._element,Xu,()=>this._maybeEnableCycle())),this._config.touch&&Us.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const s of we.find(ld,this._element))z.on(s,Ju,i=>i.preventDefault());const t={leftCallback:()=>this._slide(this._directionToOrder(Pn)),rightCallback:()=>this._slide(this._directionToOrder(Bs)),endCallback:()=>{this._config.pause==="hover"&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),Yu+this._config.interval))}};this._swipeHelper=new Us(this._element,t)}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;const t=ud[e.key];t&&(e.preventDefault(),this._slide(this._directionToOrder(t)))}_getItemIndex(e){return this._getItems().indexOf(e)}_setActiveIndicatorElement(e){if(!this._indicatorsElement)return;const t=we.findOne(Oa,this._indicatorsElement);t.classList.remove(Ls),t.removeAttribute("aria-current");const s=we.findOne(`[data-bs-slide-to="${e}"]`,this._indicatorsElement);s&&(s.classList.add(Ls),s.setAttribute("aria-current","true"))}_updateInterval(){const e=this._activeElement||this._getActive();if(!e)return;const t=Number.parseInt(e.getAttribute("data-bs-interval"),10);this._config.interval=t||this._config.defaultInterval}_slide(e,t=null){if(this._isSliding)return;const s=this._getActive(),i=e===Jn,l=t||no(this._getItems(),s,i,this._config.wrap);if(l===s)return;const o=this._getItemIndex(l),f=h=>z.trigger(this._element,h,{relatedTarget:l,direction:this._orderToDirection(e),from:this._getItemIndex(s),to:o});if(f(qu).defaultPrevented||!s||!l)return;const p=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=l;const u=i?nd:td,c=i?sd:id;l.classList.add(c),cs(l),s.classList.add(u),l.classList.add(u);const m=()=>{l.classList.remove(u,c),l.classList.add(Ls),s.classList.remove(Ls,c,u),this._isSliding=!1,f(mi)};this._queueCallback(m,s,this._isAnimated()),p&&this.cycle()}_isAnimated(){return this._element.classList.contains(ed)}_getActive(){return we.findOne(od,this._element)}_getItems(){return we.find(Na,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(e){return At()?e===Pn?In:Jn:e===Pn?Jn:In}_orderToDirection(e){return At()?e===In?Pn:Bs:e===In?Bs:Pn}static jQueryInterface(e){return this.each(function(){const t=ds.getOrCreateInstance(this,e);if(typeof e=="number"){t.to(e);return}if(typeof e=="string"){if(t[e]===void 0||e.startsWith("_")||e==="constructor")throw new TypeError(`No method named "${e}"`);t[e]()}})}}z.on(document,xu,ad,function(n){const e=Zt(this);if(!e||!e.classList.contains(Ca))return;n.preventDefault();const t=ds.getOrCreateInstance(e),s=this.getAttribute("data-bs-slide-to");if(s){t.to(s),t._maybeEnableCycle();return}if(en.getDataAttribute(this,"slide")==="next"){t.next(),t._maybeEnableCycle();return}t.prev(),t._maybeEnableCycle()});z.on(window,Zu,()=>{const n=we.find(cd);for(const e of n)ds.getOrCreateInstance(e)});Ct(ds);const pd="collapse",_d="bs.collapse",fs=`.${_d}`,hd=".data-api",md=`show${fs}`,gd=`shown${fs}`,bd=`hide${fs}`,vd=`hidden${fs}`,wd=`click${fs}${hd}`,gi="show",jn="collapse",Ds="collapsing",yd="collapsed",kd=`:scope .${jn} .${jn}`,Ed="collapse-horizontal",Ad="width",Td="height",Cd=".collapse.show, .collapse.collapsing",Di='[data-bs-toggle="collapse"]',Od={parent:null,toggle:!0},Nd={parent:"(null|element)",toggle:"boolean"};class ls extends Lt{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const s=we.find(Di);for(const i of s){const l=pa(i),o=we.find(l).filter(f=>f===this._element);l!==null&&o.length&&this._triggerArray.push(i)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Od}static get DefaultType(){return Nd}static get NAME(){return pd}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(Cd).filter(f=>f!==this._element).map(f=>ls.getOrCreateInstance(f,{toggle:!1}))),e.length&&e[0]._isTransitioning||z.trigger(this._element,md).defaultPrevented)return;for(const f of e)f.hide();const s=this._getDimension();this._element.classList.remove(jn),this._element.classList.add(Ds),this._element.style[s]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=()=>{this._isTransitioning=!1,this._element.classList.remove(Ds),this._element.classList.add(jn,gi),this._element.style[s]="",z.trigger(this._element,gd)},o=`scroll${s[0].toUpperCase()+s.slice(1)}`;this._queueCallback(i,this._element,!0),this._element.style[s]=`${this._element[o]}px`}hide(){if(this._isTransitioning||!this._isShown()||z.trigger(this._element,bd).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,cs(this._element),this._element.classList.add(Ds),this._element.classList.remove(jn,gi);for(const i of this._triggerArray){const l=Zt(i);l&&!this._isShown(l)&&this._addAriaAndCollapsedClass([i],!1)}this._isTransitioning=!0;const s=()=>{this._isTransitioning=!1,this._element.classList.remove(Ds),this._element.classList.add(jn),z.trigger(this._element,vd)};this._element.style[t]="",this._queueCallback(s,this._element,!0)}_isShown(e=this._element){return e.classList.contains(gi)}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=rn(e.parent),e}_getDimension(){return this._element.classList.contains(Ed)?Ad:Td}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(Di);for(const t of e){const s=Zt(t);s&&this._addAriaAndCollapsedClass([t],this._isShown(s))}}_getFirstLevelChildren(e){const t=we.find(kd,this._config.parent);return we.find(e,this._config.parent).filter(s=>!t.includes(s))}_addAriaAndCollapsedClass(e,t){if(!!e.length)for(const s of e)s.classList.toggle(yd,!t),s.setAttribute("aria-expanded",t)}static jQueryInterface(e){const t={};return typeof e=="string"&&/show|hide/.test(e)&&(t.toggle=!1),this.each(function(){const s=ls.getOrCreateInstance(this,t);if(typeof e=="string"){if(typeof s[e]>"u")throw new TypeError(`No method named "${e}"`);s[e]()}})}}z.on(document,wd,Di,function(n){(n.target.tagName==="A"||n.delegateTarget&&n.delegateTarget.tagName==="A")&&n.preventDefault();const e=pa(this),t=we.find(e);for(const s of t)ls.getOrCreateInstance(s,{toggle:!1}).toggle()});Ct(ls);const Zo="dropdown",Sd="bs.dropdown",yn=`.${Sd}`,io=".data-api",Ld="Escape",xo="Tab",Dd="ArrowUp",el="ArrowDown",Id=2,Md=`hide${yn}`,$d=`hidden${yn}`,Pd=`show${yn}`,Rd=`shown${yn}`,Sa=`click${yn}${io}`,La=`keydown${yn}${io}`,jd=`keyup${yn}${io}`,Rn="show",Hd="dropup",Vd="dropend",Bd="dropstart",Wd="dropup-center",Fd="dropdown-center",oi='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',zd=`${oi}.${Rn}`,Da=".dropdown-menu",Gd=".navbar",Kd=".navbar-nav",Yd=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",qd=At()?"top-end":"top-start",Ud=At()?"top-start":"top-end",Qd=At()?"bottom-end":"bottom-start",Xd=At()?"bottom-start":"bottom-end",Jd=At()?"left-start":"right-start",Zd=At()?"right-start":"left-start",xd="top",ef="bottom",tf={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},nf={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class Nt extends Lt{constructor(e,t){super(e,t),this._popper=null,this._parent=this._element.parentNode,this._menu=we.findOne(Da,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return tf}static get DefaultType(){return nf}static get NAME(){return Zo}toggle(){return this._isShown()?this.hide():this.show()}show(){if(an(this._element)||this._isShown())return;const e={relatedTarget:this._element};if(!z.trigger(this._element,Pd,e).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(Kd))for(const s of[].concat(...document.body.children))z.on(s,"mouseover",qs);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Rn),this._element.classList.add(Rn),z.trigger(this._element,Rd,e)}}hide(){if(an(this._element)||!this._isShown())return;const e={relatedTarget:this._element};this._completeHide(e)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(e){if(!z.trigger(this._element,Md,e).defaultPrevented){if("ontouchstart"in document.documentElement)for(const s of[].concat(...document.body.children))z.off(s,"mouseover",qs);this._popper&&this._popper.destroy(),this._menu.classList.remove(Rn),this._element.classList.remove(Rn),this._element.setAttribute("aria-expanded","false"),en.removeDataAttribute(this._menu,"popper"),z.trigger(this._element,$d,e)}}_getConfig(e){if(e=super._getConfig(e),typeof e.reference=="object"&&!xt(e.reference)&&typeof e.reference.getBoundingClientRect!="function")throw new TypeError(`${Zo.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return e}_createPopper(){if(typeof da>"u")throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;this._config.reference==="parent"?e=this._parent:xt(this._config.reference)?e=rn(this._config.reference):typeof this._config.reference=="object"&&(e=this._config.reference);const t=this._getPopperConfig();this._popper=to(e,this._menu,t)}_isShown(){return this._menu.classList.contains(Rn)}_getPlacement(){const e=this._parent;if(e.classList.contains(Vd))return Jd;if(e.classList.contains(Bd))return Zd;if(e.classList.contains(Wd))return xd;if(e.classList.contains(Fd))return ef;const t=getComputedStyle(this._menu).getPropertyValue("--bs-position").trim()==="end";return e.classList.contains(Hd)?t?Ud:qd:t?Xd:Qd}_detectNavbar(){return this._element.closest(Gd)!==null}_getOffset(){const{offset:e}=this._config;return typeof e=="string"?e.split(",").map(t=>Number.parseInt(t,10)):typeof e=="function"?t=>e(t,this._element):e}_getPopperConfig(){const e={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||this._config.display==="static")&&(en.setDataAttribute(this._menu,"popper","static"),e.modifiers=[{name:"applyStyles",enabled:!1}]),{...e,...typeof this._config.popperConfig=="function"?this._config.popperConfig(e):this._config.popperConfig}}_selectMenuItem({key:e,target:t}){const s=we.find(Yd,this._menu).filter(i=>Un(i));!s.length||no(s,t,e===el,!s.includes(t)).focus()}static jQueryInterface(e){return this.each(function(){const t=Nt.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof t[e]>"u")throw new TypeError(`No method named "${e}"`);t[e]()}})}static clearMenus(e){if(e.button===Id||e.type==="keyup"&&e.key!==xo)return;const t=we.find(zd);for(const s of t){const i=Nt.getInstance(s);if(!i||i._config.autoClose===!1)continue;const l=e.composedPath(),o=l.includes(i._menu);if(l.includes(i._element)||i._config.autoClose==="inside"&&!o||i._config.autoClose==="outside"&&o||i._menu.contains(e.target)&&(e.type==="keyup"&&e.key===xo||/input|select|option|textarea|form/i.test(e.target.tagName)))continue;const f={relatedTarget:i._element};e.type==="click"&&(f.clickEvent=e),i._completeHide(f)}}static dataApiKeydownHandler(e){const t=/input|textarea/i.test(e.target.tagName),s=e.key===Ld,i=[Dd,el].includes(e.key);if(!i&&!s||t&&!s)return;e.preventDefault();const l=we.findOne(oi,e.delegateTarget.parentNode),o=Nt.getOrCreateInstance(l);if(i){e.stopPropagation(),o.show(),o._selectMenuItem(e);return}o._isShown()&&(e.stopPropagation(),o.hide(),l.focus())}}z.on(document,La,oi,Nt.dataApiKeydownHandler);z.on(document,La,Da,Nt.dataApiKeydownHandler);z.on(document,Sa,Nt.clearMenus);z.on(document,jd,Nt.clearMenus);z.on(document,Sa,oi,function(n){n.preventDefault(),Nt.getOrCreateInstance(this).toggle()});Ct(Nt);const tl=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",nl=".sticky-top",Is="padding-right",sl="margin-right";class Ii{constructor(){this._element=document.body}getWidth(){const e=document.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}hide(){const e=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,Is,t=>t+e),this._setElementAttributes(tl,Is,t=>t+e),this._setElementAttributes(nl,sl,t=>t-e)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,Is),this._resetElementAttributes(tl,Is),this._resetElementAttributes(nl,sl)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(e,t,s){const i=this.getWidth(),l=o=>{if(o!==this._element&&window.innerWidth>o.clientWidth+i)return;this._saveInitialAttribute(o,t);const f=window.getComputedStyle(o).getPropertyValue(t);o.style.setProperty(t,`${s(Number.parseFloat(f))}px`)};this._applyManipulationCallback(e,l)}_saveInitialAttribute(e,t){const s=e.style.getPropertyValue(t);s&&en.setDataAttribute(e,t,s)}_resetElementAttributes(e,t){const s=i=>{const l=en.getDataAttribute(i,t);if(l===null){i.style.removeProperty(t);return}en.removeDataAttribute(i,t),i.style.setProperty(t,l)};this._applyManipulationCallback(e,s)}_applyManipulationCallback(e,t){if(xt(e)){t(e);return}for(const s of we.find(e,this._element))t(s)}}const Ia="backdrop",sf="fade",il="show",ol=`mousedown.bs.${Ia}`,of={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},lf={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ma extends us{constructor(e){super(),this._config=this._getConfig(e),this._isAppended=!1,this._element=null}static get Default(){return of}static get DefaultType(){return lf}static get NAME(){return Ia}show(e){if(!this._config.isVisible){Jt(e);return}this._append();const t=this._getElement();this._config.isAnimated&&cs(t),t.classList.add(il),this._emulateAnimation(()=>{Jt(e)})}hide(e){if(!this._config.isVisible){Jt(e);return}this._getElement().classList.remove(il),this._emulateAnimation(()=>{this.dispose(),Jt(e)})}dispose(){!this._isAppended||(z.off(this._element,ol),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const e=document.createElement("div");e.className=this._config.className,this._config.isAnimated&&e.classList.add(sf),this._element=e}return this._element}_configAfterMerge(e){return e.rootElement=rn(e.rootElement),e}_append(){if(this._isAppended)return;const e=this._getElement();this._config.rootElement.append(e),z.on(e,ol,()=>{Jt(this._config.clickCallback)}),this._isAppended=!0}_emulateAnimation(e){ga(e,this._getElement(),this._config.isAnimated)}}const rf="focustrap",af="bs.focustrap",Qs=`.${af}`,cf=`focusin${Qs}`,uf=`keydown.tab${Qs}`,df="Tab",ff="forward",ll="backward",pf={autofocus:!0,trapElement:null},_f={autofocus:"boolean",trapElement:"element"};class $a extends us{constructor(e){super(),this._config=this._getConfig(e),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return pf}static get DefaultType(){return _f}static get NAME(){return rf}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),z.off(document,Qs),z.on(document,cf,e=>this._handleFocusin(e)),z.on(document,uf,e=>this._handleKeydown(e)),this._isActive=!0)}deactivate(){!this._isActive||(this._isActive=!1,z.off(document,Qs))}_handleFocusin(e){const{trapElement:t}=this._config;if(e.target===document||e.target===t||t.contains(e.target))return;const s=we.focusableChildren(t);s.length===0?t.focus():this._lastTabNavDirection===ll?s[s.length-1].focus():s[0].focus()}_handleKeydown(e){e.key===df&&(this._lastTabNavDirection=e.shiftKey?ll:ff)}}const hf="modal",mf="bs.modal",Gt=`.${mf}`,gf=".data-api",bf="Escape",vf=`hide${Gt}`,wf=`hidePrevented${Gt}`,Pa=`hidden${Gt}`,Ra=`show${Gt}`,yf=`shown${Gt}`,kf=`resize${Gt}`,Ef=`mousedown.dismiss${Gt}`,Af=`keydown.dismiss${Gt}`,Tf=`click${Gt}${gf}`,rl="modal-open",Cf="fade",al="show",bi="modal-static",Of=".modal.show",Nf=".modal-dialog",Sf=".modal-body",Lf='[data-bs-toggle="modal"]',Df={backdrop:!0,focus:!0,keyboard:!0},If={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class wn extends Lt{constructor(e,t){super(e,t),this._dialog=we.findOne(Nf,this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new Ii,this._addEventListeners()}static get Default(){return Df}static get DefaultType(){return If}static get NAME(){return hf}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){this._isShown||this._isTransitioning||z.trigger(this._element,Ra,{relatedTarget:e}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(rl),this._adjustDialog(),this._backdrop.show(()=>this._showElement(e)))}hide(){!this._isShown||this._isTransitioning||z.trigger(this._element,vf).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(al),this._queueCallback(()=>this._hideModal(),this._element,this._isAnimated()))}dispose(){for(const e of[window,this._dialog])z.off(e,Gt);this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ma({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new $a({trapElement:this._element})}_showElement(e){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const t=we.findOne(Sf,this._dialog);t&&(t.scrollTop=0),cs(this._element),this._element.classList.add(al);const s=()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,z.trigger(this._element,yf,{relatedTarget:e})};this._queueCallback(s,this._dialog,this._isAnimated())}_addEventListeners(){z.on(this._element,Af,e=>{if(e.key===bf){if(this._config.keyboard){e.preventDefault(),this.hide();return}this._triggerBackdropTransition()}}),z.on(window,kf,()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()}),z.on(this._element,Ef,e=>{if(e.target===e.currentTarget){if(this._config.backdrop==="static"){this._triggerBackdropTransition();return}this._config.backdrop&&this.hide()}})}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(rl),this._resetAdjustments(),this._scrollBar.reset(),z.trigger(this._element,Pa)})}_isAnimated(){return this._element.classList.contains(Cf)}_triggerBackdropTransition(){if(z.trigger(this._element,wf).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,s=this._element.style.overflowY;s==="hidden"||this._element.classList.contains(bi)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(bi),this._queueCallback(()=>{this._element.classList.remove(bi),this._queueCallback(()=>{this._element.style.overflowY=s},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const e=this._element.scrollHeight>document.documentElement.clientHeight,t=this._scrollBar.getWidth(),s=t>0;if(s&&!e){const i=At()?"paddingLeft":"paddingRight";this._element.style[i]=`${t}px`}if(!s&&e){const i=At()?"paddingRight":"paddingLeft";this._element.style[i]=`${t}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(e,t){return this.each(function(){const s=wn.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof s[e]>"u")throw new TypeError(`No method named "${e}"`);s[e](t)}})}}z.on(document,Tf,Lf,function(n){const e=Zt(this);["A","AREA"].includes(this.tagName)&&n.preventDefault(),z.one(e,Ra,i=>{i.defaultPrevented||z.one(e,Pa,()=>{Un(this)&&this.focus()})});const t=we.findOne(Of);t&&wn.getInstance(t).hide(),wn.getOrCreateInstance(e).toggle(this)});ni(wn);Ct(wn);const Mf="offcanvas",$f="bs.offcanvas",nn=`.${$f}`,ja=".data-api",Pf=`load${nn}${ja}`,Rf="Escape",cl="show",ul="showing",dl="hiding",jf="offcanvas-backdrop",Ha=".offcanvas.show",Hf=`show${nn}`,Vf=`shown${nn}`,Bf=`hide${nn}`,fl=`hidePrevented${nn}`,Va=`hidden${nn}`,Wf=`resize${nn}`,Ff=`click${nn}${ja}`,zf=`keydown.dismiss${nn}`,Gf='[data-bs-toggle="offcanvas"]',Kf={backdrop:!0,keyboard:!0,scroll:!1},Yf={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class cn extends Lt{constructor(e,t){super(e,t),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return Kf}static get DefaultType(){return Yf}static get NAME(){return Mf}toggle(e){return this._isShown?this.hide():this.show(e)}show(e){if(this._isShown||z.trigger(this._element,Hf,{relatedTarget:e}).defaultPrevented)return;this._isShown=!0,this._backdrop.show(),this._config.scroll||new Ii().hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(ul);const s=()=>{(!this._config.scroll||this._config.backdrop)&&this._focustrap.activate(),this._element.classList.add(cl),this._element.classList.remove(ul),z.trigger(this._element,Vf,{relatedTarget:e})};this._queueCallback(s,this._element,!0)}hide(){if(!this._isShown||z.trigger(this._element,Bf).defaultPrevented)return;this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(dl),this._backdrop.hide();const t=()=>{this._element.classList.remove(cl,dl),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||new Ii().reset(),z.trigger(this._element,Va)};this._queueCallback(t,this._element,!0)}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const e=()=>{if(this._config.backdrop==="static"){z.trigger(this._element,fl);return}this.hide()},t=Boolean(this._config.backdrop);return new Ma({className:jf,isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?e:null})}_initializeFocusTrap(){return new $a({trapElement:this._element})}_addEventListeners(){z.on(this._element,zf,e=>{if(e.key===Rf){if(!this._config.keyboard){z.trigger(this._element,fl);return}this.hide()}})}static jQueryInterface(e){return this.each(function(){const t=cn.getOrCreateInstance(this,e);if(typeof e=="string"){if(t[e]===void 0||e.startsWith("_")||e==="constructor")throw new TypeError(`No method named "${e}"`);t[e](this)}})}}z.on(document,Ff,Gf,function(n){const e=Zt(this);if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),an(this))return;z.one(e,Va,()=>{Un(this)&&this.focus()});const t=we.findOne(Ha);t&&t!==e&&cn.getInstance(t).hide(),cn.getOrCreateInstance(e).toggle(this)});z.on(window,Pf,()=>{for(const n of we.find(Ha))cn.getOrCreateInstance(n).show()});z.on(window,Wf,()=>{for(const n of we.find("[aria-modal][class*=show][class*=offcanvas-]"))getComputedStyle(n).position!=="fixed"&&cn.getOrCreateInstance(n).hide()});ni(cn);Ct(cn);const qf=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Uf=/^aria-[\w-]*$/i,Qf=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,Xf=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Jf=(n,e)=>{const t=n.nodeName.toLowerCase();return e.includes(t)?qf.has(t)?Boolean(Qf.test(n.nodeValue)||Xf.test(n.nodeValue)):!0:e.filter(s=>s instanceof RegExp).some(s=>s.test(t))},Ba={"*":["class","dir","id","lang","role",Uf],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]};function Zf(n,e,t){if(!n.length)return n;if(t&&typeof t=="function")return t(n);const i=new window.DOMParser().parseFromString(n,"text/html"),l=[].concat(...i.body.querySelectorAll("*"));for(const o of l){const f=o.nodeName.toLowerCase();if(!Object.keys(e).includes(f)){o.remove();continue}const d=[].concat(...o.attributes),p=[].concat(e["*"]||[],e[f]||[]);for(const u of d)Jf(u,p)||o.removeAttribute(u.nodeName)}return i.body.innerHTML}const xf="TemplateFactory",ep={allowList:Ba,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:""},tp={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},np={entry:"(string|element|function|null)",selector:"(string|element)"};class sp extends us{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return ep}static get DefaultType(){return tp}static get NAME(){return xf}getContent(){return Object.values(this._config.content).map(e=>this._resolvePossibleFunction(e)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[i,l]of Object.entries(this._config.content))this._setContent(e,l,i);const t=e.children[0],s=this._resolvePossibleFunction(this._config.extraClass);return s&&t.classList.add(...s.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,s]of Object.entries(e))super._typeCheckConfig({selector:t,entry:s},np)}_setContent(e,t,s){const i=we.findOne(s,e);if(!!i){if(t=this._resolvePossibleFunction(t),!t){i.remove();return}if(xt(t)){this._putElementInTemplate(rn(t),i);return}if(this._config.html){i.innerHTML=this._maybeSanitize(t);return}i.textContent=t}}_maybeSanitize(e){return this._config.sanitize?Zf(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return typeof e=="function"?e(this):e}_putElementInTemplate(e,t){if(this._config.html){t.innerHTML="",t.append(e);return}t.textContent=e.textContent}}const ip="tooltip",op=new Set(["sanitize","allowList","sanitizeFn"]),vi="fade",lp="modal",Ms="show",rp=".tooltip-inner",pl=`.${lp}`,_l="hide.bs.modal",Zn="hover",wi="focus",ap="click",cp="manual",up="hide",dp="hidden",fp="show",pp="shown",_p="inserted",hp="click",mp="focusin",gp="focusout",bp="mouseenter",vp="mouseleave",wp={AUTO:"auto",TOP:"top",RIGHT:At()?"left":"right",BOTTOM:"bottom",LEFT:At()?"right":"left"},yp={allowList:Ba,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,0],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},kp={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class kn extends Lt{constructor(e,t){if(typeof da>"u")throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=!1,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners()}static get Default(){return yp}static get DefaultType(){return kp}static get NAME(){return ip}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(e){if(!!this._isEnabled){if(e){const t=this._initializeOnDelegatedTarget(e);t._activeTrigger.click=!t._activeTrigger.click,t._isWithActiveTrigger()?t._enter():t._leave();return}if(this._isShown()){this._leave();return}this._enter()}}dispose(){clearTimeout(this._timeout),z.off(this._element.closest(pl),_l,this._hideModalHandler),this.tip&&this.tip.remove(),this._disposePopper(),super.dispose()}show(){if(this._element.style.display==="none")throw new Error("Please use show on visible elements");if(!(this._isWithContent()&&this._isEnabled))return;const e=z.trigger(this._element,this.constructor.eventName(fp)),s=(ha(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!s)return;this.tip&&(this.tip.remove(),this.tip=null);const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:l}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(l.append(i),z.trigger(this._element,this.constructor.eventName(_p))),this._popper?this._popper.update():this._popper=this._createPopper(i),i.classList.add(Ms),"ontouchstart"in document.documentElement)for(const f of[].concat(...document.body.children))z.on(f,"mouseover",qs);const o=()=>{const f=this._isHovered;this._isHovered=!1,z.trigger(this._element,this.constructor.eventName(pp)),f&&this._leave()};this._queueCallback(o,this.tip,this._isAnimated())}hide(){if(!this._isShown()||z.trigger(this._element,this.constructor.eventName(up)).defaultPrevented)return;const t=this._getTipElement();if(t.classList.remove(Ms),"ontouchstart"in document.documentElement)for(const i of[].concat(...document.body.children))z.off(i,"mouseover",qs);this._activeTrigger[ap]=!1,this._activeTrigger[wi]=!1,this._activeTrigger[Zn]=!1,this._isHovered=!1;const s=()=>{this._isWithActiveTrigger()||(this._isHovered||t.remove(),this._element.removeAttribute("aria-describedby"),z.trigger(this._element,this.constructor.eventName(dp)),this._disposePopper())};this._queueCallback(s,this.tip,this._isAnimated())}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove(vi,Ms),t.classList.add(`bs-${this.constructor.NAME}-auto`);const s=ru(this.constructor.NAME).toString();return t.setAttribute("id",s),this._isAnimated()&&t.classList.add(vi),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new sp({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[rp]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._config.originalTitle}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(vi)}_isShown(){return this.tip&&this.tip.classList.contains(Ms)}_createPopper(e){const t=typeof this._config.placement=="function"?this._config.placement.call(this,e,this._element):this._config.placement,s=wp[t.toUpperCase()];return to(this._element,e,this._getPopperConfig(s))}_getOffset(){const{offset:e}=this._config;return typeof e=="string"?e.split(",").map(t=>Number.parseInt(t,10)):typeof e=="function"?t=>e(t,this._element):e}_resolvePossibleFunction(e){return typeof e=="function"?e.call(this._element):e}_getPopperConfig(e){const t={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:s=>{this._getTipElement().setAttribute("data-popper-placement",s.state.placement)}}]};return{...t,...typeof this._config.popperConfig=="function"?this._config.popperConfig(t):this._config.popperConfig}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if(t==="click")z.on(this._element,this.constructor.eventName(hp),this._config.selector,s=>this.toggle(s));else if(t!==cp){const s=t===Zn?this.constructor.eventName(bp):this.constructor.eventName(mp),i=t===Zn?this.constructor.eventName(vp):this.constructor.eventName(gp);z.on(this._element,s,this._config.selector,l=>{const o=this._initializeOnDelegatedTarget(l);o._activeTrigger[l.type==="focusin"?wi:Zn]=!0,o._enter()}),z.on(this._element,i,this._config.selector,l=>{const o=this._initializeOnDelegatedTarget(l);o._activeTrigger[l.type==="focusout"?wi:Zn]=o._element.contains(l.relatedTarget),o._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},z.on(this._element.closest(pl),_l,this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const e=this._config.originalTitle;!e||(!this._element.getAttribute("aria-label")&&!this._element.textContent.trim()&&this._element.setAttribute("aria-label",e),this._element.removeAttribute("title"))}_enter(){if(this._isShown()||this._isHovered){this._isHovered=!0;return}this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show)}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=en.getDataAttributes(this._element);for(const s of Object.keys(t))op.has(s)&&delete t[s];return e={...t,...typeof e=="object"&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=e.container===!1?document.body:rn(e.container),typeof e.delay=="number"&&(e.delay={show:e.delay,hide:e.delay}),e.originalTitle=this._element.getAttribute("title")||"",typeof e.title=="number"&&(e.title=e.title.toString()),typeof e.content=="number"&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const t in this._config)this.constructor.Default[t]!==this._config[t]&&(e[t]=this._config[t]);return e}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null)}static jQueryInterface(e){return this.each(function(){const t=kn.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof t[e]>"u")throw new TypeError(`No method named "${e}"`);t[e]()}})}}Ct(kn);const Ep="popover",Ap=".popover-header",Tp=".popover-body",Cp={...kn.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},Op={...kn.DefaultType,content:"(null|string|element|function)"};class oo extends kn{static get Default(){return Cp}static get DefaultType(){return Op}static get NAME(){return Ep}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{[Ap]:this._getTitle(),[Tp]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(e){return this.each(function(){const t=oo.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof t[e]>"u")throw new TypeError(`No method named "${e}"`);t[e]()}})}}Ct(oo);const Np="scrollspy",Sp="bs.scrollspy",lo=`.${Sp}`,Lp=".data-api",Dp=`activate${lo}`,hl=`click${lo}`,Ip=`load${lo}${Lp}`,Mp="dropdown-item",Mn="active",$p='[data-bs-spy="scroll"]',yi="[href]",Pp=".nav, .list-group",ml=".nav-link",Rp=".nav-item",jp=".list-group-item",Hp=`${ml}, ${Rp} > ${ml}, ${jp}`,Vp=".dropdown",Bp=".dropdown-toggle",Wp={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null},Fp={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element"};class li extends Lt{constructor(e,t){super(e,t),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement=getComputedStyle(this._element).overflowY==="visible"?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return Wp}static get DefaultType(){return Fp}static get NAME(){return Np}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const e of this._observableSections.values())this._observer.observe(e)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(e){return e.target=rn(e.target)||document.body,e}_maybeEnableSmoothScroll(){!this._config.smoothScroll||(z.off(this._config.target,hl),z.on(this._config.target,hl,yi,e=>{const t=this._observableSections.get(e.target.hash);if(t){e.preventDefault();const s=this._rootElement||window,i=t.offsetTop-this._element.offsetTop;if(s.scrollTo){s.scrollTo({top:i,behavior:"smooth"});return}s.scrollTop=i}}))}_getNewObserver(){const e={root:this._rootElement,threshold:[.1,.5,1],rootMargin:this._getRootMargin()};return new IntersectionObserver(t=>this._observerCallback(t),e)}_observerCallback(e){const t=o=>this._targetLinks.get(`#${o.target.id}`),s=o=>{this._previousScrollData.visibleEntryTop=o.target.offsetTop,this._process(t(o))},i=(this._rootElement||document.documentElement).scrollTop,l=i>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=i;for(const o of e){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(t(o));continue}const f=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(l&&f){if(s(o),!i)return;continue}!l&&!f&&s(o)}}_getRootMargin(){return this._config.offset?`${this._config.offset}px 0px -30%`:this._config.rootMargin}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const e=we.find(yi,this._config.target);for(const t of e){if(!t.hash||an(t))continue;const s=we.findOne(t.hash,this._element);Un(s)&&(this._targetLinks.set(t.hash,t),this._observableSections.set(t.hash,s))}}_process(e){this._activeTarget!==e&&(this._clearActiveClass(this._config.target),this._activeTarget=e,e.classList.add(Mn),this._activateParents(e),z.trigger(this._element,Dp,{relatedTarget:e}))}_activateParents(e){if(e.classList.contains(Mp)){we.findOne(Bp,e.closest(Vp)).classList.add(Mn);return}for(const t of we.parents(e,Pp))for(const s of we.prev(t,Hp))s.classList.add(Mn)}_clearActiveClass(e){e.classList.remove(Mn);const t=we.find(`${yi}.${Mn}`,e);for(const s of t)s.classList.remove(Mn)}static jQueryInterface(e){return this.each(function(){const t=li.getOrCreateInstance(this,e);if(typeof e=="string"){if(t[e]===void 0||e.startsWith("_")||e==="constructor")throw new TypeError(`No method named "${e}"`);t[e]()}})}}z.on(window,Ip,()=>{for(const n of we.find($p))li.getOrCreateInstance(n)});Ct(li);const zp="tab",Gp="bs.tab",En=`.${Gp}`,Kp=`hide${En}`,Yp=`hidden${En}`,qp=`show${En}`,Up=`shown${En}`,Qp=`click${En}`,Xp=`keydown${En}`,Jp=`load${En}`,Zp="ArrowLeft",gl="ArrowRight",xp="ArrowUp",bl="ArrowDown",on="active",vl="fade",ki="show",e_="dropdown",t_=".dropdown-toggle",n_=".dropdown-menu",s_=".dropdown-item",Ei=":not(.dropdown-toggle)",i_='.list-group, .nav, [role="tablist"]',o_=".nav-item, .list-group-item",l_=`.nav-link${Ei}, .list-group-item${Ei}, [role="tab"]${Ei}`,Wa='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Ai=`${l_}, ${Wa}`,r_=`.${on}[data-bs-toggle="tab"], .${on}[data-bs-toggle="pill"], .${on}[data-bs-toggle="list"]`;class Gn extends Lt{constructor(e){super(e),this._parent=this._element.closest(i_),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),z.on(this._element,Xp,t=>this._keydown(t)))}static get NAME(){return zp}show(){const e=this._element;if(this._elemIsActive(e))return;const t=this._getActiveElem(),s=t?z.trigger(t,Kp,{relatedTarget:e}):null;z.trigger(e,qp,{relatedTarget:t}).defaultPrevented||s&&s.defaultPrevented||(this._deactivate(t,e),this._activate(e,t))}_activate(e,t){if(!e)return;e.classList.add(on),this._activate(Zt(e));const s=()=>{if(e.getAttribute("role")!=="tab"){e.classList.add(ki);return}e.focus(),e.removeAttribute("tabindex"),e.setAttribute("aria-selected",!0),this._toggleDropDown(e,!0),z.trigger(e,Up,{relatedTarget:t})};this._queueCallback(s,e,e.classList.contains(vl))}_deactivate(e,t){if(!e)return;e.classList.remove(on),e.blur(),this._deactivate(Zt(e));const s=()=>{if(e.getAttribute("role")!=="tab"){e.classList.remove(ki);return}e.setAttribute("aria-selected",!1),e.setAttribute("tabindex","-1"),this._toggleDropDown(e,!1),z.trigger(e,Yp,{relatedTarget:t})};this._queueCallback(s,e,e.classList.contains(vl))}_keydown(e){if(![Zp,gl,xp,bl].includes(e.key))return;e.stopPropagation(),e.preventDefault();const t=[gl,bl].includes(e.key),s=no(this._getChildren().filter(i=>!an(i)),e.target,t,!0);s&&Gn.getOrCreateInstance(s).show()}_getChildren(){return we.find(Ai,this._parent)}_getActiveElem(){return this._getChildren().find(e=>this._elemIsActive(e))||null}_setInitialAttributes(e,t){this._setAttributeIfNotExists(e,"role","tablist");for(const s of t)this._setInitialAttributesOnChild(s)}_setInitialAttributesOnChild(e){e=this._getInnerElement(e);const t=this._elemIsActive(e),s=this._getOuterElement(e);e.setAttribute("aria-selected",t),s!==e&&this._setAttributeIfNotExists(s,"role","presentation"),t||e.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(e,"role","tab"),this._setInitialAttributesOnTargetPanel(e)}_setInitialAttributesOnTargetPanel(e){const t=Zt(e);!t||(this._setAttributeIfNotExists(t,"role","tabpanel"),e.id&&this._setAttributeIfNotExists(t,"aria-labelledby",`#${e.id}`))}_toggleDropDown(e,t){const s=this._getOuterElement(e);if(!s.classList.contains(e_))return;const i=(l,o)=>{const f=we.findOne(l,s);f&&f.classList.toggle(o,t)};i(t_,on),i(n_,ki),i(s_,on),s.setAttribute("aria-expanded",t)}_setAttributeIfNotExists(e,t,s){e.hasAttribute(t)||e.setAttribute(t,s)}_elemIsActive(e){return e.classList.contains(on)}_getInnerElement(e){return e.matches(Ai)?e:we.findOne(Ai,e)}_getOuterElement(e){return e.closest(o_)||e}static jQueryInterface(e){return this.each(function(){const t=Gn.getOrCreateInstance(this);if(typeof e=="string"){if(t[e]===void 0||e.startsWith("_")||e==="constructor")throw new TypeError(`No method named "${e}"`);t[e]()}})}}z.on(document,Qp,Wa,function(n){["A","AREA"].includes(this.tagName)&&n.preventDefault(),!an(this)&&Gn.getOrCreateInstance(this).show()});z.on(window,Jp,()=>{for(const n of we.find(r_))Gn.getOrCreateInstance(n)});Ct(Gn);const a_="toast",c_="bs.toast",fn=`.${c_}`,u_=`mouseover${fn}`,d_=`mouseout${fn}`,f_=`focusin${fn}`,p_=`focusout${fn}`,__=`hide${fn}`,h_=`hidden${fn}`,m_=`show${fn}`,g_=`shown${fn}`,b_="fade",wl="hide",$s="show",Ps="showing",v_={animation:"boolean",autohide:"boolean",delay:"number"},w_={animation:!0,autohide:!0,delay:5e3};class ri extends Lt{constructor(e,t){super(e,t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return w_}static get DefaultType(){return v_}static get NAME(){return a_}show(){if(z.trigger(this._element,m_).defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add(b_);const t=()=>{this._element.classList.remove(Ps),z.trigger(this._element,g_),this._maybeScheduleHide()};this._element.classList.remove(wl),cs(this._element),this._element.classList.add($s,Ps),this._queueCallback(t,this._element,this._config.animation)}hide(){if(!this.isShown()||z.trigger(this._element,__).defaultPrevented)return;const t=()=>{this._element.classList.add(wl),this._element.classList.remove(Ps,$s),z.trigger(this._element,h_)};this._element.classList.add(Ps),this._queueCallback(t,this._element,this._config.animation)}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove($s),super.dispose()}isShown(){return this._element.classList.contains($s)}_maybeScheduleHide(){!this._config.autohide||this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay))}_onInteraction(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t;break}if(t){this._clearTimeout();return}const s=e.relatedTarget;this._element===s||this._element.contains(s)||this._maybeScheduleHide()}_setListeners(){z.on(this._element,u_,e=>this._onInteraction(e,!0)),z.on(this._element,d_,e=>this._onInteraction(e,!1)),z.on(this._element,f_,e=>this._onInteraction(e,!0)),z.on(this._element,p_,e=>this._onInteraction(e,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(e){return this.each(function(){const t=ri.getOrCreateInstance(this,e);if(typeof e=="string"){if(typeof t[e]>"u")throw new TypeError(`No method named "${e}"`);t[e](this)}})}}ni(ri);Ct(ri);let rs=St([]),H=St({name:"",locationGroup:"",jobs:[],identifier:[],ace:[],discord:[],locked:!0,lockpick:!1,garage:!1,passcode:"",sound:"",door_data:[],locationGroups:[],secret:!1,camera:!1,distance:2,auto_lock:null,items:[]});function y_(n){let e,t,s,i,l,o=window.locales.delete.notification+"",f,d,p,u,c,m,h,g,A,y,E,C=window.locales.delete.irreversible+"",N,b,v,w,S,M,G,U,K,J;return{c(){e=_("div"),t=_("div"),s=_("div"),i=_("div"),l=_("h6"),f=V(o),d=k(),p=_("strong"),u=V("'"),c=V(n[0]),m=V("'"),h=k(),g=_("div"),A=_("div"),y=_("i"),E=k(),N=V(C),b=k(),v=_("p"),v.textContent=`${window.locales.delete.are_you_sure} ${n[1]=="door"?window.locales.delete.type[0]:window.locales.delete.type[1]}?`,w=k(),S=_("div"),M=_("button"),M.textContent=`${window.locales.delete.yes}`,G=k(),U=_("button"),U.textContent=`${window.locales.delete.no}`,a(l,"class","modal-title"),a(i,"class","modal-header"),a(y,"class","bi bi-exclamation-triangle"),a(A,"class","alert alert-warning w-100"),a(g,"class","modal-body text-dark"),a(M,"type","button"),a(M,"class","btn btn-danger text-light"),a(U,"type","button"),a(U,"class","btn btn-secondary"),a(S,"class","modal-footer"),a(s,"class","modal-content shadow-sm text-dark"),a(t,"class","modal-dialog modal-dialog-centered"),a(e,"class","modal"),a(e,"tabindex","-1"),a(e,"data-bs-backdrop","static"),a(e,"data-bs-keyboard","false")},m(q,ne){D(q,e,ne),r(e,t),r(t,s),r(s,i),r(i,l),r(l,f),r(l,d),r(l,p),r(p,u),r(p,c),r(p,m),r(s,h),r(s,g),r(g,A),r(A,y),r(A,E),r(A,N),r(g,b),r(g,v),r(s,w),r(s,S),r(S,M),r(S,G),r(S,U),K||(J=[P(M,"click",Se(n[2])),P(U,"click",Se(n[3]))],K=!0)},p(q,[ne]){ne&1&&fe(c,q[0])},i:ue,o:ue,d(q){q&&L(e),K=!1,Ee(J)}}}function k_(n,e,t){let s,i,l,o,f;be(n,j,h=>t(5,s=h)),be(n,ye,h=>t(6,i=h)),be(n,Me,h=>t(7,l=h)),be(n,H,h=>t(8,o=h)),be(n,rs,h=>t(9,f=h));let{name:d}=e,p=s.delete.type;function u(){p=="door"?He.send("deletedoor",l[s.delete.door]):He.send("delete_location_group",{location_group:l[s.delete.door].location_group}),i.push({message:`${window.locales.delete.alerts.success} ${p}.`,type:"alert-success"});let h=l[s.delete.door].location_group;if(p=="group"){for(let g=l.length-1;g>=0;g--)h==l[g].location_group&&l.splice(g,1);for(let g=0;g{c=new wn(document.getElementsByClassName("modal")[0],{}),c.show()}),Vi(()=>{c.dispose()});function m(h){xn.call(this,n,h)}return n.$$set=h=>{"name"in h&&t(0,d=h.name)},[d,p,u,m]}class Fa extends bt{constructor(e){super(),gt(this,e,k_,y_,rt,{name:0})}}function yl(n,e,t){const s=n.slice();return s[44]=e[t],s[46]=t,s}function kl(n,e,t){const s=n.slice();return s[47]=e[t],s[46]=t,s}function El(n,e,t){const s=n.slice();return s[47]=e[t],s[46]=t,s}function Al(n){let e,t;return e=new Fa({props:{name:n[9].delete.name}}),e.$on("click",n[18]),{c(){_t(e.$$.fragment)},m(s,i){ot(e,s,i),t=!0},p(s,i){const l={};i[0]&512&&(l.name=s[9].delete.name),e.$set(l)},i(s){t||(ce(e.$$.fragment,s),t=!0)},o(s){ge(e.$$.fragment,s),t=!1},d(s){lt(e,s)}}}function Tl(n){let e,t,s;return{c(){e=_("th"),e.textContent=`${window.locales.control.delete}`,t=k(),s=_("th"),s.textContent=`${window.locales.control.delete_group}`,a(e,"scope","col"),a(s,"scope","col")},m(i,l){D(i,e,l),D(i,t,l),D(i,s,l)},p:ue,d(i){i&&L(e),i&&L(t),i&&L(s)}}}function E_(n){let e,t=[],s=new Map,i=n[0];const l=o=>o[46];for(let o=0;oo[46];for(let o=0;o',y=k(),E=_("td"),E.innerHTML='',C=k(),q.c(),N=k(),b=_("td"),b.innerHTML='',v=k(),O&&O.c(),w=k(),a(t,"scope","row"),a(A,"class","text-center"),a(E,"class","text-center"),a(b,"class","text-center")},m(X,I){D(X,e,I),r(e,t),r(t,s),r(s,l),r(e,o),r(e,f),r(f,p),r(e,u),r(e,c),r(c,h),r(e,g),r(e,A),r(e,y),r(e,E),r(e,C),q.m(e,null),r(e,N),r(e,b),r(e,v),O&&O.m(e,null),r(e,w),S||(M=[P(A,"click",G),P(E,"click",U),P(b,"click",ne)],S=!0)},p(X,I){n=X,I[0]&1&&i!==(i=n[46]+1+"")&&fe(l,i),I[0]&1&&d!==(d=n[47].location_group+"")&&fe(p,d),I[0]&1&&m!==(m=n[47].door_name+"")&&fe(h,m),J===(J=K(n))&&q?q.p(n,I):(q.d(1),q=J(n),q&&(q.c(),q.m(e,N))),n[5].permissions?O?O.p(n,I):(O=Ol(n),O.c(),O.m(e,w)):O&&(O.d(1),O=null)},d(X){X&&L(e),q.d(),O&&O.d(),S=!1,Ee(M)}}}function T_(n){let e;return{c(){e=_("td"),e.innerHTML='',a(e,"class","text-center")},m(t,s){D(t,e,s)},p:ue,d(t){t&&L(e)}}}function C_(n){let e,t,s;function i(){return n[34](n[47])}return{c(){e=_("td"),e.innerHTML='',a(e,"class","text-center")},m(l,o){D(l,e,o),t||(s=P(e,"click",i),t=!0)},p(l,o){n=l},d(l){l&&L(e),t=!1,s()}}}function Ol(n){let e,t,s,i,l;function o(){return n[36](n[46])}function f(){return n[37](n[46])}return{c(){e=_("td"),e.innerHTML='',t=k(),s=_("td"),s.innerHTML='',a(e,"class","text-center"),a(s,"class","text-center")},m(d,p){D(d,e,p),D(d,t,p),D(d,s,p),i||(l=[P(e,"click",o),P(s,"click",f)],i=!0)},p(d,p){n=d},d(d){d&&L(e),d&&L(t),d&&L(s),i=!1,Ee(l)}}}function Nl(n,e){let t,s,i=e[46]>=e[3]*7&&e[46]=e[3]*7&&e[46]',y=k(),E=_("td"),E.innerHTML='',C=k(),q.c(),N=k(),b=_("td"),b.innerHTML='',v=k(),O&&O.c(),w=k(),a(t,"scope","row"),a(A,"class","text-center"),a(E,"class","text-center"),a(b,"class","text-center")},m(X,I){D(X,e,I),r(e,t),r(t,s),r(s,l),r(e,o),r(e,f),r(f,p),r(e,u),r(e,c),r(c,h),r(e,g),r(e,A),r(e,y),r(e,E),r(e,C),q.m(e,null),r(e,N),r(e,b),r(e,v),O&&O.m(e,null),r(e,w),S||(M=[P(A,"click",G),P(E,"click",U),P(b,"click",ne)],S=!0)},p(X,I){n=X,I[0]&16&&i!==(i=n[46]+1+"")&&fe(l,i),I[0]&16&&d!==(d=n[47].location_group+"")&&fe(p,d),I[0]&16&&m!==(m=n[47].door_name+"")&&fe(h,m),J===(J=K(n))&&q?q.p(n,I):(q.d(1),q=J(n),q&&(q.c(),q.m(e,N))),n[5].permissions?O?O.p(n,I):(O=Ll(n),O.c(),O.m(e,w)):O&&(O.d(1),O=null)},d(X){X&&L(e),q.d(),O&&O.d(),S=!1,Ee(M)}}}function O_(n){let e;return{c(){e=_("td"),e.innerHTML='',a(e,"class","text-center")},m(t,s){D(t,e,s)},p:ue,d(t){t&&L(e)}}}function N_(n){let e,t,s;function i(){return n[28](n[47])}return{c(){e=_("td"),e.innerHTML='',a(e,"class","text-center")},m(l,o){D(l,e,o),t||(s=P(e,"click",i),t=!0)},p(l,o){n=l},d(l){l&&L(e),t=!1,s()}}}function Ll(n){let e,t,s,i,l;function o(){return n[30](n[47])}function f(){return n[31](n[47])}return{c(){e=_("td"),e.innerHTML='',t=k(),s=_("td"),s.innerHTML='',a(e,"class","text-center"),a(s,"class","text-center")},m(d,p){D(d,e,p),D(d,t,p),D(d,s,p),i||(l=[P(e,"click",o),P(s,"click",f)],i=!0)},p(d,p){n=d},d(d){d&&L(e),d&&L(t),d&&L(s),i=!1,Ee(l)}}}function Dl(n,e){let t,s,i=e[46]>=e[3]*7&&e[46]=e[3]*7&&e[46]0?n[4].length:n[6])+"",I,le,se=window.locales.control.found[1]+"",ie,_e,B,Q,Z,de,ke,ae,oe,Ae,Ne,$,Y,R,W,x,Le,Re,et,he,me,Te,F,Oe,Be,at,Ye=[],We=new Map,vt,Ue,Fe,Je,Ze,ze,wt,Pe=n[9].delete.state&&Al(n),De=n[5].permissions&&Tl();function Dt(re,Ie){return re[4].length>0?A_:E_}let xe=Dt(n),Ce=xe(n),Ge=n[1];const ct=re=>re[46];for(let re=0;re',p=k(),u=_("div"),c=_("div"),m=_("input"),h=k(),g=_("label"),g.textContent=`${window.locales.control.search_by_name}`,A=k(),y=_("div"),E=_("input"),C=k(),N=_("label"),N.textContent=`${window.locales.control.search_by_group}`,b=k(),v=_("div"),w=_("hr"),S=k(),M=_("div"),G=_("div"),U=_("div"),K=_("table"),J=_("caption"),ne=V(q),O=k(),I=V(X),le=k(),ie=V(se),_e=k(),B=_("thead"),Q=_("tr"),Z=_("th"),Z.textContent=`${window.locales.control.number}`,de=k(),ke=_("th"),ke.textContent=`${window.locales.control.group}`,ae=k(),oe=_("th"),oe.textContent=`${window.locales.control.name}`,Ae=k(),Ne=_("th"),Ne.textContent=`${window.locales.control.lock}`,$=k(),Y=_("th"),Y.textContent=`${window.locales.control.unlock}`,R=k(),W=_("th"),W.textContent=`${window.locales.control.camera}`,x=k(),Le=_("th"),Le.textContent=`${window.locales.control.visit}`,Re=k(),De&&De.c(),et=k(),Ce.c(),he=k(),me=_("div"),Te=_("nav"),F=_("ul"),Oe=_("li"),Be=_("a"),Be.textContent=`${window.locales.control.previous}`,at=k();for(let re=0;re=n[2]),a(F,"class","pagination pagination pagination-sm rounded mb-0"),a(Te,"class","rounded overflow-hidden"),a(me,"class","col-12 d-flex justify-content-center align-items-center"),a(M,"class","row"),a(e,"class","container")},m(re,Ie){D(re,e,Ie),Pe&&Pe.m(e,null),r(e,t),r(e,s),r(s,i),r(s,l),r(s,o),pe(o,n[8]),r(s,f),r(s,d),r(e,p),r(e,u),r(u,c),r(c,m),m.checked=m.__value===n[7],r(c,h),r(c,g),r(u,A),r(u,y),r(y,E),E.checked=E.__value===n[7],r(y,C),r(y,N),r(e,b),r(e,v),r(v,w),r(v,S),r(v,M),r(M,G),r(G,U),r(U,K),r(K,J),r(J,ne),r(J,O),r(J,I),r(J,le),r(J,ie),r(K,_e),r(K,B),r(B,Q),r(Q,Z),r(Q,de),r(Q,ke),r(Q,ae),r(Q,oe),r(Q,Ae),r(Q,Ne),r(Q,$),r(Q,Y),r(Q,R),r(Q,W),r(Q,x),r(Q,Le),r(Q,Re),De&&De.m(Q,null),r(K,et),Ce.m(K,null),r(M,he),r(M,me),r(me,Te),r(Te,F),r(F,Oe),r(Oe,Be),r(F,at);for(let je=0;je{Pe=null}),pt()),Ie[0]&256&&o.value!==re[8]&&pe(o,re[8]),Ie[0]&128&&(m.checked=m.__value===re[7]),Ie[0]&128&&(E.checked=E.__value===re[7]),(!Ze||Ie[0]&80)&&X!==(X=(re[4].length>0?re[4].length:re[6])+"")&&fe(I,X),re[5].permissions?De?De.p(re,Ie):(De=Tl(),De.c(),De.m(Q,null)):De&&(De.d(1),De=null),xe===(xe=Dt(re))&&Ce?Ce.p(re,Ie):(Ce.d(1),Ce=xe(re),Ce&&(Ce.c(),Ce.m(K,null))),Ie[0]&8&&jt(Oe,"disabled",re[3]-1<0),Ie[0]&10&&(Ge=re[1],Ye=Ve(Ye,Ie,ct,1,re,Ge,We,F,Ke,Il,vt,yl)),Ie[0]&12&&jt(Ue,"disabled",re[3]+1>=re[2])},i(re){Ze||(ce(Pe),it(()=>{Je||(Je=Bt(e,Wt,{duration:100},!0)),Je.run(1)}),Ze=!0)},o(re){ge(Pe),Je||(Je=Bt(e,Wt,{duration:100},!1)),Je.run(0),Ze=!1},d(re){re&&L(e),Pe&&Pe.d(),n[22][0].splice(n[22][0].indexOf(m),1),n[22][0].splice(n[22][0].indexOf(E),1),De&&De.d(),Ce.d();for(let Ie=0;Iet(5,u=$)),be(n,j,$=>t(9,c=$)),be(n,Me,$=>t(19,m=$));let h,g;function A(){clearTimeout(h),h=setTimeout(y,400)}function y(){setTimeout(()=>{if(t(4,i.length=0,i),t(4,i),g=s.toLowerCase().trim(),g==""){t(3,o=0);return}for(let $=0;$W.door_data[0].unique_id===Y.door_data[0].unique_id);T(j,c.delete.state=!0,c),T(j,c.delete.door=R,c),T(j,c.delete.name=Y.door_name,c),T(j,c.delete.type="door",c);return}}function S($,Y){if($!=-1){T(j,c.delete.state=!0,c),T(j,c.delete.door=$,c),T(j,c.delete.name=m[$].door_name,c),T(j,c.delete.type="group",c);return}else{let R=m.findIndex(W=>W.door_data[0].unique_id===Y.door_data[0].unique_id);T(j,c.delete.state=!0,c),T(j,c.delete.door=R,c),T(j,c.delete.name=Y.door_name,c),T(j,c.delete.type="group",c);return}}function M(){T(j,c.delete.state=!1,c),T(j,c.delete.door=-1,c),T(j,c.delete.name="",c),T(j,c.delete.type="door",c)}function G($,Y){if(u.permissions)return!0;if($.perms.job&&$.perms.job.length>0){for(let R of $.perms.job)if(u.job&&R.name==u.job.job&&R.grade<=u.job.grade||u.gang&&R.name==u.gang.gang&&R.grade<=u.gang.grade)return!0}if($.perms.identifier&&$.perms.identifier.length>0){for(let R of $.perms.identifier)for(let W of u.identifier)if(W.trimmed==R.trimmed||W.full==R.full)return!0}if($.perms.ace&&$.perms.ace.length>0){for(let R of $.perms.ace)if(u.ace.includes(R))return!0}if($.perms.discord&&$.perms.discord.length>0){for(let R of $.perms.discord)if(u.discord.includes(R))return!0}return!1}const U=[[]];function K(){s=this.value,t(8,s)}function J(){l=this.__value,t(7,l)}const q=()=>{y()};function ne(){l=this.__value,t(7,l)}const O=()=>{y()},X=$=>{C($)},I=$=>{N($)},le=$=>{b($)},se=$=>{v($)},ie=$=>{w(-1,$)},_e=$=>{S(-1,$)},B=$=>{C($)},Q=$=>{N($)},Z=$=>{b($)},de=$=>{v($)},ke=$=>{w($)},ae=$=>{S($)},oe=()=>{o-1<0||t(3,o-=1)},Ae=$=>{$.number!=-1&&t(3,o=$.index)},Ne=()=>{o+1==d||t(3,o+=1)};return n.$$.update=()=>{if(n.$$.dirty[0]&524351)if(i.length>0)if(t(1,f.length=0,f),t(2,d=Math.ceil(i.length/7)),d>Pt){let $=!1,Y=1,R=Pt;o+3Pt?(f.push({number:1,index:0}),f.push({number:"...",index:-1}),Y=o-Pt+3,$?R=o+2:R=d-1):o+3>Pt&&(R=o+2);for(let W=Y;W<=R;W++)f.push({number:W,index:W-1});$?(f.push({number:"...",index:-1}),f.push({number:d,index:d-1})):f.push({number:d,index:d-1})}else for(let $=1;$<=d;$++)f.push({number:$,index:$-1});else{if(t(1,f.length=0,f),t(0,E.length=0,E),u.permissions){for(let $ of m)E.push($);t(6,p=m.length)}else{for(let $ of m)G($)&&E.push($);t(6,p=E.length)}if(t(2,d=Math.ceil(u.permissions?m.length/7:E.length/7)),d>Pt){let $=!1,Y=1,R=Pt;o+3Pt?(f.push({number:1,index:0}),f.push({number:"...",index:-1}),Y=o-Pt+3,$?R=o+2:R=d-1):o+3>Pt&&(R=o+2);for(let W=Y;W<=R;W++)f.push({number:W,index:W-1});$?(f.push({number:"...",index:-1}),f.push({number:d,index:d-1})):f.push({number:d,index:d-1})}else for(let $=1;$<=d;$++)f.push({number:$,index:$-1})}},t(8,s=""),t(4,i=[]),t(7,l=!0),t(3,o=0),t(1,f=[]),t(2,d=0),t(6,p=0),[E,f,d,o,i,u,p,l,s,c,A,y,C,N,b,v,w,S,M,m,K,J,U,q,ne,O,X,I,le,se,ie,_e,B,Q,Z,de,ke,ae,oe,Ae,Ne]}class D_ extends bt{constructor(e){super(),gt(this,e,L_,S_,rt,{},null,[-1,-1])}}function Mi(){return[...document.querySelectorAll('[data-bs-toggle="tooltip"]')].map(t=>new kn(t,{container:"body",animation:!1}))}function za(){return[...document.querySelectorAll(".dropdown-toggle")].map(t=>new Nt(t))}let I_=(n=21)=>crypto.getRandomValues(new Uint8Array(n)).reduce((e,t)=>(t&=63,t<36?e+=t.toString(36):t<62?e+=(t-26).toString(36).toUpperCase():t>62?e+="-":e+="_",e),"");function ro(){return I_()}class M_{constructor(e,t){Xt(this,"sounds",new Map);Xt(this,"volume");e&&this.batchAdd(e),t?this.volume=t:this.volume=.5}add(e,t){let s=new Audio(t);this.sounds.set(e,s)}remove(e){this.sounds.delete(e)}batchAdd(e){for(let t=0;tconsole.error(s))}else console.error("Sound does not exist.")}async stop(e){this.sounds.get(e).stop()}}let $i=St(["_notification.ogg","_key_press.ogg"]),ps=St(new M_(["_notification.ogg","_key_press.ogg"],.5)),is=St(["Framework","Identifiers","AcePerms","Discord","Items"]);function Ml(n,e,t){const s=n.slice();return s[55]=e[t],s[57]=t,s}function $l(n,e,t){const s=n.slice();return s[66]=e[t],s[57]=t,s}function Pl(n,e,t){const s=n.slice();return s[64]=e[t],s[57]=t,s}function Rl(n,e,t){const s=n.slice();return s[62]=e[t],s[57]=t,s}function jl(n,e,t){const s=n.slice();return s[60]=e[t],s[57]=t,s}function Hl(n,e,t){const s=n.slice();return s[58]=e[t],s[57]=t,s}function Vl(n,e,t){const s=n.slice();return s[68]=e[t],s[57]=t,s}function Bl(n,e,t){const s=n.slice();return s[70]=e[t],s[57]=t,s}function $_(n){let e=[],t=new Map,s,i=n[9].locationGroups;const l=o=>o[70].id;for(let o=0;o',f=k(),a(o,"type","button"),a(o,"class","btn btn-xs btn-danger text-light cursor-pointer"),a(s,"class","dropdown-item d-flex justify-content-between"),a(t,"class","d-flex justify-content-center align-items-center cursor-pointer"),this.first=t},m(m,h){D(m,t,h),r(t,s),r(s,l),r(s,o),r(t,f),d||(p=[P(o,"click",Se(u),{once:!0}),P(t,"click",c)],d=!0)},p(m,h){e=m,h[0]&512&&i!==(i=e[70].name+"")&&fe(l,i)},d(m){m&&L(t),d=!1,Ee(p)}}}function Fl(n,e){let t,s,i=window.locales.permissions[e[68].toLowerCase()]+"",l,o,f,d,p;function u(){return e[30](e[68])}return{key:n,first:null,c(){t=_("li"),s=_("span"),l=V(i),f=k(),a(s,"class",o="nav-link text-light"+(e[0]==e[68]?" active":"")),a(s,"aria-current","page"),a(t,"class","nav-item svelte-1847jqf"),this.first=t},m(c,m){D(c,t,m),r(t,s),r(s,l),r(t,f),d||(p=P(t,"click",u),d=!0)},p(c,m){e=c,m[0]&2&&i!==(i=window.locales.permissions[e[68].toLowerCase()]+"")&&fe(l,i),m[0]&3&&o!==(o="nav-link text-light"+(e[0]==e[68]?" active":""))&&a(s,"class",o)},d(c){c&&L(t),d=!1,p()}}}function R_(n){let e,t=window.locales.create.form.item+"",s,i,l,o,f,d,p,u,c,m,h,g=[],A=new Map,y,E,C=n[9].items;const N=b=>b[57];for(let b=0;bb[57];for(let b=0;bb[57];for(let b=0;bb[57];for(let b=0;bw[57];for(let w=0;w',p=k(),a(f,"class","btn btn-xs btn-outline-secondary"),a(s,"id",d=e[55]+e[57]),a(s,"class","dropdown-item d-flex justify-content-between align-items-center px-1 cursor-pointer svelte-1847jqf"),this.first=t},m(g,A){D(g,t,A),r(t,s),r(s,l),r(s,o),r(s,f),r(t,p),u||(c=[P(f,"click",Se(tc(m))),P(t,"click",h)],u=!0)},p(g,A){e=g,A[0]&1024&&i!==(i=e[55]+"")&&fe(l,i),A[0]&1024&&d!==(d=e[55]+e[57])&&a(s,"id",d)},d(g){g&&L(t),u=!1,Ee(c)}}}function G_(n){let e,t,s,i,l=window.locales.create.form.door_name+"",o,f,d,p,u,c,m,h,g,A=window.locales.create.form.location_group+"",y,E,C,N,b,v,w,S=(n[9].locationGroup==""?window.locales.create.form.helpers.location_group_select:n[9].locationGroup)+"",M,G,U,K,J,q,ne,O,X,I,le,se,ie,_e,B,Q,Z=[],de=new Map,ke,ae,oe,Ae,Ne,$,Y,R=window.locales.create.form.autolock+"",W,x,Le,Re,et,he,me,Te,F,Oe=window.locales.create.form.sound+"",Be,at,Ye,We,vt,Ue,Fe,Je,Ze,ze=[],wt=new Map,Pe,De,Dt,xe,Ce,Ge,ct,re=window.locales.create.form.locked+"",Ie,je,pn,Ot,ut,Kt,Yt,te,$e,Qe,Ka=window.locales.create.form.lockpick+"",ao,co,_s,An,uo,hs,Tn,qt,fo,_n,Ya=window.locales.create.form.secret+"",po,_o,ms,Cn,ho,gs,On,Ut,mo,hn,qa=window.locales.create.form.camera+"",go,bo,bs,Nn,vo,vs,ws,Sn,Qt,Ua=window.locales.create.form.distance+"",wo,yo,ai,ys=n[9].distance+"",ci,ko,ks,Ln,Eo,yt,ui,Ao;function To(ee,ve){return ee[9].locationGroups.length==0?P_:$_}let Es=To(n),It=Es(n),As=n[1];const Co=ee=>ee[57];for(let ee=0;eeee[55];for(let ee=0;ee',X=k(),I=_("li"),I.innerHTML='
',le=k(),It.c(),se=k(),ie=_("div"),_e=_("div"),_e.textContent=`${window.locales.create.form.permissions}`,B=k(),Q=_("ul");for(let ee=0;eet(9,c=F)),be(n,ps,F=>t(52,m=F)),be(n,$i,F=>t(10,h=F)),be(n,ye,F=>t(53,g=F)),be(n,Me,F=>t(54,A=F)),be(n,is,F=>t(1,y=F));let E;Yn(async()=>{E=Mi(),za()}),Vi(()=>{for(let F=0;F{He.send("location_groups",{location_groups:c.locationGroups})},200)}}function N(){if(s.length!=0){for(let F=0;F{He.send("location_groups",{location_groups:c.locationGroups})},200)}}function b(F){for(let Oe=0;Oewindow.config.identifier_max_length||f.length==0)&&(g.push({message:window.locales.create.form.alerts.identifier_too_long,type:"alert-danger"}),ye.set(g),m.play("_notification.ogg"),F=!0),!F&&(c.identifier.push(f),H.set(c))}function w(){let F=!1;(l.length>window.config.job_name_max_length||l.length==0)&&(g.push({message:window.locales.create.form.alerts.job_name_too_long,type:"alert-danger"}),ye.set(g),m.play("_notification.ogg"),F=!0),l.match(window.config.job_name_match)&&(g.push({message:window.locales.create.form.alerts.job_name_out_of_scope,type:"alert-danger"}),ye.set(g),m.play("_notification.ogg"),F=!0),Number.isInteger(o)||(g.push({message:window.locales.create.form.alerts.job_grade_nan,type:"alert-danger"}),ye.set(g),m.play("_notification.ogg"),F=!0),(o<0||o>window.config.job_grade_max)&&(g.push({message:window.locales.create.form.alerts.job_grade_too_large,type:"alert-danger"}),ye.set(g),m.play("_notification.ogg"),F=!0),!F&&(c.jobs.push({name:l.toLowerCase(),grade:o}),H.set(c))}function S(){c.ace.push(d),H.set(c)}function M(F){c.ace.splice(F,1),H.set(c)}function G(){c.discord.push(p),H.set(c)}function U(F){c.discord.splice(F,1),H.set(c)}function K(){c.items.push(u),H.set(c)}function J(F){c.items.splice(F,1),H.set(c)}function q(F){T(H,c.sound=h[F],c)}function ne(F){m.play(F)}function O(F){c.jobs.splice(F,1),H.set(c)}function X(F){c.identifier.splice(F,1),H.set(c)}function I(){c.name=this.value,H.set(c)}function le(){s=this.value,t(8,s)}const se=F=>{C(F.id)},ie=F=>{b(F.id)},_e=F=>{t(0,i=F)};function B(){l=this.value,t(6,l)}function Q(){o=ln(this.value),t(5,o)}const Z=F=>{O(F)};function de(){f=this.value,t(7,f)}const ke=F=>{X(F)};function ae(){d=this.value,t(4,d)}const oe=F=>{M(F)};function Ae(){p=this.value,t(3,p)}const Ne=F=>{U(F)};function $(){c.passcode=this.value,H.set(c)}function Y(){u=this.value,t(2,u)}const R=F=>{J(F)};function W(){c.auto_lock=ln(this.value),H.set(c)}const x=F=>{ne(F)},Le=F=>{q(F)};function Re(){c.locked=this.checked,H.set(c)}function et(){c.lockpick=this.checked,H.set(c)}function he(){c.secret=this.checked,H.set(c)}function me(){c.camera=this.checked,H.set(c)}function Te(){c.distance=ln(this.value),H.set(c)}return n.$$.update=()=>{n.$$.dirty[0]&2&&t(0,i=y[0]),n.$$.dirty[0]&1&&i!=""&&setTimeout(()=>{E=Mi()},500)},t(8,s=""),t(6,l=""),t(5,o=0),t(7,f=""),t(4,d=""),t(3,p=""),t(2,u=""),[i,y,u,p,d,o,l,f,s,c,h,C,N,b,v,w,S,M,G,U,K,J,q,ne,O,X,I,le,se,ie,_e,B,Q,Z,de,ke,ae,oe,Ae,Ne,$,Y,R,W,x,Le,Re,et,he,me,Te]}class Y_ extends bt{constructor(e){super(),gt(this,e,K_,G_,rt,{},null,[-1,-1,-1])}}let Xe=St({locationGroup:"",jobs:[],identifier:[],ace:[],discord:[],items:[],locked:!0,lockpick:!1,garage:!1,passcode:"",sound:"",secret:!1,camera:!1,hasData:!1,distance:2,auto_lock:""});function Ql(n,e,t){const s=n.slice();return s[35]=e[t],s[37]=t,s}function Xl(n,e,t){const s=n.slice();return s[40]=e[t],s[37]=t,s}function Jl(n,e,t){const s=n.slice();return s[38]=e[t],s[37]=t,s}function q_(n){let e;return{c(){e=_("div"),e.textContent=`${window.locales.create.state_create}`,a(e,"class","infotext")},m(t,s){D(t,e,s)},p:ue,d(t){t&&L(e)}}}function U_(n){let e,t=window.locales.create.state_editing+"",s,i,l=n[4][n[7].editing.door].door_name+"",o;return{c(){e=_("div"),s=V(t),i=k(),o=V(l),a(e,"class","infotext")},m(f,d){D(f,e,d),r(e,s),r(e,i),r(e,o)},p(f,d){d[0]&144&&l!==(l=f[4][f[7].editing.door].door_name+"")&&fe(o,l)},d(f){f&&L(e)}}}function Zl(n){let e,t,s,i,l,o=window.locales.create.paste+"",f,d,p,u;return{c(){e=_("div"),t=_("div"),s=_("button"),s.textContent=`${window.locales.create.copy}`,i=k(),l=_("button"),f=V(o),a(s,"type","button"),a(s,"class","btn btn-outline-primary btn-xs"),a(l,"type","button"),a(l,"class","btn btn-outline-success btn-xs"),l.disabled=d=!n[6].hasData,a(t,"class","btn-group"),a(t,"role","group"),a(e,"class","copy-paste")},m(c,m){D(c,e,m),r(e,t),r(t,s),r(t,i),r(t,l),r(l,f),p||(u=[P(s,"click",Se(n[16])),P(l,"click",Se(n[17]))],p=!0)},p(c,m){m[0]&64&&d!==(d=!c[6].hasData)&&(l.disabled=d)},d(c){c&&L(e),p=!1,Ee(u)}}}function Q_(n){let e,t;return{c(){e=_("div"),t=_("span"),t.textContent=`${window.locales.create.select_a_door}`,a(t,"class",""),a(e,"class","container text-muted user-select-none w-100 h-100 d-flex justify-content-center align-items-center text-center")},m(s,i){D(s,e,i),r(e,t)},p:ue,i:ue,o:ue,d(s){s&&L(e)}}}function X_(n){let e,t;return e=new Y_({}),{c(){_t(e.$$.fragment)},m(s,i){ot(e,s,i),t=!0},p:ue,i(s){t||(ce(e.$$.fragment,s),t=!0)},o(s){ge(e.$$.fragment,s),t=!1},d(s){lt(e,s)}}}function xl(n){let e,t=(n[7].editing.state?window.locales.create.button_update:window.locales.create.button_submit)+"",s,i,l,o,f;function d(c,m){return c[7].editing.state?Z_:J_}let p=d(n),u=p(n);return{c(){e=_("button"),s=V(t),i=k(),u.c(),l=qe(),a(e,"class","btn btn-success btn-sm")},m(c,m){D(c,e,m),r(e,s),D(c,i,m),u.m(c,m),D(c,l,m),o||(f=P(e,"click",Se(n[11])),o=!0)},p(c,m){m[0]&128&&t!==(t=(c[7].editing.state?window.locales.create.button_update:window.locales.create.button_submit)+"")&&fe(s,t),p===(p=d(c))&&u?u.p(c,m):(u.d(1),u=p(c),u&&(u.c(),u.m(l.parentNode,l)))},d(c){c&&L(e),c&&L(i),u.d(c),c&&L(l),o=!1,f()}}}function J_(n){let e,t,s;return{c(){e=_("button"),e.textContent=`${window.locales.create.button_clear}`,a(e,"class","btn btn-danger btn-sm text-light ms-1")},m(i,l){D(i,e,l),t||(s=P(e,"click",Se(n[12])),t=!0)},p:ue,d(i){i&&L(e),t=!1,s()}}}function Z_(n){let e,t,s,i,l;return{c(){e=_("button"),e.textContent=`${window.locales.create.button_delete}`,t=k(),s=_("button"),s.textContent=`${window.locales.create.button_cancel}`,a(e,"class","btn btn-danger btn-sm text-light ms-1"),a(s,"class","btn btn-secondary btn-sm text-light ms-1")},m(o,f){D(o,e,f),D(o,t,f),D(o,s,f),i||(l=[P(e,"click",Se(n[14])),P(s,"click",Se(n[15]))],i=!0)},p:ue,d(o){o&&L(e),o&&L(t),o&&L(s),i=!1,Ee(l)}}}function x_(n){let e=[],t=new Map,s,i=n[4];const l=o=>o[37];for(let o=0;oo[37];for(let o=0;o=n[2]*12&&n[37]=s[2]*12&&s[37]=e[2]*12&&e[37]=e[2]*12&&e[37]0?eh:x_}let Ot=pn(n),ut=Ot(n),Kt=n[0];const Yt=te=>te[37];for(let te=0;te',le=k(),se=_("li"),ie=_("span"),_e=_("i"),B=k(),Z=V(Q),de=k(),ke=_("div"),je&&je.c(),ae=k(),oe=_("div"),Ae=_("div"),Ae.textContent=`${window.locales.create.all_doors}`,Ne=k(),$=_("div"),Y=_("div"),R=_("input"),W=k(),x=_("span"),x.innerHTML='',Le=k(),Re=_("ul"),ut.c(),et=k(),he=_("div"),me=_("div"),Te=_("nav"),F=_("ul"),Oe=_("li"),Be=_("span"),Be.textContent=`${window.locales.control.previous}`,Ye=k();for(let te=0;te{re[Qe]=null}),pt(),p=re[d],p?p.p(te,$e):(p=re[d]=ct[d](te),p.c()),ce(p,1),p.m(f,null)),te[7].doors_selected||te[7].editing.state?je?je.p(te,$e):(je=xl(te),je.c(),je.m(ke,null)):je&&(je.d(1),je=null),$e[0]&32&&R.value!==te[5]&&pe(R,te[5]),Ot===(Ot=pn(te))&&ut?ut.p(te,$e):(ut.d(1),ut=Ot(te),ut&&(ut.c(),ut.m(Re,null))),(!wt||$e[0]&4&&at!==(at="page-item rounded-0 "+(te[2]-1<0?"disabled":"cursor-pointer")))&&a(Oe,"class",at),$e[0]&5&&(Kt=te[0],We=Ve(We,$e,Yt,1,te,Kt,vt,F,Ke,or,Ue,Ql)),(!wt||$e[0]&6&&Ze!==(Ze="page-item rounded-0 "+(te[2]+1==te[1]?"disabled":"cursor-pointer")))&&a(Fe,"class",Ze)},i(te){wt||(ce(p),it(()=>{ze||(ze=Bt(e,Wt,{duration:100},!0)),ze.run(1)}),wt=!0)},o(te){ge(p),ze||(ze=Bt(e,Wt,{duration:100},!1)),ze.run(0),wt=!1},d(te){te&&L(e),Ce.d(),Ge&&Ge.d(),re[d].d(),je&&je.d(),ut.d();for(let $e=0;$et(4,d=B)),be(n,Xe,B=>t(6,p=B)),be(n,H,B=>t(31,u=B)),be(n,j,B=>t(7,c=B)),be(n,ps,B=>t(32,m=B)),be(n,ye,B=>t(33,h=B));function g(B){He.send("select_doors",{action:1,door_count:B==1?1:B==2?2:1,door_type:B==1?"single":B==2?"double":B==3?"garage":B==4?"gates":"double_gate"}),T(j,c.status=!1,c),T(j,c.creating=!0,c),T(j,c.door_count=B,c),T(j,c.editing.state=!1,c),T(j,c.editing.door=-1,c),T(j,c.selection_icon=!0,c)}function A(){T(j,c.status=!1,c),T(j,c.creating=!1,c),T(j,c.editing.selection=!0,c),T(j,c.door_count=1,c),T(j,c.editing.state=!1,c),T(j,c.editing.door=-1,c),T(j,c.selection_icon=!0,c),He.send("select_doors",{action:1,door_count:1,door_type:1})}let y,E="";function C(){clearTimeout(y),y=setTimeout(N,500)}function N(){if(t(3,i.length=0,i),t(3,i),s=E,t(2,l=0),s!="")for(let B=0;B{za()});function b(){let B=!1;if((u.name.length>window.config.door_name_max_length||u.name.length<=0)&&(h.push({message:window.locales.create.alerts.name_too_long,type:"alert-danger"}),ye.set(h),m.play("_notification.ogg"),B=!0),u.name.match(window.config.door_name_match)&&(h.push({message:window.locales.create.alerts.name_out_of_scope,type:"alert-danger"}),ye.set(h),m.play("_notification.ogg"),B=!0),u.locationGroup.length==0&&(h.push({message:window.locales.create.alerts.location_group_not_set,type:"alert-danger"}),ye.set(h),m.play("_notification.ogg"),B=!0),u.passcode===""?u.jobs.length+u.identifier.length+u.ace.length+u.discord.length==0&&(h.push({message:window.locales.create.alerts.permissions_not_set,type:"alert-danger"}),ye.set(h),m.play("_notification.ogg")):(u.passcode&&u.passcode.length!=0&&u.passcode.match(/[^0-9]/g)&&(h.push({message:window.locales.create.alerts.passcode_out_of_scope,type:"alert-danger"}),ye.set(h),m.play("_notification.ogg"),B=!0),u.passcode&&u.passcode.length>window.config.door_passcode_max_length&&(h.push({message:window.locales.create.alerts.passcode_length_bad,type:"alert-danger"}),ye.set(h),m.play("_notification.ogg"),B=!0)),u.auto_lock!=null&&u.auto_lock.toString().match(/[^0-9]/g)?(h.push({message:window.locales.create.alerts.auto_lock_nan,type:"alert-danger"}),ye.set(h),m.play("_notification.ogg"),B=!0):u.auto_lock!=""&&u.auto_lock>window.config.auto_lock_max_time&&(h.push({message:window.locales.create.alerts.auto_lock_too_large[0]+window.config.auto_lock_max_time+window.locales.create.alerts.auto_lock_too_large[1],type:"alert-danger"}),ye.set(h),m.play("_notification.ogg"),B=!0),(u.distance<1||u.distance>10)&&T(H,u.distance=2,u),B)return;let Q={perms:{job:u.jobs,identifier:u.identifier,ace:u.ace,discord:u.discord,items:u.items},passcode:u.passcode?u.passcode:null,lockpickable:u.lockpick,door_name:u.name,location_group:u.locationGroup,door_sound:u.sound,distance:u.distance,state:!1,default_state:u.locked,door_type:c.door_count==1?"single":c.door_count==2?"double":c.door_count==3?"garage":"gates",door_data:u.door_data,secret:u.secret,camera:u.camera,auto_lock:u.auto_lock==""?null:u.auto_lock};c.editing.state?(T(Me,d[c.editing.door].perms=Q.perms,d),T(Me,d[c.editing.door].passcode=Q.passcode,d),T(Me,d[c.editing.door].lockpickable=Q.lockpickable,d),T(Me,d[c.editing.door].door_name=Q.door_name,d),T(Me,d[c.editing.door].location_group=Q.location_group,d),T(Me,d[c.editing.door].door_sound=Q.door_sound,d),T(Me,d[c.editing.door].distance=Q.distance,d),T(Me,d[c.editing.door].state=Q.state,d),T(Me,d[c.editing.door].default_state=Q.default_state,d),T(Me,d[c.editing.door].door_type=Q.door_type,d),T(Me,d[c.editing.door].door_data=Q.door_data,d),T(Me,d[c.editing.door].secret=Q.secret,d),T(Me,d[c.editing.door].camera=Q.camera,d),T(Me,d[c.editing.door].auto_lock=Q.auto_lock,d),He.send("updatedoor",d[c.editing.door]),h.push({message:window.locales.create.alerts.door_updated,type:"alert-success"}),ye.set(h),m.play("_notification.ogg")):(He.send("create_door",Q),d.push(Q),Me.set(d),h.push({message:window.locales.create.alerts.door_created,type:"alert-success"}),ye.set(h),m.play("_notification.ogg")),v(),T(j,c.creating=!1,c),T(j,c.doors_selected=!1,c),T(j,c.editing.state=!1,c)}function v(){T(H,u.name="",u),T(H,u.locationGroup="",u),T(H,u.jobs=[],u),T(H,u.identifier=[],u),T(H,u.ace=[],u),T(H,u.discord=[],u),T(H,u.locked=!0,u),T(H,u.lockpick=!1,u),T(H,u.garage=!1,u),T(H,u.passcode="",u),T(H,u.sound="",u),T(H,u.door_data=[],u),T(H,u.secret=!1,u),T(H,u.camera=!1,u),T(H,u.distance=2,u),T(H,u.auto_lock="",u),T(H,u.items=[],u)}function w(B,Q){let Z=B==-1?Q:d[B];!Z||(T(H,u.name=Z.door_name,u),T(H,u.locationGroup=Z.location_group,u),T(H,u.jobs=Z.perms.job?Z.perms.job:[],u),T(H,u.identifier=Z.perms.identifier?Z.perms.identifier:[],u),T(H,u.ace=Z.perms.ace?Z.perms.ace:[],u),T(H,u.discord=Z.perms.discord?Z.perms.discord:[],u),T(H,u.items=Z.perms.items?Z.perms.items:[],u),T(H,u.locked=Z.default_state,u),T(H,u.lockpick=Z.lockpickable,u),T(H,u.passcode=Z.passcode,u),T(H,u.sound=Z.door_sound,u),T(H,u.door_data=Z.door_data,u),T(H,u.secret=Z.secret,u),T(H,u.camera=Z.camera,u),T(H,u.distance=Z.distance,u),T(H,u.auto_lock=Z.auto_lock,u),T(j,c.editing.state=!0,c),T(j,c.editing.door=B==-1?d.findIndex(de=>de.door_data[0].unique_id===Q.door_data[0].unique_id):B,c))}function S(){if(c.editing.state)T(j,c.delete.state=!0,c),T(j,c.delete.door=c.editing.door,c),T(j,c.delete.name=d[c.editing.door].door_name,c),T(j,c.delete.type="door",c);else return}function M(){v(),T(j,c.doors_data=null,c),T(j,c.editing.door=-1,c),T(j,c.creating=!1,c),T(j,c.doors_selected=!1,c),T(j,c.editing.state=!1,c),j.set(c)}function G(){T(Xe,p.locationGroup=u.locationGroup,p),T(Xe,p.jobs=u.jobs,p),T(Xe,p.identifier=u.identifier,p),T(Xe,p.ace=u.ace,p),T(Xe,p.discord=u.discord,p),T(Xe,p.items=u.items,p),T(Xe,p.locked=u.locked,p),T(Xe,p.lockpick=u.lockpick,p),T(Xe,p.garage=u.garage,p),T(Xe,p.passcode=u.passcode,p),T(Xe,p.sound=u.sound,p),T(Xe,p.secret=u.secret,p),T(Xe,p.camera=u.camera,p),T(Xe,p.distance=u.distance,p),T(Xe,p.auto_lock=u.auto_lock,p),T(Xe,p.hasData=!0,p),Xe.set(p)}function U(){!p.hasData||(T(H,u.locationGroup=p.locationGroup,u),T(H,u.jobs=p.jobs,u),T(H,u.identifier=p.identifier,u),T(H,u.ace=p.ace,u),T(H,u.discord=p.discord,u),T(H,u.items=p.items,u),T(H,u.locked=p.locked,u),T(H,u.lockpick=p.lockpick,u),T(H,u.garage=p.garage,u),T(H,u.passcode=p.passcode,u),T(H,u.sound=p.sound,u),T(H,u.secret=p.secret,u),T(H,u.camera=p.camera,u),T(H,u.distance=p.distance,u),T(H,u.auto_lock=p.auto_lock,u))}const K=()=>{g(1)},J=()=>{g(2)},q=()=>{g(3)},ne=()=>{g(4)},O=()=>{g(5)};function X(){E=this.value,t(5,E)}const I=B=>{w(-1,B)},le=B=>{w(B)},se=()=>{l-1<0||t(2,l-=1)},ie=B=>{B.index!=-1&&t(2,l=B.index)},_e=()=>{l+1==f||t(2,l+=1)};return n.$$.update=()=>{if(n.$$.dirty[0]&31)if(i.length>0)if(t(0,o.length=0,o),t(1,f=Math.ceil(i.length/12)),f>Rt){let B=!1,Q=1,Z=Rt;l+3Rt?(o.push({number:1,index:0}),o.push({number:"...",index:-1}),Q=l-Rt+3,B?Z=l+2:Z=f-1):l+3>Rt&&(Z=l+2);for(let de=Q;de<=Z;de++)o.push({number:de,index:de-1});B?(o.push({number:"...",index:-1}),o.push({number:f,index:f-1})):o.push({number:f,index:f-1})}else for(let B=1;B<=f;B++)o.push({number:B,index:B-1});else if(t(0,o.length=0,o),t(1,f=Math.ceil(d.length/12)),f>Rt){let B=!1,Q=1,Z=Rt;l+3Rt?(o.push({number:1,index:0}),o.push({number:"...",index:-1}),Q=l-Rt+3,B?Z=l+2:Z=f-1):l+3>Rt&&(Z=l+2);for(let de=Q;de<=Z;de++)o.push({number:de,index:de-1});B?(o.push({number:"...",index:-1}),o.push({number:f,index:f-1})):o.push({number:f,index:f-1})}else for(let B=1;B<=f;B++)o.push({number:B,index:B-1})},s="",t(3,i=[]),t(2,l=0),t(0,o=[]),t(1,f=0),[o,f,l,i,d,E,p,c,g,A,C,b,v,w,S,M,G,U,K,J,q,ne,O,X,I,le,se,ie,_e]}class sh extends bt{constructor(e){super(),gt(this,e,nh,th,rt,{},null,[-1,-1])}}function lr(n){let e,t,s=window.locales.navigation.create_edit+"",i,l,o,f,d,p;return{c(){e=_("li"),t=_("a"),i=V(s),l=k(),o=_("i"),a(o,"class","bi bi-pencil-square"),a(t,"href","#"),a(t,"class",f="text-light nav-link "+(n[0]=="create"?"active":"")),a(e,"class","nav-item"),a(e,"data-name","create")},m(u,c){D(u,e,c),r(e,t),r(t,i),r(t,l),r(t,o),d||(p=P(e,"click",n[5]),d=!0)},p(u,c){c&1&&f!==(f="text-light nav-link "+(u[0]=="create"?"active":""))&&a(t,"class",f)},d(u){u&&L(e),d=!1,p()}}}function rr(n){let e,t,s=window.locales.navigation.import+"",i,l,o,f,d,p;return{c(){e=_("li"),t=_("a"),i=V(s),l=k(),o=_("i"),a(o,"class","bi bi-box-arrow-in-down-right"),a(t,"href","#"),a(t,"class",f="text-light nav-link "+(n[0]=="import"?"active":"")),a(e,"class","nav-item"),a(e,"data-name","import")},m(u,c){D(u,e,c),r(e,t),r(t,i),r(t,l),r(t,o),d||(p=P(e,"click",n[3]),d=!0)},p(u,c){c&1&&f!==(f="text-light nav-link "+(u[0]=="import"?"active":""))&&a(t,"class",f)},d(u){u&&L(e),d=!1,p()}}}function ih(n){let e,t,s,i,l=window.locales.navigation.control+"",o,f,d,p,u,c,m,h,g=window.locales.navigation.settings+"",A,y,E,C,N,b,v=n[1]&&lr(n),w=n[1]&&rr(n);return{c(){e=_("ul"),v&&v.c(),t=k(),s=_("li"),i=_("a"),o=V(l),f=k(),d=_("i"),u=k(),w&&w.c(),c=k(),m=_("li"),h=_("a"),A=V(g),y=k(),E=_("i"),a(d,"class","bi bi-dpad"),a(i,"href","#"),a(i,"class",p="text-light nav-link "+(n[0]=="control"?"active":"")),a(s,"class","nav-item"),a(s,"data-name","control"),a(E,"class","bi bi-gear"),a(h,"href","#"),a(h,"class",C="text-light nav-link "+(n[0]=="settings"?"active":"")),a(m,"class","nav-item"),a(m,"data-name","settings"),a(e,"class","nav nav-tabs mt-3")},m(S,M){D(S,e,M),v&&v.m(e,null),r(e,t),r(e,s),r(s,i),r(i,o),r(i,f),r(i,d),r(e,u),w&&w.m(e,null),r(e,c),r(e,m),r(m,h),r(h,A),r(h,y),r(h,E),N||(b=[P(s,"click",n[4]),P(m,"click",n[2])],N=!0)},p(S,[M]){S[1]?v?v.p(S,M):(v=lr(S),v.c(),v.m(e,t)):v&&(v.d(1),v=null),M&1&&p!==(p="text-light nav-link "+(S[0]=="control"?"active":""))&&a(i,"class",p),S[1]?w?w.p(S,M):(w=rr(S),w.c(),w.m(e,c)):w&&(w.d(1),w=null),M&1&&C!==(C="text-light nav-link "+(S[0]=="settings"?"active":""))&&a(h,"class",C)},i:ue,o:ue,d(S){S&&L(e),v&&v.d(),w&&w.d(),N=!1,Ee(b)}}}function oh(n,e,t){let{active:s="create"}=e,{permissions:i}=e;i?s="create":s="control";function l(p){xn.call(this,n,p)}function o(p){xn.call(this,n,p)}function f(p){xn.call(this,n,p)}function d(p){xn.call(this,n,p)}return n.$$set=p=>{"active"in p&&t(0,s=p.active),"permissions"in p&&t(1,i=p.permissions)},[s,i,l,o,f,d]}class lh extends bt{constructor(e){super(),gt(this,e,oh,ih,rt,{active:0,permissions:1})}}function rh(n,e){if(!n){console.error("[Scale] - Scaling function needs an element passed");return}if(!e){console.error("[Scale] - Scaling function needs a value passed");return}if(e<0){console.error("[Scale] - Scaling function needs a value higher than 0");return}n.style.setProperty("--scale",e)}function ah(n){let e,t,s,i,l,o,f,d=n[1].toFixed(0)+"",p,u,c,m,h,g;return{c(){e=_("div"),t=_("div"),s=_("label"),s.textContent=`${window.locales.settings.scale}`,i=k(),l=_("input"),o=k(),f=_("span"),p=V(d),u=V("%"),a(s,"for","scale"),a(s,"class","form-label"),a(l,"type","range"),a(l,"class","form-range"),a(l,"id","scale"),a(l,"min","50"),a(l,"max","300"),a(l,"step","10"),a(t,"class","col-6 col-sm-6"),a(e,"class","row")},m(A,y){D(A,e,y),r(e,t),r(t,s),r(t,i),r(t,l),pe(l,n[1]),r(t,o),r(t,f),r(f,p),r(f,u),m=!0,h||(g=[P(l,"change",n[4]),P(l,"input",n[4]),P(l,"change",n[2]),P(l,"input",ch),P(l,"mouseup",Ga)],h=!0)},p(A,[y]){y&2&&pe(l,A[1]),(!m||y&2)&&d!==(d=A[1].toFixed(0)+"")&&fe(p,d)},i(A){m||(it(()=>{c||(c=Bt(e,Wt,{duration:100},!0)),c.run(1)}),m=!0)},o(A){c||(c=Bt(e,Wt,{duration:100},!1)),c.run(0),m=!1},d(A){A&&L(e),A&&c&&c.end(),h=!1,Ee(g)}}}function ch(n){document.documentElement.style.setProperty("--pseudo-scale",(n.target.value/100).toString()),document.querySelector(".scale-placeholder").classList.add("placeholder-show")}function Ga(){document.querySelector(".scale-placeholder").classList.remove("placeholder-show")}function uh(n,e,t){let s,i,l=ue,o=()=>(l(),l=Xs(d,c=>t(5,i=c)),d);n.$$.on_destroy.push(()=>l());let{settings:f}=e,{store:d}=e;o();function p(c){rh(document.getElementById("create-doors"),s/100),Ga(),T(d,i.scale=(s/100).toFixed(2),i),f.update(i)}Yn(async()=>{t(1,s=i.scale?i.scale*100:100),p(),setTimeout(()=>{document.documentElement.style.setProperty("--pseudo-width",document.getElementById("create-doors").offsetWidth+"px"),document.documentElement.style.setProperty("--pseudo-height",document.getElementById("create-doors").offsetHeight+"px")},500)});function u(){s=ln(this.value),t(1,s)}return n.$$set=c=>{"settings"in c&&t(3,f=c.settings),"store"in c&&o(t(0,d=c.store))},t(1,s=100),[d,s,p,f,u]}class dh extends bt{constructor(e){super(),gt(this,e,uh,ah,rt,{settings:3,store:0})}}class fh{constructor(e,t,s){Xt(this,"settings");Xt(this,"version");Xt(this,"resource");Xt(this,"subscription");this.settings=St({}),this.version=e,this.resource=t;let i=window.localStorage.getItem(t);i?(i=JSON.parse(i),!i.version||this.version!=i.version?s?this.set(s):(this.removeLocal(),this.set({})):this.set(i)):s?this.set(this.versioned(s)):(this.removeLocal(),this.set({}))}get(){return Io(this.settings)}set(e){this.settings.set(this.versioned(e)),this.updateLocal()}update(e,t){let s=this.get();s[e]=t,this.settings.set(s),this.updateLocal()}updateLocal(){window.localStorage.setItem(this.resource,JSON.stringify(Io(this.settings)))}removeLocal(){window.localStorage.removeItem(this.resource)}versioned(e){let t=e;return t.version=this.version,t}}function ph(n,e){let t=!1,s,i;setTimeout(()=>{s=n.style.left.length==0||n.style.left=="0px"?window.outerWidth/2-n.getBoundingClientRect().width/2:parseFloat(n.style.left),i=n.style.top.length==0||n.style.top=="0px"?window.outerHeight/2-n.getBoundingClientRect().height/2:parseFloat(n.style.top)},100),e=document.getElementById(e),n.style.position="absolute",n.style.top=`${i}px`,n.style.left=`${s}px`,e.style.cursor="grab",e.style.userSelect="none",e.addEventListener("mousedown",()=>{const l=new DragEvent("dragstart");window.dispatchEvent(l),t=!0}),window.addEventListener("mousemove",l=>{t&&(s+=l.movementX,i+=l.movementY,n.style.top=`${i}px`,n.style.left=`${s}px`)}),window.addEventListener("mouseup",()=>{t=!1;const l=new DragEvent("dragend");window.dispatchEvent(l)})}const _h="data:image/webp;base64,UklGRiIBAABXRUJQVlA4WAoAAAAQAAAA/wAA/wAAQUxQSF4AAAABN6CYkSQ4Os9BuJZhCVZkIyJw+uVATdtI0oEYAPdh2Pqq65c/ptSJ6L8it22bzI47HzHwOS96Zqb/I8/q4g/+c/Cr8B/8of/u6L87+u+O/ruj/+7ovzsW4I7+uzMBVlA4IJ4AAADQEACdASoAAQABPikUiUOhoSEQFAAYAoS0t3C7WI2gBPYB77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJwoAD+//JMAAAAAAAAAAAAAA==";function ar(n){let e,t,s,i,l,o;return{c(){e=_("div"),t=_("div"),t.innerHTML='',s=k(),i=_("div"),i.innerHTML='',a(t,"class","backspace svelte-11vz8gd"),a(i,"class","backspace svelte-11vz8gd"),a(e,"id","suggest-container"),a(e,"class","svelte-11vz8gd")},m(f,d){D(f,e,d),r(e,t),r(e,s),r(e,i),l||(o=[P(t,"click",n[7]),P(i,"click",n[8])],l=!0)},p:ue,d(f){f&&L(e),l=!1,Ee(o)}}}function hh(n){let e,t,s,i,l,o,f,d,p,u,c,m,h,g,A,y,E,C,N,b,v,w,S,M,G,U,K,J,q,ne,O,X,I,le,se,ie,_e,B,Q,Z,de,ke,ae,oe,Ae,Ne,$,Y,R,W,x,Le,Re,et,he=n[1]&&ar(n);return{c(){e=_("div"),t=_("div"),s=_("div"),i=_("div"),l=_("div"),f=k(),d=_("div"),p=_("div"),c=k(),m=_("div"),h=_("div"),A=k(),y=_("div"),E=_("div"),C=_("input"),N=k(),he&&he.c(),b=k(),v=_("div"),w=_("div"),S=_("div"),S.textContent="1",M=k(),G=_("div"),G.textContent="2",U=k(),K=_("div"),K.textContent="3",J=k(),q=_("div"),ne=_("div"),ne.textContent="4",O=k(),X=_("div"),X.textContent="5",I=k(),le=_("div"),le.textContent="6",se=k(),ie=_("div"),_e=_("div"),_e.textContent="7",B=k(),Q=_("div"),Q.textContent="8",Z=k(),de=_("div"),de.textContent="9",ke=k(),ae=_("div"),oe=_("div"),oe.innerHTML='',Ae=k(),Ne=_("div"),Ne.textContent="0",$=k(),Y=_("div"),Y.innerHTML='',R=k(),W=_("div"),a(l,"class",o="led-green "+(n[5]?"led-green-active":"")+" svelte-11vz8gd"),a(i,"class","led-box svelte-11vz8gd"),a(p,"class",u="led-yellow "+(n[3]?"led-yellow-active":"")+" svelte-11vz8gd"),a(d,"class","led-box svelte-11vz8gd"),a(h,"class",g="led-red "+(n[4]?"led-red-active":"")+" svelte-11vz8gd"),a(m,"class","led-box svelte-11vz8gd"),a(s,"id","status-led"),a(s,"class","svelte-11vz8gd"),a(C,"type","password"),a(C,"class","w-100 svelte-11vz8gd"),a(E,"id","keypad-screen"),a(E,"class","position-relative svelte-11vz8gd"),a(y,"id","keypad-screen-wrapper"),a(S,"class","keypad-button svelte-11vz8gd"),a(G,"class","keypad-button svelte-11vz8gd"),a(K,"class","keypad-button svelte-11vz8gd"),a(w,"class","keypad-button-row w-100 svelte-11vz8gd"),a(ne,"class","keypad-button svelte-11vz8gd"),a(X,"class","keypad-button svelte-11vz8gd"),a(le,"class","keypad-button svelte-11vz8gd"),a(q,"class","keypad-button-row w-100 svelte-11vz8gd"),a(_e,"class","keypad-button svelte-11vz8gd"),a(Q,"class","keypad-button svelte-11vz8gd"),a(de,"class","keypad-button svelte-11vz8gd"),a(ie,"class","keypad-button-row w-100 svelte-11vz8gd"),a(oe,"class","keypad-button svelte-11vz8gd"),tt(oe,"color","#d0fe1d"),a(Ne,"class","keypad-button svelte-11vz8gd"),a(Y,"class","keypad-button text-warning svelte-11vz8gd"),a(ae,"class","keypad-button-row w-100 svelte-11vz8gd"),a(v,"id","keypad-button-wrapper"),a(v,"class","svelte-11vz8gd"),a(W,"id","keypad-speaker"),tt(W,"background-image","url("+_h+")"),a(W,"class","svelte-11vz8gd"),a(t,"id","keypad-round-wrapper"),a(t,"class","svelte-11vz8gd"),a(e,"id","keypad"),a(e,"class","shadow-sm svelte-11vz8gd")},m(me,Te){D(me,e,Te),r(e,t),r(t,s),r(s,i),r(i,l),r(s,f),r(s,d),r(d,p),r(s,c),r(s,m),r(m,h),r(t,A),r(t,y),r(y,E),r(E,C),pe(C,n[2]),r(E,N),he&&he.m(E,null),r(t,b),r(t,v),r(v,w),r(w,S),r(w,M),r(w,G),r(w,U),r(w,K),r(v,J),r(v,q),r(q,ne),r(q,O),r(q,X),r(q,I),r(q,le),r(v,se),r(v,ie),r(ie,_e),r(ie,B),r(ie,Q),r(ie,Z),r(ie,de),r(v,ke),r(v,ae),r(ae,oe),r(ae,Ae),r(ae,Ne),r(ae,$),r(ae,Y),r(t,R),r(t,W),Le=!0,Re||(et=[P(C,"input",n[13]),P(C,"input",n[11]),P(C,"paste",n[11]),P(S,"click",n[14]),P(G,"click",n[15]),P(K,"click",n[16]),P(ne,"click",n[17]),P(X,"click",n[18]),P(le,"click",n[19]),P(_e,"click",n[20]),P(Q,"click",n[21]),P(de,"click",n[22]),P(oe,"click",n[10]),P(Ne,"click",n[23]),P(Y,"click",n[9])],Re=!0)},p(me,[Te]){(!Le||Te&32&&o!==(o="led-green "+(me[5]?"led-green-active":"")+" svelte-11vz8gd"))&&a(l,"class",o),(!Le||Te&8&&u!==(u="led-yellow "+(me[3]?"led-yellow-active":"")+" svelte-11vz8gd"))&&a(p,"class",u),(!Le||Te&16&&g!==(g="led-red "+(me[4]?"led-red-active":"")+" svelte-11vz8gd"))&&a(h,"class",g),Te&4&&C.value!==me[2]&&pe(C,me[2]),me[1]?he?he.p(me,Te):(he=ar(me),he.c(),he.m(E,null)):he&&(he.d(1),he=null)},i(me){Le||(it(()=>{x||(x=Bt(e,Wt,{duration:100},!0)),x.run(1)}),Le=!0)},o(me){x||(x=Bt(e,Wt,{duration:100},!1)),x.run(0),Le=!1},d(me){me&&L(e),he&&he.d(),me&&x&&x.end(),Re=!1,Ee(et)}}}function mh(n,e,t){let s,i,l,o,f,d,p,u=ue,c=()=>(u(),u=Xs(h,O=>t(25,p=O)),h),m;be(n,j,O=>t(12,m=O)),n.$$.on_destroy.push(()=>u());let{sound:h}=e;c();function g(O){s.length!=8&&(t(2,s+=O),t(1,i=!0),p.play("_key_press.ogg"))}function A(){if(s.length>0)t(2,s=s.slice(0,-1)),s.length==0&&t(1,i=!1);else return}function y(){l=="password"?l="text":l="password",document.querySelector("#keypad-screen > input").type=l}function E(){t(3,f=!0),He.send("send_passcode",{passcode:s})}function C(){He.send("start_lockpick",{door:null})}function N(O){if(s.length>8){t(2,s=s.slice(0,-(s.length-8))),t(2,s=s.replace(/([^0-9])*/gim,""));return}if(t(2,s=s.replace(/([^0-9])*/gim,"")),s.length==0){t(1,i=!1);return}t(1,i=!0)}function b(){s=this.value,t(2,s)}const v=()=>{g(1)},w=()=>{g(2)},S=()=>{g(3)},M=()=>{g(4)},G=()=>{g(5)},U=()=>{g(6)},K=()=>{g(7)},J=()=>{g(8)},q=()=>{g(9)},ne=()=>{g(0)};return n.$$set=O=>{"sound"in O&&c(t(0,h=O.sound))},n.$$.update=()=>{n.$$.dirty&4096&&t(5,o=m.keypad_success),n.$$.dirty&4096&&t(3,f=m.keypad_processing),n.$$.dirty&4096&&t(4,d=m.keypad_error)},t(2,s=""),t(1,i=!1),l="password",[h,i,s,f,d,o,g,A,y,E,C,N,m,b,v,w,S,M,G,U,K,J,q,ne]}class gh extends bt{constructor(e){super(),gt(this,e,mh,hh,rt,{sound:0})}}function cr(n,e,t){const s=n.slice();return s[49]=e[t],s[51]=t,s}function ur(n,e,t){const s=n.slice();return s[49]=e[t],s[51]=t,s}function dr(n,e,t){const s=n.slice();return s[49]=e[t],s[51]=t,s}function fr(n,e,t){const s=n.slice();return s[59]=e[t],s[51]=t,s}function pr(n,e,t){const s=n.slice();return s[57]=e[t],s[51]=t,s}function _r(n,e,t){const s=n.slice();return s[55]=e[t],s[51]=t,s}function hr(n,e,t){const s=n.slice();return s[53]=e[t],s[51]=t,s}function mr(n,e,t){const s=n.slice();return s[62]=e[t],s[51]=t,s}function bh(n){let e=window.locales.import.permissions[1]+"",t;return{c(){t=V(e)},m(s,i){D(s,t,i)},p:ue,d(s){s&&L(t)}}}function vh(n){let e=window.locales.import.permissions[2]+"",t;return{c(){t=V(e)},m(s,i){D(s,t,i)},p:ue,d(s){s&&L(t)}}}function gr(n){let e,t,s=window.locales.permissions[n[62].toLowerCase()]+"",i,l,o,f,d;function p(){return n[27](n[62])}return{c(){e=_("li"),t=_("span"),i=V(s),o=k(),a(t,"class",l="nav-link text-light"+(n[0]==n[62]?" active":"")),a(t,"aria-current","page"),a(e,"class","nav-item svelte-1b1fi6t")},m(u,c){D(u,e,c),r(e,t),r(t,i),r(e,o),f||(d=P(e,"click",p),f=!0)},p(u,c){n=u,c[0]&2&&s!==(s=window.locales.permissions[n[62].toLowerCase()]+"")&&fe(i,s),c[0]&3&&l!==(l="nav-link text-light"+(n[0]==n[62]?" active":""))&&a(t,"class",l)},d(u){u&&L(e),f=!1,d()}}}function br(n,e){let t,s,i=e[62]!="Passcode"&&gr(e);return{key:n,first:null,c(){t=qe(),i&&i.c(),s=qe(),this.first=t},m(l,o){D(l,t,o),i&&i.m(l,o),D(l,s,o)},p(l,o){e=l,e[62]!="Passcode"?i?i.p(e,o):(i=gr(e),i.c(),i.m(s.parentNode,s)):i&&(i.d(1),i=null)},d(l){l&&L(t),i&&i.d(l),l&&L(s)}}}function wh(n){let e,t=window.locales.create.form.item+"",s,i,l,o,f,d,p,u,c,m,h,g=[],A=new Map,y,E,C=n[2];const N=b=>b[51];for(let b=0;bb[51];for(let b=0;bb[51];for(let b=0;bb[51];for(let b=0;bw[51];for(let w=0;w{d&&d.end(1),f=Js(e,n[15],{key:n[51]}),f.start()}),p=!0)},o(h){f&&f.invalidate(),d=Zs(e,n[14],{key:n[51]}),p=!1},d(h){h&&L(e),h&&d&&d.end(),u=!1,c()}}}function Tr(n,e){let t,s,i,l=!e[49].imported&&Ar(e);return{key:n,first:null,c(){t=qe(),l&&l.c(),s=qe(),this.first=t},m(o,f){D(o,t,f),l&&l.m(o,f),D(o,s,f),i=!0},p(o,f){e=o,e[49].imported?l&&(ft(),ge(l,1,1,()=>{l=null}),pt()):l?(l.p(e,f),f[0]&4096&&ce(l,1)):(l=Ar(e),l.c(),ce(l,1),l.m(s.parentNode,s))},i(o){i||(ce(l),i=!0)},o(o){ge(l),i=!1},d(o){o&&L(t),l&&l.d(o),o&&L(s)}}}function Cr(n){let e,t=n[49].name+"",s,i,l,o,f,d,p,u,c;function m(){return n[40](n[51])}return{c(){e=_("li"),s=V(t),i=k(),l=_("i"),o=k(),a(l,"class","bi bi-x-square-fill text-danger"),a(e,"class","list-group-item list-group-item-action cursor import-item text-capitalize svelte-1b1fi6t")},m(h,g){D(h,e,g),r(e,s),r(e,i),r(e,l),r(e,o),p=!0,u||(c=P(e,"click",m),u=!0)},p(h,g){n=h,(!p||g[0]&4096)&&t!==(t=n[49].name+"")&&fe(s,t)},i(h){p||(it(()=>{d&&d.end(1),f=Js(e,n[15],{key:n[51]}),f.start()}),p=!0)},o(h){f&&f.invalidate(),d=Zs(e,n[14],{key:n[51]}),p=!1},d(h){h&&L(e),h&&d&&d.end(),u=!1,c()}}}function Or(n,e){let t,s,i,l=e[49].imported&&Cr(e);return{key:n,first:null,c(){t=qe(),l&&l.c(),s=qe(),this.first=t},m(o,f){D(o,t,f),l&&l.m(o,f),D(o,s,f),i=!0},p(o,f){e=o,e[49].imported?l?(l.p(e,f),f[0]&4096&&ce(l,1)):(l=Cr(e),l.c(),ce(l,1),l.m(s.parentNode,s)):l&&(ft(),ge(l,1,1,()=>{l=null}),pt())},i(o){i||(ce(l),i=!0)},o(o){ge(l),i=!1},d(o){o&&L(t),l&&l.d(o),o&&L(s)}}}function Th(n){let e,t,s,i,l,o,f,d,p=[],u=new Map,c,m,h,g,A,y,E,C,N,b,v,w,S,M=[],G=new Map,U,K,J,q,ne,O,X,I=[],le=new Map,se,ie;function _e(R,W){return R[13].identifier?vh:bh}let B=_e(n),Q=B(n),Z=n[1];const de=R=>R[51];for(let R=0;RR[51];for(let R=0;RR[51];for(let R=0;R<$.length;R+=1){let W=cr(n,$,R),x=Y(W);le.set(x,I[R]=Or(x,W))}return{c(){e=_("div"),t=_("div"),s=_("h5"),s.textContent=`${window.locales.import.permissions[0]}`,i=k(),l=_("small"),Q.c(),o=k(),f=_("div"),d=_("ul");for(let R=0;R{se||(se=Bt(e,Wt,{duration:100},!0)),se.run(1)}),ie=!0}},o(R){for(let W=0;Wt(44,A=Y)),be(n,ye,Y=>t(45,y=Y)),be(n,H,Y=>t(46,E=Y)),be(n,is,Y=>t(1,C=Y)),be(n,rs,Y=>t(26,N=Y)),be(n,kt,Y=>t(13,b=Y));const[v,w]=gc({fallback(Y,R){const W=getComputedStyle(Y),x=W.transform==="none"?"":W.transform;return{duration:100,easing:hc,css:Le=>`
+ transform: ${x} scale(${Le});
+ opacity: ${Le}
+ `}}});let S=!1;function M(Y){if(S)return;if(S=!0,o.length+d.length+u.length+m.length+h.length==0){y.push({message:window.locales.import.no_permissions,type:"alert-danger"}),ye.set(y),A.play("_notification.ogg"),S=!1;return}let R=[];for(let x=0;x{S=!1},1e3)}function G(Y){if(S)return;S=!0;let R=[];for(let W=0;W{S=!1},1e3)}function U(){if(i.length>window.config.job_name_max_length||i.length==0){y.push({message:window.locales.create.form.alerts.job_name_too_long,type:"alert-danger"}),ye.set(y),A.play("_notification.ogg");return}else if(i.match(window.config.job_name_match)){y.push({message:window.locales.create.form.alerts.job_name_out_of_scope,type:"alert-danger"}),ye.set(y),A.play("_notification.ogg");return}else if(Number.isInteger(l)){if(l<0||l>window.config.job_grade_max){y.push({message:window.locales.create.form.alerts.job_grade_too_large,type:"alert-danger"}),ye.set(y),A.play("_notification.ogg");return}}else{y.push({message:window.locales.create.form.alerts.job_grade_nan,type:"alert-danger"}),ye.set(y),A.play("_notification.ogg");return}o.push({name:i,grade:l}),t(6,o),t(11,i=""),t(10,l=0)}function K(){if(f.length==0||f.length>64){y.push({message:window.locales.create.form.alerts.identifier_too_long,type:"alert-danger"}),ye.set(y),A.play("_notification.ogg");return}d.push(f),t(5,d)}function J(){u.push(p),t(4,u)}function q(){m.push(c),t(3,m)}function ne(Y){o.splice(Y,1),t(6,o)}function O(Y){d.splice(Y,1),t(5,d)}function X(Y){u.splice(Y,1),t(4,u)}function I(Y){m.splice(Y,1),t(3,m)}const le=Y=>{t(0,g=Y)};function se(){i=this.value,t(11,i)}function ie(){l=ln(this.value),t(10,l)}const _e=Y=>{ne(Y)};function B(){f=this.value,t(9,f)}const Q=Y=>{O(Y)};function Z(){p=this.value,t(8,p)}const de=Y=>{X(Y)};function ke(){c=this.value,t(7,c)}const ae=Y=>{I(Y)};function oe(){c=this.value,t(7,c)}const Ae=Y=>{I(Y)},Ne=Y=>{M(Y)},$=Y=>{G(Y)};return n.$$.update=()=>{n.$$.dirty[0]&67108864&&t(12,s=N),n.$$.dirty[0]&2&&t(0,g=C[0]),n.$$.dirty[0]&1&&g!=""&&setTimeout(()=>{Mi()},500)},t(11,i=""),t(10,l=0),t(6,o=[]),t(9,f=""),t(5,d=[]),t(8,p=""),t(4,u=[]),t(7,c=""),t(3,m=[]),t(2,h=[]),[g,C,h,m,u,d,o,c,p,f,l,i,s,b,v,w,M,G,U,K,J,q,ne,O,X,I,N,le,se,ie,_e,B,Q,Z,de,ke,ae,oe,Ae,Ne,$]}class Oh extends bt{constructor(e){super(),gt(this,e,Ch,Th,rt,{},null,[-1,-1,-1])}}function Nh(n){let e,t=window.locales.selector.icon+"";return{c(){e=_("div"),a(e,"id","selector"),a(e,"class","svelte-2ba962")},m(s,i){D(s,e,i),e.innerHTML=t},p:ue,i:ue,o:ue,d(s){s&&L(e)}}}class Sh extends bt{constructor(e){super(),gt(this,e,null,Nh,rt,{})}}function Lh(n){let e,t,s,i,l,o,f,d,p,u,c,m,h,g=n[2].toISOString()+"",A,y,E,C,N,b,v,w,S;return{c(){e=_("div"),t=_("div"),s=_("div"),s.textContent=`${window.locales.camera.move}`,i=k(),l=_("div"),l.textContent=`${window.locales.camera.zoom}`,o=k(),f=_("div"),f.textContent=`${window.locales.camera.reverse}`,d=k(),p=_("div"),p.textContent=`${window.locales.camera.exit}`,u=k(),c=_("div"),m=_("div"),h=_("div"),A=V(g),y=k(),E=_("div"),C=_("strong"),N=V("["),b=V(n[1]),v=V("]"),w=V(" - "),S=V(n[0]),a(s,"class","camera-tooltip-item svelte-qaw9gz"),a(l,"class","camera-tooltip-item svelte-qaw9gz"),a(f,"class","camera-tooltip-item svelte-qaw9gz"),a(p,"class","camera-tooltip-item svelte-qaw9gz"),a(t,"id","camera-info"),a(t,"class","svelte-qaw9gz"),a(h,"id","camera-timestamp"),a(E,"id","camera-door-name"),a(m,"id","camera-time-location"),a(m,"class","svelte-qaw9gz"),a(c,"id","camera-container"),a(c,"class","svelte-qaw9gz"),a(e,"id","camera"),a(e,"class","svelte-qaw9gz")},m(M,G){D(M,e,G),r(e,t),r(t,s),r(t,i),r(t,l),r(t,o),r(t,f),r(t,d),r(t,p),r(e,u),r(e,c),r(c,m),r(m,h),r(h,A),r(m,y),r(m,E),r(E,C),r(C,N),r(C,b),r(C,v),r(E,w),r(E,S)},p(M,[G]){G&4&&g!==(g=M[2].toISOString()+"")&&fe(A,g),G&2&&fe(b,M[1]),G&1&&fe(S,M[0])},i:ue,o:ue,d(M){M&&L(e)}}}function Dh(n,e,t){let s,{name:i=""}=e,{group:l=""}=e,o;return Yn(()=>{o=setInterval(()=>{t(2,s=new Date)},1e3)}),Vi(()=>{clearInterval(o)}),n.$$set=f=>{"name"in f&&t(0,i=f.name),"group"in f&&t(1,l=f.group)},t(2,s=new Date),[i,l,s]}class Ih extends bt{constructor(e){super(),gt(this,e,Dh,Lh,rt,{name:0,group:1})}}function Mh(n){let e,t,s=n[0].drawTextMessage+"",i,l,o;return{c(){e=_("div"),t=_("div"),a(t,"id","game-start"),a(t,"class","instructions svelte-4d2wf"),a(t,"style",n[1]),a(e,"id","game-instructions"),a(e,"class","svelte-4d2wf")},m(f,d){D(f,e,d),r(e,t),t.innerHTML=s,o=!0},p(f,[d]){(!o||d&1)&&s!==(s=f[0].drawTextMessage+"")&&(t.innerHTML=s),(!o||d&2)&&a(t,"style",f[1])},i(f){o||(it(()=>{l&&l.end(1),i=Js(e,Ks,{x:500,duration:500}),i.start()}),o=!0)},o(f){i&&i.invalidate(),l=Zs(e,Ks,{x:500,duration:500}),o=!1},d(f){f&&L(e),f&&l&&l.end()}}}function $h(n,e,t){let s,i;return be(n,kt,l=>t(0,i=l)),n.$$.update=()=>{n.$$.dirty&1&&i.drawTextColor&&t(1,s="box-shadow: 0px 0px 5px "+i.drawTextColor+";background-color:"+i.drawTextColor+";")},t(1,s=""),[i,s]}class Ph extends bt{constructor(e){super(),gt(this,e,$h,Mh,rt,{})}}const{window:Rs}=uc;function Nr(n){let e,t;return e=new Ph({}),{c(){_t(e.$$.fragment)},m(s,i){ot(e,s,i),t=!0},i(s){t||(ce(e.$$.fragment,s),t=!0)},o(s){ge(e.$$.fragment,s),t=!1},d(s){lt(e,s)}}}function Sr(n){let e,t;return e=new Ih({props:{name:n[0].camera.name,group:n[0].camera.group}}),{c(){_t(e.$$.fragment)},m(s,i){ot(e,s,i),t=!0},p(s,i){const l={};i&1&&(l.name=s[0].camera.name),i&1&&(l.group=s[0].camera.group),e.$set(l)},i(s){t||(ce(e.$$.fragment,s),t=!0)},o(s){ge(e.$$.fragment,s),t=!1},d(s){lt(e,s)}}}function Lr(n){let e,t;return e=new Fa({props:{name:n[0].delete.name}}),e.$on("click",n[14]),{c(){_t(e.$$.fragment)},m(s,i){ot(e,s,i),t=!0},p(s,i){const l={};i&1&&(l.name=s[0].delete.name),e.$set(l)},i(s){t||(ce(e.$$.fragment,s),t=!0)},o(s){ge(e.$$.fragment,s),t=!1},d(s){lt(e,s)}}}function Dr(n){let e,t;return e=new Sh({}),{c(){_t(e.$$.fragment)},m(s,i){ot(e,s,i),t=!0},i(s){t||(ce(e.$$.fragment,s),t=!0)},o(s){ge(e.$$.fragment,s),t=!1},d(s){lt(e,s)}}}function Ir(n){let e,t;return e=new gh({props:{sound:ps}}),{c(){_t(e.$$.fragment)},m(s,i){ot(e,s,i),t=!0},p:ue,i(s){t||(ce(e.$$.fragment,s),t=!0)},o(s){ge(e.$$.fragment,s),t=!1},d(s){lt(e,s)}}}function Mr(n){let e,t,s,i,l,o=window.locales.main.info+"",f,d,p,u,c,m,h,g,A,y,E,C,N,b,v,w,S=window.locales.main.logo+"",M,G,U,K,J,q;c=new _c({props:{type:n[8]}}),h=new lh({props:{active:n[7],permissions:n[9].permissions}}),h.$on("click",n[10]);const ne=[Vh,Hh,jh,Rh],O=[];function X(I,le){return I[7]=="create"?0:I[7]=="control"?1:I[7]=="settings"?2:I[7]=="import"?3:-1}return~(y=X(n))&&(E=O[y]=ne[y](n)),{c(){e=_("div"),t=k(),s=_("div"),i=_("div"),l=_("div"),f=V(o),d=k(),p=_("small"),p.innerHTML='',u=k(),_t(c.$$.fragment),m=k(),_t(h.$$.fragment),g=k(),A=_("div"),E&&E.c(),C=k(),N=_("div"),b=_("small"),b.textContent=`${window.locales.main.version}`,v=k(),w=_("small"),a(e,"class","scale-placeholder"),a(p,"class","float-end text-small text-muted"),a(l,"class","card-header"),a(l,"id","handle"),a(A,"class","card-body row"),a(w,"id","server-logo"),a(w,"class","text-small svelte-vrcv47"),a(N,"class","card-footer d-flex justify-content-between"),a(i,"class","card col"),a(s,"id","create-doors"),a(s,"style",M="position:absolute; "+n[1]),a(s,"class","w-50 border-cd rounded shadow-sm scale svelte-vrcv47")},m(I,le){D(I,e,le),D(I,t,le),D(I,s,le),r(s,i),r(i,l),r(l,f),r(l,d),r(l,p),r(i,u),ot(c,i,null),r(i,m),ot(h,i,null),r(i,g),r(i,A),~y&&O[y].m(A,null),r(i,C),r(i,N),r(N,b),r(N,v),r(N,w),w.innerHTML=S,K=!0,J||(q=Za(ph.call(null,s,"handle")),J=!0)},p(I,le){const se={};le&256&&(se.type=I[8]),c.$set(se);const ie={};le&128&&(ie.active=I[7]),le&512&&(ie.permissions=I[9].permissions),h.$set(ie);let _e=y;y=X(I),y===_e?~y&&O[y].p(I,le):(E&&(ft(),ge(O[_e],1,1,()=>{O[_e]=null}),pt()),~y?(E=O[y],E?E.p(I,le):(E=O[y]=ne[y](I),E.c()),ce(E,1),E.m(A,null)):E=null),(!K||le&2&&M!==(M="position:absolute; "+I[1]))&&a(s,"style",M)},i(I){K||(ce(c.$$.fragment,I),ce(h.$$.fragment,I),ce(E),it(()=>{U&&U.end(1),G=Js(s,Ks,{y:500,duration:300}),G.start()}),K=!0)},o(I){ge(c.$$.fragment,I),ge(h.$$.fragment,I),ge(E),G&&G.invalidate(),U=Zs(s,Ks,{y:500,duration:300}),K=!1},d(I){I&&L(e),I&&L(t),I&&L(s),lt(c),lt(h),~y&&O[y].d(),I&&U&&U.end(),J=!1,q()}}}function Rh(n){let e,t;return e=new Oh({}),{c(){_t(e.$$.fragment)},m(s,i){ot(e,s,i),t=!0},p:ue,i(s){t||(ce(e.$$.fragment,s),t=!0)},o(s){ge(e.$$.fragment,s),t=!1},d(s){lt(e,s)}}}function jh(n){let e,t;return e=new dh({props:{settings:n[4],store:n[4].settings}}),{c(){_t(e.$$.fragment)},m(s,i){ot(e,s,i),t=!0},p(s,i){const l={};i&16&&(l.settings=s[4]),i&16&&(l.store=s[4].settings),e.$set(l)},i(s){t||(ce(e.$$.fragment,s),t=!0)},o(s){ge(e.$$.fragment,s),t=!1},d(s){lt(e,s)}}}function Hh(n){let e,t;return e=new D_({}),{c(){_t(e.$$.fragment)},m(s,i){ot(e,s,i),t=!0},p:ue,i(s){t||(ce(e.$$.fragment,s),t=!0)},o(s){ge(e.$$.fragment,s),t=!1},d(s){lt(e,s)}}}function Vh(n){let e,t;return e=new sh({}),{c(){_t(e.$$.fragment)},m(s,i){ot(e,s,i),t=!0},p:ue,i(s){t||(ce(e.$$.fragment,s),t=!0)},o(s){ge(e.$$.fragment,s),t=!1},d(s){lt(e,s)}}}function $r(n){let e,t,s,i,l=window.locales.create.selection.select[0]+"",o,f,d,p,u,c=window.locales.create.selection.select[1]+"",m,h,g=window.locales.create.selection.select[2]+"",A,y,E,C=window.locales.create.selection.cancel[0]+"",N,b,v,w,S,M=window.locales.create.selection.cancel[1]+"",G,U,K=window.locales.create.selection.cancel[2]+"",J,q,ne,O,X=window.locales.create.selection.amount_selected[0]+"",I,le,se,ie,_e,B=(n[0].door_count==3||n[0].door_count==4||n[0].door_count==5?1:n[0].door_count)+"",Q,Z,de=window.locales.create.selection.amount_selected[1]+"",ke;return{c(){e=_("div"),t=_("div"),s=_("div"),i=_("div"),o=V(l),f=k(),d=_("kbd"),p=_("i"),u=k(),m=V(c),h=k(),A=V(g),y=k(),E=_("div"),N=V(C),b=k(),v=_("kbd"),w=_("i"),S=k(),G=V(M),U=k(),J=V(K),q=k(),ne=_("div"),O=_("div"),I=V(X),le=k(),se=_("span"),ie=V(n[6]),_e=V("/"),Q=V(B),Z=k(),ke=V(de),a(p,"class","bi bi-mouse-fill"),a(i,"class","col-12 text-center"),a(w,"class","bi bi-mouse-fill"),a(E,"class","col-12 text-center"),a(s,"class","row"),a(se,"class","badge text-bg-dark"),a(O,"class","col-12 text-center"),a(ne,"class","row"),a(t,"class","card-body user-select-none bg-secondary rounded"),a(e,"id","selection-helper"),a(e,"class","card position-absolute shadow-sm border-cd-sm"),tt(e,"bottom","5%"),tt(e,"left","50%"),tt(e,"transform","translateX(-50%)")},m(ae,oe){D(ae,e,oe),r(e,t),r(t,s),r(s,i),r(i,o),r(i,f),r(i,d),r(d,p),r(d,u),r(d,m),r(i,h),r(i,A),r(s,y),r(s,E),r(E,N),r(E,b),r(E,v),r(v,w),r(v,S),r(v,G),r(E,U),r(E,J),r(t,q),r(t,ne),r(ne,O),r(O,I),r(O,le),r(O,se),r(se,ie),r(se,_e),r(se,Q),r(O,Z),r(O,ke)},p(ae,oe){oe&64&&fe(ie,ae[6]),oe&1&&B!==(B=(ae[0].door_count==3||ae[0].door_count==4||ae[0].door_count==5?1:ae[0].door_count)+"")&&fe(Q,B)},d(ae){ae&&L(e)}}}function Bh(n){let e,t,s,i,l,o,f,d,p,u,c=n[5]&&Nr(),m=n[0].camera.state&&Sr(n),h=n[0].delete.state&&Lr(n),g=n[3]&&Dr(),A=n[0].keypad&&Ir(),y=n[2]&&Mr(n),E=n[0].creating&&$r(n);return{c(){c&&c.c(),e=k(),m&&m.c(),t=k(),h&&h.c(),s=k(),g&&g.c(),i=k(),l=_("main"),A&&A.c(),o=k(),y&&y.c(),f=k(),E&&E.c(),a(l,"class","d-flex justify-content-center align-items-center overflow-hidden svelte-vrcv47"),tt(l,"width","100%"),tt(l,"height","100vh")},m(C,N){c&&c.m(C,N),D(C,e,N),m&&m.m(C,N),D(C,t,N),h&&h.m(C,N),D(C,s,N),g&&g.m(C,N),D(C,i,N),D(C,l,N),A&&A.m(l,null),r(l,o),y&&y.m(l,null),r(l,f),E&&E.m(l,null),d=!0,p||(u=[P(Rs,"dragend",n[11]),P(Rs,"message",n[12]),P(Rs,"keydown",n[13]),P(Rs,"mousedown",n[15])],p=!0)},p(C,[N]){C[5]?c?N&32&&ce(c,1):(c=Nr(),c.c(),ce(c,1),c.m(e.parentNode,e)):c&&(ft(),ge(c,1,1,()=>{c=null}),pt()),C[0].camera.state?m?(m.p(C,N),N&1&&ce(m,1)):(m=Sr(C),m.c(),ce(m,1),m.m(t.parentNode,t)):m&&(ft(),ge(m,1,1,()=>{m=null}),pt()),C[0].delete.state?h?(h.p(C,N),N&1&&ce(h,1)):(h=Lr(C),h.c(),ce(h,1),h.m(s.parentNode,s)):h&&(ft(),ge(h,1,1,()=>{h=null}),pt()),C[3]?g?N&8&&ce(g,1):(g=Dr(),g.c(),ce(g,1),g.m(i.parentNode,i)):g&&(ft(),ge(g,1,1,()=>{g=null}),pt()),C[0].keypad?A?(A.p(C,N),N&1&&ce(A,1)):(A=Ir(),A.c(),ce(A,1),A.m(l,o)):A&&(ft(),ge(A,1,1,()=>{A=null}),pt()),C[2]?y?(y.p(C,N),N&4&&ce(y,1)):(y=Mr(C),y.c(),ce(y,1),y.m(l,f)):y&&(ft(),ge(y,1,1,()=>{y=null}),pt()),C[0].creating?E?E.p(C,N):(E=$r(C),E.c(),E.m(l,null)):E&&(E.d(1),E=null)},i(C){d||(ce(c),ce(m),ce(h),ce(g),ce(A),ce(y),d=!0)},o(C){ge(c),ge(m),ge(h),ge(g),ge(A),ge(y),d=!1},d(C){c&&c.d(C),C&&L(e),m&&m.d(C),C&&L(t),h&&h.d(C),C&&L(s),g&&g.d(C),C&&L(i),C&&L(l),A&&A.d(),y&&y.d(),E&&E.d(),p=!1,Ee(u)}}}function Wh(n,e,t){let s,i,l,o,f,d,p,u,c,m,h,g,A,y,E,C;be(n,j,O=>t(0,u=O)),be(n,H,O=>t(18,c=O)),be(n,Me,O=>t(19,m=O)),be(n,kt,O=>t(9,h=O)),be(n,rs,O=>t(20,g=O)),be(n,$i,O=>t(21,A=O)),be(n,ps,O=>t(22,y=O)),be(n,is,O=>t(23,E=O)),be(n,ye,O=>t(24,C=O));function N(O){t(7,s=O.currentTarget.dataset.name)}function b(O){u.keypad!=!0&&(document.documentElement.style.setProperty("--pseudo-left",document.getElementById("create-doors").style.left),document.documentElement.style.setProperty("--pseudo-top",document.getElementById("create-doors").style.top),l.update("position",{left:document.getElementById("create-doors").style.left,top:document.getElementById("create-doors").style.top}))}function v(O){const X=u.door_count==3?2:0;for(let I=0;I=se.door_coords.x-X&&le.door_coords.x<=se.door_coords.x+X&&le.door_coords.y>=se.door_coords.y-X&&le.door_coords.y<=se.door_coords.y+X&&le.door_coords.z>=se.door_coords.z-X&&le.door_coords.z<=se.door_coords.z+X)return u.editing.selection==!0?(T(j,u.editing.state=!0,u),T(j,u.editing.door=I,u),T(j,u.editing.selection=!1,u),T(j,u.doors_selected=!0,u),T(j,u.doors_data=O,u),t(6,f=0),C.push({message:`${window.locales.main.alerts.door_selected[0]} "[ ${m[I].location_group} ] ${m[I].door_name}" ${window.locales.main.alerts.door_selected[1]}`,type:"alert-success"}),ye.set(C),y.play("_notification.ogg"),T(H,c.name=m[I].door_name,c),T(H,c.locationGroup=m[I].location_group,c),T(H,c.jobs=m[I].perms.job,c),T(H,c.identifier=m[I].perms.identifier,c),T(H,c.ace=m[I].perms.ace?m[I].perms.ace:[],c),T(H,c.discord=m[I].perms.discord?m[I].perms.discord:[],c),T(H,c.locked=m[I].default_state,c),T(H,c.lockpick=m[I].lockpickable,c),T(H,c.passcode=m[I].passcode,c),T(H,c.sound=m[I].door_sound,c),T(H,c.door_data=m[I].door_data,c),T(H,c.secret=m[I].secret,c),T(H,c.items=m[I].perms.items?m[I].perms.items:[],c),!0):(C.push({message:`${window.locales.main.alerts.door_exists}[ ${m[I].location_group} ] ${m[I].door_name}`,type:"alert-danger"}),ye.set(C),y.play("_notification.ogg"),!0)}return!1}let w;async function S(O){switch(O.data.action){case"play_sound":y.play(O.data.data);break;case"openui":T(Me,m=O.data.door_data,m),Me.set(m),O.data.door_perms.job&&(O.data.door_perms.job.job_name&&T(kt,h.job={job:O.data.door_perms.job.job_name,grade:O.data.door_perms.job.job_grade},h),O.data.door_perms.job.gang_name&&T(kt,h.gang={gang:O.data.door_perms.job.gang_name,grade:O.data.door_perms.job.gang_grade},h)),O.data.door_perms.identifier&&T(kt,h.identifier=O.data.door_perms.identifier,h),O.data.door_perms.ace&&T(kt,h.ace=O.data.door_perms.ace,h),O.data.door_perms.discord&&T(kt,h.discord=O.data.door_perms.discord,h),T(kt,h.permissions=O.data.admin_perms,h),O.data.admin_perms?t(7,s="create"):t(7,s="control"),T(j,u.doors_selected=!1,u),T(j,u.doors_data=null,u),T(j,u.status=!0,u),T(j,u.editing.status=!1,u),t(2,o=!0);break;case"closeui":t(2,o=!1);break;case"door_selected":t(6,f+=1);break;case"cancel_select_doors":t(6,f=0),T(j,u.status=!0,u),T(j,u.creating=!1,u),T(j,u.editing.state=!1,u),T(j,u.editing.door=-1,u),T(j,u.selection_icon=!1,u),U();break;case"select_doors":if(U(),T(j,u.selection_icon=!1,u),T(j,u.status=!0,u),T(j,u.creating=!1,u),T(j,u.editing.state=!1,u),T(j,u.editing.door=-1,u),w=O.data.data,v(w))return;if(u.editing.selection==!0){T(j,u.editing.selection=!1,u),C.push({message:window.locales.main.alerts.door_does_not_exist,type:"alert-warning"}),ye.set(C),y.play("_notification.ogg");return}T(j,u.doors_selected=!0,u),T(j,u.doors_data=w,u),t(6,f=0);for(let I=0;I{He.send("keypad_closed",{ok:!0}),T(j,u.keypad=!1,u),T(j,u.keypad_processing=!1,u),T(j,u.keypad_success=!1,u),T(j,u.keypad_error=!1,u)},1e3);break;case"close_camera":T(j,u.status=!0,u),T(j,u.camera.state=!1,u),T(j,u.camera.door_id=-1,u);break;case"start_data":He.send("start_data_received",{ok:!0}),T(Me,m=O.data.door_data,m),Me.set(m),T($i,A=O.data.load_sounds,A),T(is,E.length=0,E),O.data.door_access_perms.Framework&&E.push("Framework"),O.data.door_access_perms.Identifiers&&E.push("Identifiers"),O.data.door_access_perms.AcePerms&&E.push("AcePerms"),O.data.door_access_perms.Discord&&E.push("Discord"),O.data.door_access_perms.Items&&E.push("Items"),E.push("Passcode"),is.set(E),A.length>0&&y.batchAdd(A);for(let I=0;I{K=l.get(),t(1,J=K.position.left=="0px"&&K.position.top=="0px"?`--scale:${K.scale};`:`top: ${K.position.top}; left: ${K.position.left};--scale:${K.scale};`)});function q(){T(j,u.delete.state=!1,u),T(j,u.delete.door=-1,u),T(j,u.delete.name="",u),T(j,u.delete.type="door",u)}function ne(O){if(!(u.camera.state||u.delete.state||u.keypad||d))if(o)if(!document.getElementById("create-doors").contains(O.target))G({key:"Escape"});else return;else return}return n.$$.update=()=>{n.$$.dirty&1&&t(2,o=u.status),n.$$.dirty&1&&t(3,d=u.selection_icon)},t(7,s="create"),t(8,i="alert-success"),t(4,l=new fh("1.0.3","cd_doorlock",{scale:1,position:{left:"0px",top:"0px"}})),t(6,f=0),t(5,p=!1),[u,J,o,d,l,p,f,s,i,h,N,b,S,G,q,ne]}class Fh extends bt{constructor(e){super(),gt(this,e,Wh,Bh,rt,{})}}new Fh({target:document.getElementById("app")});
diff --git a/resources/cd_doorlock/html/css/vendor/bootstrap-custom-1.0.0.min.css b/resources/cd_doorlock/html/css/vendor/bootstrap-custom-1.0.0.min.css
new file mode 100644
index 000000000..17b785025
--- /dev/null
+++ b/resources/cd_doorlock/html/css/vendor/bootstrap-custom-1.0.0.min.css
@@ -0,0 +1,6 @@
+/*!
+ * Bootstrap v5.2.0 (https://getbootstrap.com/)
+ * Copyright 2011-2022 The Bootstrap Authors
+ * Copyright 2011-2022 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */dd,legend{margin-bottom:.5rem}progress,sub,sup{vertical-align:baseline}.img-fluid,.img-thumbnail{max-width:100%;height:auto}.g-0,.gy-0,.row{--bs-gutter-y:0}.btn-check,.form-floating>label{position:absolute;pointer-events:none}.btn,.btn-link{--bs-btn-font-weight:400}.carousel-indicators .active,.form-control:disabled,select:disabled{opacity:1}.dropdown-menu,.dropdown-menu-dark{--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd}.dropdown-header,.dropdown-item,.dropdown-toggle,.input-group-text,.navbar-brand{white-space:nowrap}.nav,.navbar-nav{--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;list-style:none}.btn-group-vertical,.navbar-nav{-webkit-box-orient:vertical;-webkit-box-direction:normal}.btn-group-vertical,.card,.navbar-nav{-webkit-box-direction:normal}.card,code{word-wrap:break-word}.breadcrumb,.carousel-indicators,.dropdown-menu,.nav,.navbar-nav,.pagination{list-style:none}.spinner-border,.spinner-grow{--bs-spinner-vertical-align:-0.125em;--bs-spinner-animation-speed:0.75s}.hstack,.vr,.vstack{align-self:stretch}.border-danger,.border-dark,.border-info,.border-light,.border-primary,.border-secondary,.border-success,.border-warning,.border-white{--bs-border-opacity:1}.border-1,:root{--bs-border-width:1px}.text-black,.text-black-50,.text-body,.text-danger,.text-dark,.text-info,.text-light,.text-muted,.text-primary,.text-reset,.text-secondary,.text-success,.text-warning,.text-white,.text-white-50{--bs-text-opacity:1}.bg-black,.bg-body,.bg-danger,.bg-dark,.bg-info,.bg-light,.bg-primary,.bg-secondary,.bg-success,.bg-transparent,.bg-warning,.bg-white{--bs-bg-opacity:1}:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#ff5d57;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#474747;--bs-gray-dark:#333333;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#474747;--bs-gray-700:#3d3d3d;--bs-gray-800:#333333;--bs-gray-900:#1f1f1f;--bs-primary:#0d6efd;--bs-secondary:#474747;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#ff5d57;--bs-light:#f8f9fa;--bs-dark:#1f1f1f;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:71,71,71;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:255,93,87;--bs-light-rgb:248,249,250;--bs-dark-rgb:31,31,31;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:31,31,31;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#1f1f1f;--bs-body-bg:#fff;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-link-color:#0d6efd;--bs-link-hover-color:#0a58ca;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd}*,::after,::before{-webkit-box-sizing:border-box;box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}.alert-heading,a>code,hr,pre code{color:inherit}hr{margin:1rem 0;border:0;border-top:1px solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}address,dl,ol,p,ul{margin-bottom:1rem}address,legend{line-height:inherit}.h1,h1{font-size:calc(1.375rem + 1.5vw)}.h2,h2{font-size:calc(1.325rem + .9vw)}.h3,h3{font-size:calc(1.3rem + .6vw)}.h4,h4{font-size:calc(1.275rem + .3vw)}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}dl,ol,p,ul{margin-top:0}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}.btn,.form-control-color:not(:disabled):not([readonly]),.form-control[type=file]:not(:disabled):not([readonly]),[role=button],[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled),summary{cursor:pointer}address{font-style:normal}ol,ul{padding-left:2rem}.accordion-header,.blockquote>:last-child,.card-text:last-child,ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.alert-link,dt{font-weight:700}dd{margin-left:0}blockquote,figure{margin:0 0 1rem}.blockquote,.blockquote-footer,pre{margin-bottom:1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--bs-link-color);text-decoration:underline}a:hover{color:var(--bs-link-hover-color)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}code,kbd,pre{font-size:.875em}pre{display:block;margin-top:0;overflow:auto}pre code{font-size:inherit;word-break:normal}code{color:var(--bs-code-color)}kbd{padding:.1875rem .375rem;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#ced4da;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border:0 solid;border-color:inherit}.figure,.list-inline-item,label,output{display:inline-block}.accordion-flush .accordion-item .accordion-button,.list-group-flush,.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header,button{border-radius:0}fieldset,iframe{border:0}.form-control-plaintext:focus,.form-range:focus,button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}select{word-wrap:normal}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0}legend{float:left;width:100%;padding:0;font-size:calc(1.275rem + .3vw)}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}.display-1,.display-2,.display-3,.display-4,.display-5,.display-6{font-weight:300;line-height:1.2}.form-control,.form-select{-webkit-appearance:none;font-weight:400}summary{display:list-item}.d-none,[hidden]{display:none!important}.input-group,.row{display:-webkit-box;display:-ms-flexbox}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw)}.display-2{font-size:calc(1.575rem + 3.9vw)}.display-3{font-size:calc(1.525rem + 3.3vw)}.display-4{font-size:calc(1.475rem + 2.7vw)}.display-5{font-size:calc(1.425rem + 2.1vw)}.display-6{font-size:calc(1.375rem + 1.5vw)}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{font-size:1.25rem}.blockquote-footer,.figure-caption{font-size:.875em;color:#474747}.blockquote-footer{margin-top:-1rem}.blockquote-footer::before{content:"\2014\00A0"}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid var(--bs-border-color);border-radius:.375rem}.figure-img{margin-bottom:.5rem;line-height:1}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}.col-sm{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%}.col-sm-auto,.row-cols-sm-auto>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-sm-12,.row-cols-sm-1>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.col-sm-6,.row-cols-sm-2>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.col-sm-4,.row-cols-sm-3>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:33.33333%}.col-sm-3,.row-cols-sm-4>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.row-cols-sm-5>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:20%}.col-sm-2,.row-cols-sm-6>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:16.66667%}.col-sm-1{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:8.33333%}.col-sm-5{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:41.66667%}.col-sm-7{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:58.33333%}.col-sm-8{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:66.66667%}.col-sm-9{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.col-sm-10{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:83.33333%}.col-sm-11{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:91.66667%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}.col-md{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%}.col-md-auto,.row-cols-md-auto>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-md-12,.row-cols-md-1>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.col-md-6,.row-cols-md-2>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.col-md-4,.row-cols-md-3>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:33.33333%}.col-md-3,.row-cols-md-4>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.row-cols-md-5>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:20%}.col-md-2,.row-cols-md-6>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:16.66667%}.col-md-1{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:8.33333%}.col-md-5{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:41.66667%}.col-md-7{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:58.33333%}.col-md-8{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:66.66667%}.col-md-9{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.col-md-10{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:83.33333%}.col-md-11{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:91.66667%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}.col-lg{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%}.col-lg-auto,.row-cols-lg-auto>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-lg-12,.row-cols-lg-1>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.col-lg-6,.row-cols-lg-2>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.col-lg-4,.row-cols-lg-3>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:33.33333%}.col-lg-3,.row-cols-lg-4>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.row-cols-lg-5>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:20%}.col-lg-2,.row-cols-lg-6>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:16.66667%}.col-lg-1{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:8.33333%}.col-lg-5{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:41.66667%}.col-lg-7{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:58.33333%}.col-lg-8{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:66.66667%}.col-lg-9{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.col-lg-10{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:83.33333%}.col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:91.66667%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.display-6,.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4,legend{font-size:1.5rem}.display-1{font-size:5rem}.display-2{font-size:4.5rem}.display-3{font-size:4rem}.display-4{font-size:3.5rem}.display-5{font-size:3rem}.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}.col-xl{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%}.col-xl-auto,.row-cols-xl-auto>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-xl-12,.row-cols-xl-1>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.col-xl-6,.row-cols-xl-2>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.col-xl-4,.row-cols-xl-3>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:33.33333%}.col-xl-3,.row-cols-xl-4>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.row-cols-xl-5>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:20%}.col-xl-2,.row-cols-xl-6>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:16.66667%}.col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:8.33333%}.col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:41.66667%}.col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:58.33333%}.col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:66.66667%}.col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:83.33333%}.col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:91.66667%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}.row{--bs-gutter-x:1.5rem;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{-ms-flex-negative:0;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%}.col-auto,.row-cols-auto>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-12,.row-cols-1>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.col-6,.row-cols-2>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.col-4,.row-cols-3>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:33.33333%}.col-3,.row-cols-4>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.row-cols-5>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:20%}.col-2,.row-cols-6>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:16.66667%}.col-1,.col-5{-webkit-box-flex:0}.col-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.33333%}.col-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.66667%}.col-7,.col-8{-webkit-box-flex:0}.col-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.33333%}.col-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.66667%}.col-10,.col-9{-webkit-box-flex:0}.col-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.col-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.33333%}.col-11{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:91.66667%}.offset-1{margin-left:8.33333%}.offset-2{margin-left:16.66667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333%}.offset-5{margin-left:41.66667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333%}.offset-8{margin-left:66.66667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333%}.offset-11{margin-left:91.66667%}.g-0,.gx-0{--bs-gutter-x:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}.table{--bs-table-color:var(--bs-body-color);--bs-table-bg:transparent;--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-body-color);--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:var(--bs-body-color);--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:var(--bs-body-color);--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:var(--bs-table-color);vertical-align:top;border-color:var(--bs-table-border-color)}.table-danger,.table-info,.table-light,.table-primary,.table-secondary,.table-success,.table-warning{--bs-table-color:#000;--bs-table-striped-color:#000;--bs-table-active-color:#000;--bs-table-hover-color:#000}.table>:not(caption)>*>*{padding:.5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;-webkit-box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg);box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:2px solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem}.form-floating>.form-control-plaintext~label,.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.list-group-flush>.list-group-item:last-child,.table-borderless>:not(caption)>*>*{border-bottom-width:0}.list-group-item+.list-group-item,.table-borderless>:not(:first-child){border-top-width:0}.table-striped-columns>:not(caption)>tr>:nth-child(2n),.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-danger,.table-dark,.table-info,.table-light,.table-primary,.table-secondary,.table-success,.table-warning{color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-bg:#cfe2ff;--bs-table-border-color:#bacbe6;--bs-table-striped-bg:#c5d7f2;--bs-table-active-bg:#bacbe6;--bs-table-hover-bg:#bfd1ec}.table-secondary{--bs-table-bg:#dadada;--bs-table-border-color:#c4c4c4;--bs-table-striped-bg:#cfcfcf;--bs-table-active-bg:#c4c4c4;--bs-table-hover-bg:#cacaca}.table-success{--bs-table-bg:#d1e7dd;--bs-table-border-color:#bcd0c7;--bs-table-striped-bg:#c7dbd2;--bs-table-active-bg:#bcd0c7;--bs-table-hover-bg:#c1d6cc}.table-info{--bs-table-bg:#cff4fc;--bs-table-border-color:#badce3;--bs-table-striped-bg:#c5e8ef;--bs-table-active-bg:#badce3;--bs-table-hover-bg:#bfe2e9}.table-warning{--bs-table-bg:#fff3cd;--bs-table-border-color:#e6dbb9;--bs-table-striped-bg:#f2e7c3;--bs-table-active-bg:#e6dbb9;--bs-table-hover-bg:#ece1be}.table-danger{--bs-table-bg:#ffdfdd;--bs-table-border-color:#e6c9c7;--bs-table-striped-bg:#f2d4d2;--bs-table-active-bg:#e6c9c7;--bs-table-hover-bg:#eccecc}.table-light{--bs-table-bg:#f8f9fa;--bs-table-border-color:#dfe0e1;--bs-table-striped-bg:#ecedee;--bs-table-active-bg:#dfe0e1;--bs-table-hover-bg:#e5e6e7}.table-dark{--bs-table-color:#fff;--bs-table-bg:#1f1f1f;--bs-table-border-color:#353535;--bs-table-striped-bg:#2a2a2a;--bs-table-striped-color:#fff;--bs-table-active-bg:#353535;--bs-table-active-color:#fff;--bs-table-hover-bg:#303030;--bs-table-hover-color:#fff}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}.collapsing,.dropdown-divider,.form-control[type=file]{overflow:hidden}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#ced4da}.form-control,.form-control:focus{color:#1f1f1f;background-color:#fff}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;background-clip:padding-box;border:1px solid #ced4da;-moz-appearance:none;appearance:none;border-radius:.375rem;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}.form-control:focus{border-color:#86b7fe;outline:0;-webkit-box-shadow:0 0 0 .25rem rgba(13,110,253,.25);box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control:disabled,.form-select:disabled{background-color:#e9ecef}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-webkit-input-placeholder{color:#474747;opacity:1}.form-control:-ms-input-placeholder{color:#474747;opacity:1}.form-control::-ms-input-placeholder{color:#474747;opacity:1}.form-control::placeholder{color:#474747;opacity:1}.form-control-plaintext,.form-select,.input-group-text{line-height:1.5;color:#1f1f1f}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#1f1f1f;background-color:#e9ecef;pointer-events:none;border:0 solid;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;border-color:inherit}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;background-color:transparent;border:solid transparent;border-width:1px 0}.form-check-input,.form-select{background-color:#fff;-moz-appearance:none;background-repeat:no-repeat}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:calc(1.5em + .75rem + 2px);padding:.375rem}.form-control-color::-moz-color-swatch{border:0!important;border-radius:.375rem}.form-control-color::-webkit-color-swatch{border-radius:.375rem}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + 2px)}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + 2px)}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23333333' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.375rem;-webkit-transition:border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;appearance:none}.form-check-input:focus,.form-select:focus{border-color:#86b7fe;outline:0;-webkit-box-shadow:0 0 0 .25rem rgba(13,110,253,.25);box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #1f1f1f}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:.25rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.5rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;appearance:none;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{-webkit-filter:brightness(90%);filter:brightness(90%)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;-webkit-filter:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;-webkit-transition:background-position .15s ease-in-out;transition:background-position .15s ease-in-out}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{clip:rect(0,0,0,0)}.carousel,.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center,.form-floating,.input-group,.input-group .btn{position:relative}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;-webkit-filter:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus::-webkit-slider-thumb{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25);box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{top:0;left:0;width:100%;height:100%;padding:1rem .75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:1px solid transparent;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transition:opacity .1s ease-in-out,-webkit-transform .1s ease-in-out;transition:opacity .1s ease-in-out,transform .1s ease-in-out,-webkit-transform .1s ease-in-out}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext::-webkit-input-placeholder,.form-floating>.form-control::-webkit-input-placeholder{color:transparent}.form-floating>.form-control-plaintext:-ms-input-placeholder,.form-floating>.form-control:-ms-input-placeholder{color:transparent}.form-floating>.form-control-plaintext::-ms-input-placeholder,.form-floating>.form-control::-ms-input-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;-webkit-transform:scale(.85) translateY(-.5rem) translateX(.15rem);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;-webkit-transform:scale(.85) translateY(-.5rem) translateX(.15rem);transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.input-group{display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.btn-toolbar,.input-group-text{display:-webkit-box;display:-ms-flexbox}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:3}.input-group .btn{z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;text-align:center;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.375rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}.alert-dismissible,.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.invalid-tooltip,.valid-tooltip{z-index:5;display:none;padding:.25rem .5rem;border-radius:.375rem;top:100%;position:absolute;max-width:100%}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select,.input-group>:not(:first-child):not(.dropdown-menu):not(.form-floating):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,.9)}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;-webkit-box-shadow:0 0 0 .25rem rgba(25,135,84,.25);box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23333333' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;-webkit-box-shadow:0 0 0 .25rem rgba(25,135,84,.25);box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{-webkit-box-shadow:0 0 0 .25rem rgba(25,135,84,.25);box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.invalid-feedback,.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:1}.input-group .form-control.is-valid:focus,.input-group .form-select.is-valid:focus,.was-validated .input-group .form-control:valid:focus,.was-validated .input-group .form-select:valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#ff5d57}.invalid-tooltip{margin-top:.1rem;font-size:.875rem;color:#000;background-color:rgba(255,93,87,.9)}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#ff5d57;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23ff5d57'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ff5d57' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#ff5d57;-webkit-box-shadow:0 0 0 .25rem rgba(255,93,87,.25);box-shadow:0 0 0 .25rem rgba(255,93,87,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#ff5d57}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23333333' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23ff5d57'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ff5d57' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#ff5d57;-webkit-box-shadow:0 0 0 .25rem rgba(255,93,87,.25);box-shadow:0 0 0 .25rem rgba(255,93,87,.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#ff5d57}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#ff5d57}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{-webkit-box-shadow:0 0 0 .25rem rgba(255,93,87,.25);box-shadow:0 0 0 .25rem rgba(255,93,87,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#ff5d57}.btn-check:focus+.btn,.btn:focus,.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:2}.input-group .form-control.is-invalid:focus,.input-group .form-select.is-invalid:focus,.was-validated .input-group .form-control:invalid:focus,.was-validated .input-group .form-select:invalid:focus{z-index:3}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-line-height:1.5;--bs-btn-color:#1f1f1f;--bs-btn-bg:transparent;--bs-btn-border-width:1px;--bs-btn-border-color:transparent;--bs-btn-border-radius:0.375rem;--bs-btn-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}.btn-primary,.btn-secondary,.btn-success{--bs-btn-color:#fff;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-hover-color:#fff;--bs-btn-active-color:#fff}.btn-check:focus+.btn,.btn:focus{outline:0;-webkit-box-shadow:var(--bs-btn-focus-box-shadow);box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:active+.btn,.btn-check:checked+.btn,.btn.active,.btn.show,.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:active+.btn:focus,.btn-check:checked+.btn:focus,.btn.active:focus,.btn.show:focus,.btn:active:focus{-webkit-box-shadow:var(--bs-btn-focus-box-shadow);box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.dropdown-toggle::after,.dropup .dropdown-toggle::after{vertical-align:.255em;content:"";border-right:.3em solid transparent;border-left:.3em solid transparent}.btn-primary{--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-bg:#474747;--bs-btn-border-color:#474747;--bs-btn-hover-bg:#3c3c3c;--bs-btn-hover-border-color:#393939;--bs-btn-focus-shadow-rgb:99,99,99;--bs-btn-active-bg:#393939;--bs-btn-active-border-color:#353535;--bs-btn-disabled-bg:#474747;--bs-btn-disabled-border-color:#474747}.btn-success{--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-danger,.btn-info,.btn-light,.btn-warning{--bs-btn-color:#000;--bs-btn-hover-color:#000;--bs-btn-active-color:#000;--bs-btn-disabled-color:#000;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125)}.btn-info{--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-bg:#ff5d57;--bs-btn-border-color:#ff5d57;--bs-btn-hover-bg:#ff7570;--bs-btn-hover-border-color:#ff6d68;--bs-btn-focus-shadow-rgb:217,79,74;--bs-btn-active-bg:#ff7d79;--bs-btn-active-border-color:#ff6d68;--bs-btn-disabled-bg:#ff5d57;--bs-btn-disabled-border-color:#ff5d57}.btn-light{--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#1f1f1f;--bs-btn-border-color:#1f1f1f;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#414141;--bs-btn-hover-border-color:#353535;--bs-btn-focus-shadow-rgb:65,65,65;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4c4c4c;--bs-btn-active-border-color:#353535;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#1f1f1f;--bs-btn-disabled-border-color:#1f1f1f}.btn-outline-primary,.btn-outline-secondary{--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-bg:transparent;--bs-gradient:none;--bs-btn-hover-color:#fff;--bs-btn-active-color:#fff}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-outline-secondary{--bs-btn-color:#474747;--bs-btn-border-color:#474747;--bs-btn-hover-bg:#474747;--bs-btn-hover-border-color:#474747;--bs-btn-focus-shadow-rgb:71,71,71;--bs-btn-active-bg:#474747;--bs-btn-active-border-color:#474747;--bs-btn-disabled-color:#474747;--bs-btn-disabled-border-color:#474747}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-danger,.btn-outline-info,.btn-outline-light,.btn-outline-warning{--bs-btn-hover-color:#000;--bs-btn-active-color:#000;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-bg:transparent;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-outline-danger{--bs-btn-color:#ff5d57;--bs-btn-border-color:#ff5d57;--bs-btn-hover-bg:#ff5d57;--bs-btn-hover-border-color:#ff5d57;--bs-btn-focus-shadow-rgb:255,93,87;--bs-btn-active-bg:#ff5d57;--bs-btn-active-border-color:#ff5d57;--bs-btn-disabled-color:#ff5d57;--bs-btn-disabled-border-color:#ff5d57}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-outline-dark{--bs-btn-color:#1f1f1f;--bs-btn-border-color:#1f1f1f;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#1f1f1f;--bs-btn-hover-border-color:#1f1f1f;--bs-btn-focus-shadow-rgb:31,31,31;--bs-btn-active-color:#fff;--bs-btn-active-bg:#1f1f1f;--bs-btn-active-border-color:#1f1f1f;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#1f1f1f;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#1f1f1f;--bs-gradient:none}.btn-link{--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#474747;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:none;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.dropdown-item,.nav-link,.navbar-brand,.navbar-toggler:focus,.navbar-toggler:hover,.page-link{text-decoration:none}.btn-link:focus{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:0.5rem}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:0.25rem}.fade{-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade:not(.show),.modal-backdrop.fade,.offcanvas-backdrop.fade,.toast.showing{opacity:0}.badge:empty,.collapse:not(.show),.navbar-expand .navbar-toggler,.navbar-expand .offcanvas .offcanvas-header,.popover-header:empty,.tab-content>.tab-pane,.toast:not(.show){display:none}.collapsing{height:0;-webkit-transition:height .35s;transition:height .35s}.collapsing.collapse-horizontal{width:0;height:auto;-webkit-transition:width .35s;transition:width .35s}.dropdown-toggle::after{display:inline-block;margin-left:.255em;border-top:.3em solid;border-bottom:0}.card>hr,.dropdown-toggle-split::after,.dropdown-toggle:empty::after,.dropend .dropdown-toggle-split::after,.dropend .dropdown-toggle:empty::after,.dropstart .dropdown-toggle:empty::after,.dropup .dropdown-toggle-split::after,.dropup .dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:#1f1f1f;--bs-dropdown-bg:#fff;--bs-dropdown-border-radius:0.375rem;--bs-dropdown-border-width:1px;--bs-dropdown-inner-border-radius:calc(0.375rem - 1px);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color:#1f1f1f;--bs-dropdown-link-hover-color:#1c1c1c;--bs-dropdown-link-hover-bg:#e9ecef;--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#474747;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;position:absolute;z-index:1000;display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;border-top:0;border-bottom:.3em solid}.dropend .dropdown-toggle::after,.dropstart .dropdown-toggle::before{border-top:.3em solid transparent;border-bottom:.3em solid transparent;content:""}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;border-right:0;border-left:.3em solid;vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{margin-left:.255em;vertical-align:.255em;content:"";display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;border-right:.3em solid;vertical-align:0}.card>hr,.dropstart .dropdown-toggle-split::before{margin-right:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.carousel-item-next,.carousel-item-prev,.carousel-item.active,.dropdown-menu.show,.tab-content>.active{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color)}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#333333;--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-link-hover-bg:rgba(255, 255, 255, 0.15);--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.nav,.navbar{display:-webkit-box;display:-ms-flexbox}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:.375rem}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child),.page-item:not(:first-child) .page-link{margin-left:-1px}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.card-img,.card-img-bottom,.card-img-top,.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:#474747;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link.disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:1px;--bs-nav-tabs-border-color:rgba(255, 255, 255, 0.1);--bs-nav-tabs-border-radius:0.375rem;--bs-nav-tabs-link-hover-border-color:#e9ecef #e9ecef rgba(255, 255, 255, 0.1);--bs-nav-tabs-link-active-color:white;--bs-nav-tabs-link-active-bg:#333333;--bs-nav-tabs-link-active-border-color:rgba(255, 255, 255, 0.1);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(var(--bs-nav-tabs-border-width) * -1);background:0 0;border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-pills .nav-link:disabled,.nav-tabs .nav-link.disabled,.nav-tabs .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(var(--bs-nav-tabs-border-width) * -1);border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius:0.375rem;--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{background:0 0;border:0;border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-fill .nav-item,.nav-fill>.nav-link{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(0, 0, 0, 0.55);--bs-navbar-hover-color:rgba(0, 0, 0, 0.7);--bs-navbar-disabled-color:rgba(0, 0, 0, 0.3);--bs-navbar-active-color:rgba(0, 0, 0, 0.9);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(0, 0, 0, 0.9);--bs-navbar-brand-hover-color:rgba(0, 0, 0, 0.9);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(0, 0, 0, 0.1);--bs-navbar-toggler-border-radius:0.375rem;--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:inherit;flex-wrap:inherit;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color)}.card-header-pills,.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.navbar-text,.navbar-toggler{color:var(--bs-navbar-color)}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.navbar-nav .nav-link.active,.navbar-nav .show>.nav-link,.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);-webkit-transition:var(--bs-navbar-toggler-transition);transition:var(--bs-navbar-toggler-transition)}.navbar-toggler:focus{outline:0;-webkit-box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width);box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}.navbar-expand{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.list-group-horizontal,.navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .offcanvas{position:static;z-index:auto;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;-webkit-transform:none!important;transform:none!important;-webkit-transition:none;transition:none}.navbar-expand .offcanvas .offcanvas-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;overflow-y:visible}.card,.progress-bar{-ms-flex-direction:column}.navbar-dark{--bs-navbar-color:rgba(255, 255, 255, 0.55);--bs-navbar-hover-color:rgba(255, 255, 255, 0.75);--bs-navbar-disabled-color:rgba(255, 255, 255, 0.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:rgba(255, 255, 255, 0.1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-border-width:1px;--bs-card-border-color:rgba(255, 255, 255, 0.1);--bs-card-border-radius:0.375rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(0.375rem - 1px);--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:#333333;--bs-card-cap-color:white;--bs-card-height: ;--bs-card-color:white;--bs-card-bg:#3d3d3d;--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:0.75rem;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;flex-direction:column;min-width:0;height:var(--bs-card-height);background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card-img,.card-img-top,.card>.list-group:first-child{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom,.card>.list-group:last-child{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0}.card>.list-group:last-child{border-bottom-width:0}.accordion-flush .accordion-item:first-child,.accordion-item:not(:first-of-type),.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-footer,.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg)}.card-title{margin-bottom:var(--bs-card-title-spacer-y)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{margin-bottom:0;border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.accordion-button,.alert,.btn .badge,.list-group-item,.page-link{position:relative}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}.accordion-button,.breadcrumb{display:-webkit-box;display:-ms-flexbox}.list-group,.progress-bar{-webkit-box-orient:vertical;-webkit-box-direction:normal}.accordion{--bs-accordion-color:#000;--bs-accordion-bg:#fff;--bs-accordion-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:1px;--bs-accordion-border-radius:0.375rem;--bs-accordion-inner-border-radius:calc(0.375rem - 1px);--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-body-color%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform 0.2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color:#86b7fe;--bs-accordion-btn-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:#0c63e4;--bs-accordion-active-bg:#e7f1ff}.accordion-button{display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;-webkit-transition:var(--bs-accordion-transition);transition:var(--bs-accordion-transition)}.badge,.progress-bar{text-align:center;white-space:nowrap}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);-webkit-box-shadow:inset 0 calc(var(--bs-accordion-border-width) * -1) 0 var(--bs-accordion-border-color);box-shadow:inset 0 calc(var(--bs-accordion-border-width) * -1) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);-webkit-transform:var(--bs-accordion-btn-icon-transform);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{-ms-flex-negative:0;flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);-webkit-transition:var(--bs-accordion-btn-icon-transition);transition:var(--bs-accordion-btn-icon-transition)}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;-webkit-box-shadow:var(--bs-accordion-btn-focus-box-shadow);box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type,.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:#474747;--bs-breadcrumb-item-padding-x:0.5rem;--bs-breadcrumb-item-active-color:#474747;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:#fff;--bs-pagination-border-width:1px;--bs-pagination-border-color:#dee2e6;--bs-pagination-border-radius:0.375rem;--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:#e9ecef;--bs-pagination-hover-border-color:#dee2e6;--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:#e9ecef;--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:#474747;--bs-pagination-disabled-bg:#fff;--bs-pagination-disabled-border-color:#dee2e6;display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:0}.page-link{display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,-webkit-box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out,-webkit-box-shadow .15s ease-in-out}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;-webkit-box-shadow:var(--bs-pagination-focus-box-shadow);box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item .page-link{border-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:0.5rem}.pagination-sm{--bs-pagination-padding-x:0.5rem;--bs-pagination-padding-y:0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius:0.25rem}.badge{--bs-badge-padding-x:0.65em;--bs-badge-padding-y:0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:0.375rem;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.progress,.progress-bar{display:-webkit-box;display:-ms-flexbox;overflow:hidden}.btn .badge{top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:1px solid var(--bs-alert-border-color);--bs-alert-border-radius:0.375rem;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color:#084298;--bs-alert-bg:#cfe2ff;--bs-alert-border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{--bs-alert-color:#2b2b2b;--bs-alert-bg:#dadada;--bs-alert-border-color:#c8c8c8}.alert-secondary .alert-link{color:#222}.alert-success{--bs-alert-color:#0f5132;--bs-alert-bg:#d1e7dd;--bs-alert-border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{--bs-alert-color:#055160;--bs-alert-bg:#cff4fc;--bs-alert-border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{--bs-alert-color:#664d03;--bs-alert-bg:#fff3cd;--bs-alert-border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{--bs-alert-color:#993834;--bs-alert-bg:#ffdfdd;--bs-alert-border-color:#ffcecd}.alert-danger .alert-link{color:#7a2d2a}.alert-light{--bs-alert-color:#636464;--bs-alert-bg:#fefefe;--bs-alert-border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{--bs-alert-color:#131313;--bs-alert-bg:#d2d2d2;--bs-alert-border-color:#bcbcbc}.alert-dark .alert-link{color:#0f0f0f}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{--bs-progress-height:1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg:#e9ecef;--bs-progress-border-radius:0.375rem;--bs-progress-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width 0.6s ease;display:flex;height:var(--bs-progress-height);font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:var(--bs-progress-bar-color);background-color:var(--bs-progress-bar-bg);-webkit-transition:var(--bs-progress-bar-transition);transition:var(--bs-progress-bar-transition)}.popover,.tooltip{font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;word-wrap:break-word;text-decoration:none}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}.list-group{--bs-list-group-color:#1f1f1f;--bs-list-group-bg:#fff;--bs-list-group-border-color:rgba(0, 0, 0, 0.125);--bs-list-group-border-width:1px;--bs-list-group-border-radius:0.375rem;--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-action-color:#3d3d3d;--bs-list-group-action-hover-color:#3d3d3d;--bs-list-group-action-hover-bg:#f8f9fa;--bs-list-group-action-active-color:#1f1f1f;--bs-list-group-action-active-bg:#e9ecef;--bs-list-group-disabled-color:#474747;--bs-list-group-disabled-bg:#fff;--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.modal-dialog-centered,.toast-header{display:-webkit-box;display:-ms-flexbox}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item.active{margin-top:calc(var(--bs-list-group-border-width) * -1);border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(var(--bs-list-group-border-width) * -1);border-left-width:var(--bs-list-group-border-width)}.modal-content,.offcanvas{-webkit-box-orient:vertical;outline:0;-webkit-box-direction:normal}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#2b2b2b;background-color:#dadada}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#2b2b2b;background-color:#c4c4c4}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#2b2b2b;border-color:#2b2b2b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#993834;background-color:#ffdfdd}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#993834;background-color:#e6c9c7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#993834;border-color:#993834}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#131313;background-color:#d2d2d2}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#131313;background-color:#bdbdbd}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#131313;border-color:#131313}.btn-close{-webkit-box-sizing:content-box;box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#000;background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}.modal-content,.popover,.toast,.toast-header{background-clip:padding-box}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;-webkit-box-shadow:0 0 0 .25rem rgba(13,110,253,.25);box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;opacity:.25}.btn-close-white{-webkit-filter:invert(1) grayscale(100%) brightness(200%);filter:invert(1) grayscale(100%) brightness(200%)}.toast{--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(255, 255, 255, 0.85);--bs-toast-border-width:1px;--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:0.375rem;--bs-toast-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-toast-header-color:#474747;--bs-toast-header-bg:rgba(255, 255, 255, 0.85);--bs-toast-header-border-color:rgba(0, 0, 0, 0.05);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);-webkit-box-shadow:var(--bs-toast-box-shadow);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast-container{position:absolute;z-index:1090;width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(var(--bs-toast-padding-x) * -.5);margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:0.5rem;--bs-modal-color: ;--bs-modal-bg:#fff;--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:1px;--bs-modal-border-radius:0.5rem;--bs-modal-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius:calc(0.5rem - 1px);--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:1px;--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-50px);transform:translate(0,-50px)}.modal.show .modal-dialog,.offcanvas.show:not(.hiding),.offcanvas.showing{-webkit-transform:none;transform:none}.modal.modal-static .modal-dialog{-webkit-transform:scale(1.02);transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body,.modal-fullscreen .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content,.modal-header{display:-webkit-box;display:-ms-flexbox}.modal-content{position:relative;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius)}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;-ms-flex-negative:0;flex-shrink:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(var(--bs-modal-header-padding-y) * -.5) calc(var(--bs-modal-header-padding-x) * -.5) calc(var(--bs-modal-header-padding-y) * -.5) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:#fff;--bs-tooltip-bg:#000;--bs-tooltip-border-radius:0.375rem;--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;z-index:var(--bs-tooltip-zindex);display:block;padding:var(--bs-tooltip-arrow-height);margin:var(--bs-tooltip-margin);line-height:1.5;text-align:left;text-align:start;font-size:var(--bs-tooltip-font-size);opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:0.875rem;--bs-popover-bg:#fff;--bs-popover-border-width:1px;--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:0.5rem;--bs-popover-inner-border-radius:calc(0.5rem - 1px);--bs-popover-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color:var(--bs-heading-color);--bs-popover-header-bg:#f0f0f0;--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:#1f1f1f;--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:0.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);line-height:1.5;text-align:left;text-align:start;font-size:var(--bs-popover-font-size);background-color:var(--bs-popover-bg);border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border:0 solid transparent}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc((var(--bs-popover-arrow-height) * -1) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-top>.popover-arrow::before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc((var(--bs-popover-arrow-height) * -1) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-end>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc((var(--bs-popover-arrow-height) * -1) - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::before{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(var(--bs-popover-arrow-width) * -.5);content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc((var(--bs-popover-arrow-height) * -1) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-start>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel.pointer-event{-ms-touch-action:pan-y;touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after,.clearfix::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){-webkit-transform:translateX(100%);transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){-webkit-transform:translateX(-100%);transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transform:none;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;-webkit-transition:opacity 0s .6s;transition:opacity 0s .6s}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;-webkit-transition:opacity .15s;transition:opacity .15s}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-indicators,.offcanvas{display:-webkit-box;display:-ms-flexbox}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;-webkit-transition:opacity .6s;transition:opacity .6s}.offcanvas.offcanvas-bottom,.offcanvas.offcanvas-top{right:0;height:var(--bs-offcanvas-height);max-height:100%}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.offcanvas-body,.offcanvas-header{padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{-webkit-filter:invert(1) grayscale(100);filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;-webkit-animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name);animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@-webkit-keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spinner-border{to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-border-width:0.25em;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:0.2em}@-webkit-keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}@keyframes spinner-grow{0%{-webkit-transform:scale(0);transform:scale(0)}50%{opacity:1;-webkit-transform:none;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color: ;--bs-offcanvas-bg:#fff;--bs-offcanvas-border-width:1px;--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075)}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}.offcanvas-sm{position:fixed;bottom:0;z-index:1045;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;-webkit-transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.offcanvas-sm.offcanvas-bottom,.offcanvas-sm.offcanvas-top{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%}.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(-100%);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(100%);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(-100%);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(100%);transform:translateY(100%)}.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{-webkit-transform:none;transform:none}.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{-webkit-transition:none;transition:none}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}.offcanvas-md{position:fixed;bottom:0;z-index:1045;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;-webkit-transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.offcanvas-md.offcanvas-bottom,.offcanvas-md.offcanvas-top{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%}.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(-100%);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(100%);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(-100%);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(100%);transform:translateY(100%)}.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{-webkit-transform:none;transform:none}.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{-webkit-transition:none;transition:none}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}.offcanvas-lg{position:fixed;bottom:0;z-index:1045;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;-webkit-transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.offcanvas-lg.offcanvas-bottom,.offcanvas-lg.offcanvas-top{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%}.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(-100%);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(100%);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(-100%);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(100%);transform:translateY(100%)}.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{-webkit-transform:none;transform:none}.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{-webkit-transition:none;transition:none}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}.offcanvas-xl{position:fixed;bottom:0;z-index:1045;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;-webkit-transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.offcanvas-xl.offcanvas-bottom,.offcanvas-xl.offcanvas-top{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%}.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(-100%);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(100%);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(-100%);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(100%);transform:translateY(100%)}.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{-webkit-transform:none;transform:none}.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{-webkit-transition:none;transition:none}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}.offcanvas-xxl{position:fixed;bottom:0;z-index:1045;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;-webkit-transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.offcanvas-xxl.offcanvas-bottom,.offcanvas-xxl.offcanvas-top{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%}.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(-100%);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(100%);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(-100%);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(100%);transform:translateY(100%)}.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{-webkit-transform:none;transform:none}.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{-webkit-transition:none;transition:none}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;-ms-flex-direction:column;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;-webkit-transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.hstack,.offcanvas-header{display:-webkit-box;display:-ms-flexbox}@media (prefers-reduced-motion:reduce){.form-control{-webkit-transition:none;transition:none}.form-control::file-selector-button{-webkit-transition:none;transition:none}.form-select,.form-switch .form-check-input{-webkit-transition:none;transition:none}.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}.form-range::-moz-range-thumb{-webkit-transition:none;transition:none}.accordion-button,.accordion-button::after,.btn,.carousel-control-next,.carousel-control-prev,.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start,.carousel-indicators [data-bs-target],.carousel-item,.collapsing,.collapsing.collapse-horizontal,.fade,.form-floating>label,.modal.fade .modal-dialog,.nav-link,.navbar-toggler,.offcanvas,.page-link,.progress-bar{-webkit-transition:none;transition:none}.progress-bar-animated{-webkit-animation:none;animation:none}.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(-100%);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateX(100%);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;left:0;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(-100%);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{left:0;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);-webkit-transform:translateY(100%);transform:translateY(100%)}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin-top:calc(var(--bs-offcanvas-padding-y) * -.5);margin-right:calc(var(--bs-offcanvas-padding-x) * -.5);margin-bottom:calc(var(--bs-offcanvas-padding-y) * -.5)}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{-webkit-animation:2s ease-in-out infinite placeholder-glow;animation:2s ease-in-out infinite placeholder-glow}@-webkit-keyframes placeholder-glow{50%{opacity:.2}}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;-webkit-animation:2s linear infinite placeholder-wave;animation:2s linear infinite placeholder-wave}@-webkit-keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.text-bg-primary{color:#fff!important;background-color:RGBA(13,110,253,var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(71,71,71,var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(25,135,84,var(--bs-bg-opacity,1))!important}.text-bg-danger,.text-bg-info,.text-bg-light,.text-bg-warning{color:#000!important}.text-bg-info{background-color:RGBA(13,202,240,var(--bs-bg-opacity,1))!important}.text-bg-warning{background-color:RGBA(255,193,7,var(--bs-bg-opacity,1))!important}.text-bg-danger{background-color:RGBA(255,93,87,var(--bs-bg-opacity,1))!important}.text-bg-light{background-color:RGBA(248,249,250,var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(31,31,31,var(--bs-bg-opacity,1))!important}.link-primary{color:#0d6efd!important}.link-primary:focus,.link-primary:hover{color:#0a58ca!important}.link-secondary{color:#474747!important}.link-secondary:focus,.link-secondary:hover{color:#393939!important}.link-success{color:#198754!important}.link-success:focus,.link-success:hover{color:#146c43!important}.link-info{color:#0dcaf0!important}.link-info:focus,.link-info:hover{color:#3dd5f3!important}.link-warning{color:#ffc107!important}.link-warning:focus,.link-warning:hover{color:#ffcd39!important}.link-danger{color:#ff5d57!important}.link-danger:focus,.link-danger:hover{color:#ff7d79!important}.link-light{color:#f8f9fa!important}.link-light:focus,.link-light:hover{color:#f9fafb!important}.link-dark{color:#1f1f1f!important}.link-dark:focus,.link-dark:hover{color:#191919!important}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.fixed-bottom,.fixed-top{position:fixed;z-index:1030;right:0;left:0}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:calc(3 / 4 * 100%)}.ratio-16x9{--bs-aspect-ratio:calc(9 / 16 * 100%)}.ratio-21x9{--bs-aspect-ratio:calc(9 / 21 * 100%)}.fixed-top{top:0}.fixed-bottom{bottom:0}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}.hstack{display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-item-align:stretch}.vstack{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-item-align:stretch}.flex-column,.flex-row{-webkit-box-direction:normal!important}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;-ms-flex-item-align:stretch;-ms-grid-row-align:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:-ms-grid!important;display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}.shadow{-webkit-box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important;box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{-webkit-box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important;box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{-webkit-box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important;box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{-webkit-box-shadow:none!important;box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{-webkit-transform:translate(-50%,-50%)!important;transform:translate(-50%,-50%)!important}.translate-middle-x{-webkit-transform:translateX(-50%)!important;transform:translateX(-50%)!important}.translate-middle-y{-webkit-transform:translateY(-50%)!important;transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-white{border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-2{--bs-border-width:2px}.border-3{--bs-border-width:3px}.border-4{--bs-border-width:4px}.border-5{--bs-border-width:5px}.border-opacity-10{--bs-border-opacity:0.1}.border-opacity-25{--bs-border-opacity:0.25}.border-opacity-50{--bs-border-opacity:0.5}.border-opacity-75{--bs-border-opacity:0.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-column-reverse,.flex-row-reverse{-webkit-box-direction:reverse!important}.flex-row-reverse{-webkit-box-orient:horizontal!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-webkit-box-orient:vertical!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.justify-content-evenly{-webkit-box-pack:space-evenly!important;-ms-flex-pack:space-evenly!important;justify-content:space-evenly!important}.align-items-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}.order-first{-webkit-box-ordinal-group:0!important;-ms-flex-order:-1!important;order:-1!important}.order-0{-webkit-box-ordinal-group:1!important;-ms-flex-order:0!important;order:0!important}.order-1{-webkit-box-ordinal-group:2!important;-ms-flex-order:1!important;order:1!important}.order-2{-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important}.order-3{-webkit-box-ordinal-group:4!important;-ms-flex-order:3!important;order:3!important}.order-4{-webkit-box-ordinal-group:5!important;-ms-flex-order:4!important;order:4!important}.order-5{-webkit-box-ordinal-group:6!important;-ms-flex-order:5!important;order:5!important}.order-last{-webkit-box-ordinal-group:7!important;-ms-flex-order:6!important;order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-semibold{font-weight:600!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{color:#ced4da!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-reset{color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.bg-primary{background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{background-color:transparent!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;-ms-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;-ms-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded,.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-2xl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-end,.rounded-top{border-top-right-radius:var(--bs-border-radius)!important}.rounded-bottom,.rounded-end{border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-bottom,.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-start,.rounded-top{border-top-left-radius:var(--bs-border-radius)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}.navbar-expand-sm{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.list-group-horizontal-sm,.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler,.navbar-expand-sm .offcanvas .offcanvas-header,.offcanvas-sm .offcanvas-header{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;-webkit-transform:none!important;transform:none!important;-webkit-transition:none;transition:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;overflow-y:visible}.card-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(var(--bs-list-group-border-width) * -1);border-left-width:var(--bs-list-group-border-width)}.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width:300px}.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}.flex-sm-column,.flex-sm-row{-webkit-box-direction:normal!important}.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:-ms-grid!important;display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.justify-content-sm-evenly{-webkit-box-pack:space-evenly!important;-ms-flex-pack:space-evenly!important;justify-content:space-evenly!important}.align-items-sm-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}.order-sm-first{-webkit-box-ordinal-group:0!important;-ms-flex-order:-1!important;order:-1!important}.order-sm-0{-webkit-box-ordinal-group:1!important;-ms-flex-order:0!important;order:0!important}.order-sm-1{-webkit-box-ordinal-group:2!important;-ms-flex-order:1!important;order:1!important}.order-sm-2{-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important}.order-sm-3{-webkit-box-ordinal-group:4!important;-ms-flex-order:3!important;order:3!important}.order-sm-4{-webkit-box-ordinal-group:5!important;-ms-flex-order:4!important;order:4!important}.order-sm-5{-webkit-box-ordinal-group:6!important;-ms-flex-order:5!important;order:5!important}.order-sm-last{-webkit-box-ordinal-group:7!important;-ms-flex-order:6!important;order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}.navbar-expand-md{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.list-group-horizontal-md,.navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler,.navbar-expand-md .offcanvas .offcanvas-header,.offcanvas-md .offcanvas-header{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;-webkit-transform:none!important;transform:none!important;-webkit-transition:none;transition:none}.navbar-expand-md .offcanvas .offcanvas-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;overflow-y:visible}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(var(--bs-list-group-border-width) * -1);border-left-width:var(--bs-list-group-border-width)}.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}.flex-md-column,.flex-md-row{-webkit-box-direction:normal!important}.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:-ms-grid!important;display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.justify-content-md-evenly{-webkit-box-pack:space-evenly!important;-ms-flex-pack:space-evenly!important;justify-content:space-evenly!important}.align-items-md-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}.order-md-first{-webkit-box-ordinal-group:0!important;-ms-flex-order:-1!important;order:-1!important}.order-md-0{-webkit-box-ordinal-group:1!important;-ms-flex-order:0!important;order:0!important}.order-md-1{-webkit-box-ordinal-group:2!important;-ms-flex-order:1!important;order:1!important}.order-md-2{-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important}.order-md-3{-webkit-box-ordinal-group:4!important;-ms-flex-order:3!important;order:3!important}.order-md-4{-webkit-box-ordinal-group:5!important;-ms-flex-order:4!important;order:4!important}.order-md-5{-webkit-box-ordinal-group:6!important;-ms-flex-order:5!important;order:5!important}.order-md-last{-webkit-box-ordinal-group:7!important;-ms-flex-order:6!important;order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}.navbar-expand-lg{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.list-group-horizontal-lg,.navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler,.navbar-expand-lg .offcanvas .offcanvas-header,.offcanvas-lg .offcanvas-header{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;-webkit-transform:none!important;transform:none!important;-webkit-transition:none;transition:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;overflow-y:visible}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(var(--bs-list-group-border-width) * -1);border-left-width:var(--bs-list-group-border-width)}.modal-lg,.modal-xl{--bs-modal-width:800px}.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}.flex-lg-column,.flex-lg-row{-webkit-box-direction:normal!important}.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:-ms-grid!important;display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.justify-content-lg-evenly{-webkit-box-pack:space-evenly!important;-ms-flex-pack:space-evenly!important;justify-content:space-evenly!important}.align-items-lg-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}.order-lg-first{-webkit-box-ordinal-group:0!important;-ms-flex-order:-1!important;order:-1!important}.order-lg-0{-webkit-box-ordinal-group:1!important;-ms-flex-order:0!important;order:0!important}.order-lg-1{-webkit-box-ordinal-group:2!important;-ms-flex-order:1!important;order:1!important}.order-lg-2{-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important}.order-lg-3{-webkit-box-ordinal-group:4!important;-ms-flex-order:3!important;order:3!important}.order-lg-4{-webkit-box-ordinal-group:5!important;-ms-flex-order:4!important;order:4!important}.order-lg-5{-webkit-box-ordinal-group:6!important;-ms-flex-order:5!important;order:5!important}.order-lg-last{-webkit-box-ordinal-group:7!important;-ms-flex-order:6!important;order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}.col-xxl{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%}.col-xxl-auto,.row-cols-xxl-auto>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.col-xxl-12,.row-cols-xxl-1>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.col-xxl-6,.row-cols-xxl-2>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.col-xxl-4,.row-cols-xxl-3>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:33.33333%}.col-xxl-3,.row-cols-xxl-4>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.row-cols-xxl-5>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:20%}.col-xxl-2,.row-cols-xxl-6>*{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:16.66667%}.col-xxl-1{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:8.33333%}.col-xxl-5{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:41.66667%}.col-xxl-7{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:58.33333%}.col-xxl-8{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:66.66667%}.col-xxl-9{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.col-xxl-10{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:83.33333%}.col-xxl-11{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:91.66667%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333%}.offset-xxl-2{margin-left:16.66667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333%}.offset-xxl-5{margin-left:41.66667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333%}.offset-xxl-8{margin-left:66.66667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333%}.offset-xxl-11{margin-left:91.66667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}.navbar-expand-xxl{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.list-group-horizontal-xxl,.navbar-expand-xxl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xxl .navbar-toggler,.navbar-expand-xxl .offcanvas .offcanvas-header,.offcanvas-xxl .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;-webkit-transform:none!important;transform:none!important;-webkit-transition:none;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;overflow-y:visible}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(var(--bs-list-group-border-width) * -1);border-left-width:var(--bs-list-group-border-width)}.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}.flex-xxl-column,.flex-xxl-row{-webkit-box-direction:normal!important}.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:-ms-grid!important;display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-xxl-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xxl-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xxl-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xxl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xxl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xxl-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-xxl-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-xxl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xxl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.flex-xxl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xxl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xxl-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xxl-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xxl-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xxl-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xxl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.justify-content-xxl-evenly{-webkit-box-pack:space-evenly!important;-ms-flex-pack:space-evenly!important;justify-content:space-evenly!important}.align-items-xxl-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xxl-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xxl-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xxl-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xxl-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xxl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xxl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xxl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xxl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xxl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xxl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xxl-auto{-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-xxl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xxl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xxl-center{-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-xxl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xxl-stretch{-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}.order-xxl-first{-webkit-box-ordinal-group:0!important;-ms-flex-order:-1!important;order:-1!important}.order-xxl-0{-webkit-box-ordinal-group:1!important;-ms-flex-order:0!important;order:0!important}.order-xxl-1{-webkit-box-ordinal-group:2!important;-ms-flex-order:1!important;order:1!important}.order-xxl-2{-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important}.order-xxl-3{-webkit-box-ordinal-group:4!important;-ms-flex-order:3!important;order:3!important}.order-xxl-4{-webkit-box-ordinal-group:5!important;-ms-flex-order:4!important;order:4!important}.order-xxl-5{-webkit-box-ordinal-group:6!important;-ms-flex-order:5!important;order:5!important}.order-xxl-last{-webkit-box-ordinal-group:7!important;-ms-flex-order:6!important;order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}.navbar-expand-xl{-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.list-group-horizontal-xl,.navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler,.navbar-expand-xl .offcanvas .offcanvas-header,.offcanvas-xl .offcanvas-header{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;-webkit-transform:none!important;transform:none!important;-webkit-transition:none;transition:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;overflow-y:visible}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(var(--bs-list-group-border-width) * -1);border-left-width:var(--bs-list-group-border-width)}.modal-xl{--bs-modal-width:1140px}.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-body{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}.flex-xl-column,.flex-xl-row{-webkit-box-direction:normal!important}.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:-ms-grid!important;display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{-webkit-box-flex:1!important;-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-row{-webkit-box-orient:horizontal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-webkit-box-orient:vertical!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-grow-0{-webkit-box-flex:0!important;-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-webkit-box-flex:1!important;-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.justify-content-xl-evenly{-webkit-box-pack:space-evenly!important;-ms-flex-pack:space-evenly!important;justify-content:space-evenly!important}.align-items-xl-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;-ms-grid-row-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;-ms-grid-row-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;-ms-grid-row-align:stretch!important;align-self:stretch!important}.order-xl-first{-webkit-box-ordinal-group:0!important;-ms-flex-order:-1!important;order:-1!important}.order-xl-0{-webkit-box-ordinal-group:1!important;-ms-flex-order:0!important;order:0!important}.order-xl-1{-webkit-box-ordinal-group:2!important;-ms-flex-order:1!important;order:1!important}.order-xl-2{-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important}.order-xl-3{-webkit-box-ordinal-group:4!important;-ms-flex-order:3!important;order:3!important}.order-xl-4{-webkit-box-ordinal-group:5!important;-ms-flex-order:4!important;order:4!important}.order-xl-5{-webkit-box-ordinal-group:6!important;-ms-flex-order:5!important;order:5!important}.order-xl-last{-webkit-box-ordinal-group:7!important;-ms-flex-order:6!important;order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:-ms-grid!important;display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}.d-print-none{display:none!important}}
\ No newline at end of file
diff --git a/resources/cd_doorlock/html/css/vendor/bootstrap.min.css b/resources/cd_doorlock/html/css/vendor/bootstrap.min.css
new file mode 100644
index 000000000..2ab085029
--- /dev/null
+++ b/resources/cd_doorlock/html/css/vendor/bootstrap.min.css
@@ -0,0 +1,7 @@
+@charset "UTF-8";/*!
+ * Bootstrap v5.2.0 (https://getbootstrap.com/)
+ * Copyright 2011-2022 The Bootstrap Authors
+ * Copyright 2011-2022 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ */:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-bg:#fff;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-link-color:#0d6efd;--bs-link-hover-color:#0a58ca;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd}*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}.h1,h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){.h1,h1{font-size:2.5rem}}.h2,h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){.h2,h2{font-size:2rem}}.h3,h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){.h3,h3{font-size:1.75rem}}.h4,h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){.h4,h4{font-size:1.5rem}}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}.small,small{font-size:.875em}.mark,mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--bs-link-color);text-decoration:underline}a:hover{color:var(--bs-link-hover-color)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none!important}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media (min-width:1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid var(--bs-border-color);border-radius:.375rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:.875em;color:#6c757d}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.table{--bs-table-color:var(--bs-body-color);--bs-table-bg:transparent;--bs-table-border-color:var(--bs-border-color);--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--bs-body-color);--bs-table-striped-bg:rgba(0, 0, 0, 0.05);--bs-table-active-color:var(--bs-body-color);--bs-table-active-bg:rgba(0, 0, 0, 0.1);--bs-table-hover-color:var(--bs-body-color);--bs-table-hover-bg:rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;color:var(--bs-table-color);vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-accent-bg)}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:2px solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-accent-bg:var(--bs-table-striped-bg);color:var(--bs-table-striped-color)}.table-active{--bs-table-accent-bg:var(--bs-table-active-bg);color:var(--bs-table-active-color)}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg:var(--bs-table-hover-bg);color:var(--bs-table-hover-color)}.table-primary{--bs-table-color:#000;--bs-table-bg:#cfe2ff;--bs-table-border-color:#bacbe6;--bs-table-striped-bg:#c5d7f2;--bs-table-striped-color:#000;--bs-table-active-bg:#bacbe6;--bs-table-active-color:#000;--bs-table-hover-bg:#bfd1ec;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color:#000;--bs-table-bg:#e2e3e5;--bs-table-border-color:#cbccce;--bs-table-striped-bg:#d7d8da;--bs-table-striped-color:#000;--bs-table-active-bg:#cbccce;--bs-table-active-color:#000;--bs-table-hover-bg:#d1d2d4;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color:#000;--bs-table-bg:#d1e7dd;--bs-table-border-color:#bcd0c7;--bs-table-striped-bg:#c7dbd2;--bs-table-striped-color:#000;--bs-table-active-bg:#bcd0c7;--bs-table-active-color:#000;--bs-table-hover-bg:#c1d6cc;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color:#000;--bs-table-bg:#cff4fc;--bs-table-border-color:#badce3;--bs-table-striped-bg:#c5e8ef;--bs-table-striped-color:#000;--bs-table-active-bg:#badce3;--bs-table-active-color:#000;--bs-table-hover-bg:#bfe2e9;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color:#000;--bs-table-bg:#fff3cd;--bs-table-border-color:#e6dbb9;--bs-table-striped-bg:#f2e7c3;--bs-table-striped-color:#000;--bs-table-active-bg:#e6dbb9;--bs-table-active-color:#000;--bs-table-hover-bg:#ece1be;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color:#000;--bs-table-bg:#f8d7da;--bs-table-border-color:#dfc2c4;--bs-table-striped-bg:#eccccf;--bs-table-striped-color:#000;--bs-table-active-bg:#dfc2c4;--bs-table-active-color:#000;--bs-table-hover-bg:#e5c7ca;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color:#000;--bs-table-bg:#f8f9fa;--bs-table-border-color:#dfe0e1;--bs-table-striped-bg:#ecedee;--bs-table-striped-color:#000;--bs-table-active-bg:#dfe0e1;--bs-table-active-color:#000;--bs-table-hover-bg:#e5e6e7;--bs-table-hover-color:#000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color:#fff;--bs-table-bg:#212529;--bs-table-border-color:#373b3e;--bs-table-striped-bg:#2c3034;--bs-table-striped-color:#fff;--bs-table-active-bg:#373b3e;--bs-table-active-color:#fff;--bs-table-hover-bg:#323539;--bs-table-hover-color:#fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media (max-width:1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem}.form-text{margin-top:.25rem;font-size:.875em;color:#6c757d}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#212529;background-color:#fff;border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{height:1.5em}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled{background-color:#e9ecef;opacity:1}.form-control::-webkit-file-upload-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;-webkit-transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;-webkit-margin-end:.75rem;margin-inline-end:.75rem;color:#212529;background-color:#e9ecef;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-control::-webkit-file-upload-button{-webkit-transition:none;transition:none}.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button{background-color:#dde0e3}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#dde0e3}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}.form-control-sm::-webkit-file-upload-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-.25rem -.5rem;-webkit-margin-end:.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + 2px);padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.form-control-lg::-webkit-file-upload-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-.5rem -1rem;-webkit-margin-end:1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + .75rem + 2px)}textarea.form-control-sm{min-height:calc(1.5em + .5rem + 2px)}textarea.form-control-lg{min-height:calc(1.5em + 1rem + 2px)}.form-control-color{width:3rem;height:calc(1.5em + .75rem + 2px);padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0!important;border-radius:.375rem}.form-control-color::-webkit-color-swatch{border-radius:.375rem}.form-control-color.form-control-sm{height:calc(1.5em + .5rem + 2px)}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + 2px)}.form-select{display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;-moz-padding-start:calc(0.75rem - 3px);font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #ced4da;border-radius:.375rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-select{transition:none}}.form-select:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:transparent;text-shadow:0 0 0 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:.875rem;border-radius:.25rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.5rem}.form-check{display:block;min-height:1.5rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{width:1em;height:1em;margin-top:.25em;vertical-align:top;background-color:#fff;background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid rgba(0,0,0,.25);-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-check-input:checked{background-color:#0d6efd;border-color:#0d6efd}.form-check-input:checked[type=checkbox]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#0d6efd;border-color:#0d6efd;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input:disabled~.form-check-label,.form-check-input[disabled]~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{width:2em;margin-left:-2.5em;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media (prefers-reduced-motion:reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.btn-check:disabled+.btn,.btn-check[disabled]+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1.5rem;padding:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#0d6efd;border:0;border-radius:1rem;-webkit-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-webkit-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-webkit-slider-thumb{-webkit-transition:none;transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#b6d4fe}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#0d6efd;border:0;border-radius:1rem;-moz-transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;-moz-appearance:none;appearance:none}@media (prefers-reduced-motion:reduce){.form-range::-moz-range-thumb{-moz-transition:none;transition:none}}.form-range::-moz-range-thumb:active{background-color:#b6d4fe}.form-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:#adb5bd}.form-range:disabled::-moz-range-thumb{background-color:#adb5bd}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + 2px);line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;width:100%;height:100%;padding:1rem .75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:1px solid transparent;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control-plaintext::-moz-placeholder,.form-floating>.form-control::-moz-placeholder{color:transparent}.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:transparent}.form-floating>.form-control-plaintext:not(:-moz-placeholder-shown),.form-floating>.form-control:not(:-moz-placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control-plaintext:-webkit-autofill,.form-floating>.form-control:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:not(:-moz-placeholder-shown)~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label,.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-select~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control:-webkit-autofill~label{opacity:.65;transform:scale(.85) translateY(-.5rem) translateX(.15rem)}.form-floating>.form-control-plaintext~label{border-width:1px 0}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-floating,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-floating:focus-within,.input-group>.form-select:focus{z-index:3}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:3}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.375rem}.input-group-lg>.btn,.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;border-radius:.5rem}.input-group-sm>.btn,.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text{padding:.25rem .5rem;font-size:.875rem;border-radius:.25rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select,.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select,.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select,.input-group>:not(:first-child):not(.dropdown-menu):not(.form-floating):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#198754}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(25,135,84,.9);border-radius:.375rem}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip{display:block}.form-control.is-valid,.was-validated .form-control:valid{border-color:#198754;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-valid:focus,.was-validated .form-control:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-valid,.was-validated .form-select:valid{border-color:#198754}.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"],.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-valid:focus,.was-validated .form-select:valid:focus{border-color:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-control-color.is-valid,.was-validated .form-control-color:valid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-valid,.was-validated .form-check-input:valid{border-color:#198754}.form-check-input.is-valid:checked,.was-validated .form-check-input:valid:checked{background-color:#198754}.form-check-input.is-valid:focus,.was-validated .form-check-input:valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#198754}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.input-group .form-control.is-valid,.input-group .form-select.is-valid,.was-validated .input-group .form-control:valid,.was-validated .input-group .form-select:valid{z-index:1}.input-group .form-control.is-valid:focus,.input-group .form-select.is-valid:focus,.was-validated .input-group .form-control:valid:focus,.was-validated .input-group .form-select:valid:focus{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:.875em;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:.875rem;color:#fff;background-color:rgba(220,53,69,.9);border-radius:.375rem}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip{display:block}.form-control.is-invalid,.was-validated .form-control:invalid{border-color:#dc3545;padding-right:calc(1.5em + .75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(.375em + .1875rem) center;background-size:calc(.75em + .375rem) calc(.75em + .375rem)}.form-control.is-invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + .75rem);background-position:top calc(.375em + .1875rem) right calc(.375em + .1875rem)}.form-select.is-invalid,.was-validated .form-select:invalid{border-color:#dc3545}.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"],.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"]{padding-right:4.125rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"),url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e");background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(.75em + .375rem) calc(.75em + .375rem)}.form-select.is-invalid:focus,.was-validated .form-select:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-control-color.is-invalid,.was-validated .form-control-color:invalid{width:calc(3rem + calc(1.5em + .75rem))}.form-check-input.is-invalid,.was-validated .form-check-input:invalid{border-color:#dc3545}.form-check-input.is-invalid:checked,.was-validated .form-check-input:invalid:checked{background-color:#dc3545}.form-check-input.is-invalid:focus,.was-validated .form-check-input:invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.input-group .form-control.is-invalid,.input-group .form-select.is-invalid,.was-validated .input-group .form-control:invalid,.was-validated .input-group .form-select:invalid{z-index:2}.input-group .form-control.is-invalid:focus,.input-group .form-select.is-invalid:focus,.was-validated .input-group .form-control:invalid:focus,.was-validated .input-group .form-select:invalid:focus{z-index:3}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:#212529;--bs-btn-bg:transparent;--bs-btn-border-width:1px;--bs-btn-border-color:transparent;--bs-btn-border-radius:0.375rem;--bs-btn-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.15),0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check:focus+.btn,.btn:focus{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:active+.btn,.btn-check:checked+.btn,.btn.active,.btn.show,.btn:active{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:active+.btn:focus,.btn-check:checked+.btn:focus,.btn.active:focus,.btn.show:focus,.btn:active:focus{box-shadow:var(--bs-btn-focus-box-shadow)}.btn.disabled,.btn:disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color:#fff;--bs-btn-bg:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0b5ed7;--bs-btn-hover-border-color:#0a58ca;--bs-btn-focus-shadow-rgb:49,132,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0a58ca;--bs-btn-active-border-color:#0a53be;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#0d6efd;--bs-btn-disabled-border-color:#0d6efd}.btn-secondary{--bs-btn-color:#fff;--bs-btn-bg:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#5c636a;--bs-btn-hover-border-color:#565e64;--bs-btn-focus-shadow-rgb:130,138,145;--bs-btn-active-color:#fff;--bs-btn-active-bg:#565e64;--bs-btn-active-border-color:#51585e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#6c757d;--bs-btn-disabled-border-color:#6c757d}.btn-success{--bs-btn-color:#fff;--bs-btn-bg:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#157347;--bs-btn-hover-border-color:#146c43;--bs-btn-focus-shadow-rgb:60,153,110;--bs-btn-active-color:#fff;--bs-btn-active-bg:#146c43;--bs-btn-active-border-color:#13653f;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#198754;--bs-btn-disabled-border-color:#198754}.btn-info{--bs-btn-color:#000;--bs-btn-bg:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#31d2f2;--bs-btn-hover-border-color:#25cff2;--bs-btn-focus-shadow-rgb:11,172,204;--bs-btn-active-color:#000;--bs-btn-active-bg:#3dd5f3;--bs-btn-active-border-color:#25cff2;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#0dcaf0;--bs-btn-disabled-border-color:#0dcaf0}.btn-warning{--bs-btn-color:#000;--bs-btn-bg:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffca2c;--bs-btn-hover-border-color:#ffc720;--bs-btn-focus-shadow-rgb:217,164,6;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffcd39;--bs-btn-active-border-color:#ffc720;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#ffc107;--bs-btn-disabled-border-color:#ffc107}.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#bb2d3b;--bs-btn-hover-border-color:#b02a37;--bs-btn-focus-shadow-rgb:225,83,97;--bs-btn-active-color:#fff;--bs-btn-active-bg:#b02a37;--bs-btn-active-border-color:#a52834;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#dc3545;--bs-btn-disabled-border-color:#dc3545}.btn-light{--bs-btn-color:#000;--bs-btn-bg:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#d3d4d5;--bs-btn-hover-border-color:#c6c7c8;--bs-btn-focus-shadow-rgb:211,212,213;--bs-btn-active-color:#000;--bs-btn-active-bg:#c6c7c8;--bs-btn-active-border-color:#babbbc;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#000;--bs-btn-disabled-bg:#f8f9fa;--bs-btn-disabled-border-color:#f8f9fa}.btn-dark{--bs-btn-color:#fff;--bs-btn-bg:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#424649;--bs-btn-hover-border-color:#373b3e;--bs-btn-focus-shadow-rgb:66,70,73;--bs-btn-active-color:#fff;--bs-btn-active-bg:#4d5154;--bs-btn-active-border-color:#373b3e;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#fff;--bs-btn-disabled-bg:#212529;--bs-btn-disabled-border-color:#212529}.btn-outline-primary{--bs-btn-color:#0d6efd;--bs-btn-border-color:#0d6efd;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#0d6efd;--bs-btn-hover-border-color:#0d6efd;--bs-btn-focus-shadow-rgb:13,110,253;--bs-btn-active-color:#fff;--bs-btn-active-bg:#0d6efd;--bs-btn-active-border-color:#0d6efd;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0d6efd;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0d6efd;--bs-gradient:none}.btn-outline-secondary{--bs-btn-color:#6c757d;--bs-btn-border-color:#6c757d;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#6c757d;--bs-btn-hover-border-color:#6c757d;--bs-btn-focus-shadow-rgb:108,117,125;--bs-btn-active-color:#fff;--bs-btn-active-bg:#6c757d;--bs-btn-active-border-color:#6c757d;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#6c757d;--bs-gradient:none}.btn-outline-success{--bs-btn-color:#198754;--bs-btn-border-color:#198754;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#198754;--bs-btn-hover-border-color:#198754;--bs-btn-focus-shadow-rgb:25,135,84;--bs-btn-active-color:#fff;--bs-btn-active-bg:#198754;--bs-btn-active-border-color:#198754;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#198754;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#198754;--bs-gradient:none}.btn-outline-info{--bs-btn-color:#0dcaf0;--bs-btn-border-color:#0dcaf0;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#0dcaf0;--bs-btn-hover-border-color:#0dcaf0;--bs-btn-focus-shadow-rgb:13,202,240;--bs-btn-active-color:#000;--bs-btn-active-bg:#0dcaf0;--bs-btn-active-border-color:#0dcaf0;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#0dcaf0;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#0dcaf0;--bs-gradient:none}.btn-outline-warning{--bs-btn-color:#ffc107;--bs-btn-border-color:#ffc107;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#ffc107;--bs-btn-hover-border-color:#ffc107;--bs-btn-focus-shadow-rgb:255,193,7;--bs-btn-active-color:#000;--bs-btn-active-bg:#ffc107;--bs-btn-active-border-color:#ffc107;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#ffc107;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#ffc107;--bs-gradient:none}.btn-outline-danger{--bs-btn-color:#dc3545;--bs-btn-border-color:#dc3545;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#dc3545;--bs-btn-hover-border-color:#dc3545;--bs-btn-focus-shadow-rgb:220,53,69;--bs-btn-active-color:#fff;--bs-btn-active-bg:#dc3545;--bs-btn-active-border-color:#dc3545;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#dc3545;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#dc3545;--bs-gradient:none}.btn-outline-light{--bs-btn-color:#f8f9fa;--bs-btn-border-color:#f8f9fa;--bs-btn-hover-color:#000;--bs-btn-hover-bg:#f8f9fa;--bs-btn-hover-border-color:#f8f9fa;--bs-btn-focus-shadow-rgb:248,249,250;--bs-btn-active-color:#000;--bs-btn-active-bg:#f8f9fa;--bs-btn-active-border-color:#f8f9fa;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#f8f9fa;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#f8f9fa;--bs-gradient:none}.btn-outline-dark{--bs-btn-color:#212529;--bs-btn-border-color:#212529;--bs-btn-hover-color:#fff;--bs-btn-hover-bg:#212529;--bs-btn-hover-border-color:#212529;--bs-btn-focus-shadow-rgb:33,37,41;--bs-btn-active-color:#fff;--bs-btn-active-bg:#212529;--bs-btn-active-border-color:#212529;--bs-btn-active-shadow:inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color:#212529;--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:#212529;--bs-gradient:none}.btn-link{--bs-btn-font-weight:400;--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:#6c757d;--bs-btn-disabled-border-color:transparent;--bs-btn-box-shadow:none;--bs-btn-focus-shadow-rgb:49,132,253;text-decoration:underline}.btn-link:focus{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-group-lg>.btn,.btn-lg{--bs-btn-padding-y:0.5rem;--bs-btn-padding-x:1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius:0.5rem}.btn-group-sm>.btn,.btn-sm{--bs-btn-padding-y:0.25rem;--bs-btn-padding-x:0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius:0.25rem}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}.dropdown,.dropdown-center,.dropend,.dropstart,.dropup,.dropup-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:#212529;--bs-dropdown-bg:#fff;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:0.375rem;--bs-dropdown-border-width:1px;--bs-dropdown-inner-border-radius:calc(0.375rem - 1px);--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color:#212529;--bs-dropdown-link-hover-color:#1e2125;--bs-dropdown-link-hover-bg:#e9ecef;--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;position:absolute;z-index:1000;display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width:576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width:768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width:992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width:1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;flex:1 1 auto}.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:.375rem}.btn-group>.btn-group:not(:first-child),.btn-group>.btn:not(:first-child){margin-left:-1px}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn-group:not(:first-child),.btn-group-vertical>.btn:not(:first-child){margin-top:-1px}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn~.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:#6c757d;display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:focus,.nav-link:hover{color:var(--bs-nav-link-hover-color)}.nav-link.disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:1px;--bs-nav-tabs-border-color:#dee2e6;--bs-nav-tabs-border-radius:0.375rem;--bs-nav-tabs-link-hover-border-color:#e9ecef #e9ecef #dee2e6;--bs-nav-tabs-link-active-color:#495057;--bs-nav-tabs-link-active-bg:#fff;--bs-nav-tabs-link-active-border-color:#dee2e6 #dee2e6 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(var(--bs-nav-tabs-border-width) * -1);background:0 0;border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.disabled,.nav-tabs .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(var(--bs-nav-tabs-border-width) * -1);border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius:0.375rem;--bs-nav-pills-link-active-color:#fff;--bs-nav-pills-link-active-bg:#0d6efd}.nav-pills .nav-link{background:0 0;border:0;border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link:disabled{color:var(--bs-nav-link-disabled-color);background-color:transparent;border-color:transparent}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-fill .nav-item,.nav-fill>.nav-link{flex:1 1 auto;text-align:center}.nav-justified .nav-item,.nav-justified>.nav-link{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(0, 0, 0, 0.55);--bs-navbar-hover-color:rgba(0, 0, 0, 0.7);--bs-navbar-disabled-color:rgba(0, 0, 0, 0.3);--bs-navbar-active-color:rgba(0, 0, 0, 0.9);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(0, 0, 0, 0.9);--bs-navbar-brand-hover-color:rgba(0, 0, 0, 0.9);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(0, 0, 0, 0.1);--bs-navbar-toggler-border-radius:0.375rem;--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-lg,.navbar>.container-md,.navbar>.container-sm,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .show>.nav-link{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:focus,.navbar-text a:hover{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media (prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height,75vh);overflow-y:auto}@media (min-width:576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media (min-width:1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto!important;height:auto!important;visibility:visible!important;background-color:transparent!important;border:0!important;transform:none!important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark{--bs-navbar-color:rgba(255, 255, 255, 0.55);--bs-navbar-hover-color:rgba(255, 255, 255, 0.75);--bs-navbar-disabled-color:rgba(255, 255, 255, 0.25);--bs-navbar-active-color:#fff;--bs-navbar-brand-color:#fff;--bs-navbar-brand-hover-color:#fff;--bs-navbar-toggler-border-color:rgba(255, 255, 255, 0.1);--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-border-width:1px;--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:0.375rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(0.375rem - 1px);--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(0, 0, 0, 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:#fff;--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:0.75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y)}.card-subtitle{margin-top:calc(-.5 * var(--bs-card-title-spacer-y));margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y));margin-left:calc(-.5 * var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-.5 * var(--bs-card-cap-padding-x));margin-left:calc(-.5 * var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom,.card-img-top{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media (min-width:576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-header,.card-group>.card:not(:last-child) .card-img-top{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-footer,.card-group>.card:not(:last-child) .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-header,.card-group>.card:not(:first-child) .card-img-top{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-footer,.card-group>.card:not(:first-child) .card-img-bottom{border-bottom-left-radius:0}}.accordion{--bs-accordion-color:#000;--bs-accordion-bg:#fff;--bs-accordion-transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out,border-radius 0.15s ease;--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:1px;--bs-accordion-border-radius:0.375rem;--bs-accordion-inner-border-radius:calc(0.375rem - 1px);--bs-accordion-btn-padding-x:1.25rem;--bs-accordion-btn-padding-y:1rem;--bs-accordion-btn-color:var(--bs-body-color);--bs-accordion-btn-bg:var(--bs-accordion-bg);--bs-accordion-btn-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='var%28--bs-body-color%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width:1.25rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform 0.2s ease-in-out;--bs-accordion-btn-active-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color:#86b7fe;--bs-accordion-btn-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-accordion-body-padding-x:1.25rem;--bs-accordion-body-padding-y:1rem;--bs-accordion-active-color:#0c63e4;--bs-accordion-active-bg:#e7f1ff}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media (prefers-reduced-motion:reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(var(--bs-accordion-border-width) * -1) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media (prefers-reduced-motion:reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button{border-radius:0}.breadcrumb{--bs-breadcrumb-padding-x:0;--bs-breadcrumb-padding-y:0;--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color:#6c757d;--bs-breadcrumb-item-padding-x:0.5rem;--bs-breadcrumb-item-active-color:#6c757d;display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/")}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x:0.75rem;--bs-pagination-padding-y:0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:#fff;--bs-pagination-border-width:1px;--bs-pagination-border-color:#dee2e6;--bs-pagination-border-radius:0.375rem;--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:#e9ecef;--bs-pagination-hover-border-color:#dee2e6;--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:#e9ecef;--bs-pagination-focus-box-shadow:0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color:#fff;--bs-pagination-active-bg:#0d6efd;--bs-pagination-active-border-color:#0d6efd;--bs-pagination-disabled-color:#6c757d;--bs-pagination-disabled-bg:#fff;--bs-pagination-disabled-border-color:#dee2e6;display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.active>.page-link,.page-link.active{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.disabled>.page-link,.page-link.disabled{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x:1.5rem;--bs-pagination-padding-y:0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius:0.5rem}.pagination-sm{--bs-pagination-padding-x:0.5rem;--bs-pagination-padding-y:0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius:0.25rem}.badge{--bs-badge-padding-x:0.65em;--bs-badge-padding-y:0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight:700;--bs-badge-color:#fff;--bs-badge-border-radius:0.375rem;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg:transparent;--bs-alert-padding-x:1rem;--bs-alert-padding-y:1rem;--bs-alert-margin-bottom:1rem;--bs-alert-color:inherit;--bs-alert-border-color:transparent;--bs-alert-border:1px solid var(--bs-alert-border-color);--bs-alert-border-radius:0.375rem;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-primary{--bs-alert-color:#084298;--bs-alert-bg:#cfe2ff;--bs-alert-border-color:#b6d4fe}.alert-primary .alert-link{color:#06357a}.alert-secondary{--bs-alert-color:#41464b;--bs-alert-bg:#e2e3e5;--bs-alert-border-color:#d3d6d8}.alert-secondary .alert-link{color:#34383c}.alert-success{--bs-alert-color:#0f5132;--bs-alert-bg:#d1e7dd;--bs-alert-border-color:#badbcc}.alert-success .alert-link{color:#0c4128}.alert-info{--bs-alert-color:#055160;--bs-alert-bg:#cff4fc;--bs-alert-border-color:#b6effb}.alert-info .alert-link{color:#04414d}.alert-warning{--bs-alert-color:#664d03;--bs-alert-bg:#fff3cd;--bs-alert-border-color:#ffecb5}.alert-warning .alert-link{color:#523e02}.alert-danger{--bs-alert-color:#842029;--bs-alert-bg:#f8d7da;--bs-alert-border-color:#f5c2c7}.alert-danger .alert-link{color:#6a1a21}.alert-light{--bs-alert-color:#636464;--bs-alert-bg:#fefefe;--bs-alert-border-color:#fdfdfe}.alert-light .alert-link{color:#4f5050}.alert-dark{--bs-alert-color:#141619;--bs-alert-bg:#d3d3d4;--bs-alert-border-color:#bcbebf}.alert-dark .alert-link{color:#101214}@-webkit-keyframes progress-bar-stripes{0%{background-position-x:1rem}}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress{--bs-progress-height:1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg:#e9ecef;--bs-progress-border-radius:0.375rem;--bs-progress-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-progress-bar-color:#fff;--bs-progress-bar-bg:#0d6efd;--bs-progress-bar-transition:width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-bar-animated{-webkit-animation:1s linear infinite progress-bar-stripes;animation:1s linear infinite progress-bar-stripes}@media (prefers-reduced-motion:reduce){.progress-bar-animated{-webkit-animation:none;animation:none}}.list-group{--bs-list-group-color:#212529;--bs-list-group-bg:#fff;--bs-list-group-border-color:rgba(0, 0, 0, 0.125);--bs-list-group-border-width:1px;--bs-list-group-border-radius:0.375rem;--bs-list-group-item-padding-x:1rem;--bs-list-group-item-padding-y:0.5rem;--bs-list-group-action-color:#495057;--bs-list-group-action-hover-color:#495057;--bs-list-group-action-hover-bg:#f8f9fa;--bs-list-group-action-active-color:#212529;--bs-list-group-action-active-bg:#e9ecef;--bs-list-group-disabled-color:#6c757d;--bs-list-group-disabled-bg:#fff;--bs-list-group-active-color:#fff;--bs-list-group-active-bg:#0d6efd;--bs-list-group-active-border-color:#0d6efd;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(var(--bs-list-group-border-width) * -1);border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child{border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child{border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(var(--bs-list-group-border-width) * -1);border-left-width:var(--bs-list-group-border-width)}@media (min-width:576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child{border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child{border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(var(--bs-list-group-border-width) * -1);border-left-width:var(--bs-list-group-border-width)}}@media (min-width:768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child{border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child{border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(var(--bs-list-group-border-width) * -1);border-left-width:var(--bs-list-group-border-width)}}@media (min-width:992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child{border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child{border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(var(--bs-list-group-border-width) * -1);border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child{border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child{border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(var(--bs-list-group-border-width) * -1);border-left-width:var(--bs-list-group-border-width)}}@media (min-width:1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child{border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child{border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(var(--bs-list-group-border-width) * -1);border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{color:#084298;background-color:#cfe2ff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#084298;background-color:#bacbe6}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#084298;border-color:#084298}.list-group-item-secondary{color:#41464b;background-color:#e2e3e5}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#41464b;background-color:#cbccce}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#41464b;border-color:#41464b}.list-group-item-success{color:#0f5132;background-color:#d1e7dd}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#0f5132;background-color:#bcd0c7}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#0f5132;border-color:#0f5132}.list-group-item-info{color:#055160;background-color:#cff4fc}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#055160;background-color:#badce3}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#055160;border-color:#055160}.list-group-item-warning{color:#664d03;background-color:#fff3cd}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#664d03;background-color:#e6dbb9}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#664d03;border-color:#664d03}.list-group-item-danger{color:#842029;background-color:#f8d7da}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#842029;background-color:#dfc2c4}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#842029;border-color:#842029}.list-group-item-light{color:#636464;background-color:#fefefe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#636464;background-color:#e5e5e5}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#636464;border-color:#636464}.list-group-item-dark{color:#141619;background-color:#d3d3d4}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#141619;background-color:#bebebf}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#141619;border-color:#141619}.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat;border:0;border-radius:.375rem;opacity:.5}.btn-close:hover{color:#000;text-decoration:none;opacity:.75}.btn-close:focus{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25);opacity:1}.btn-close.disabled,.btn-close:disabled{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.25}.btn-close-white{filter:invert(1) grayscale(100%) brightness(200%)}.toast{--bs-toast-padding-x:0.75rem;--bs-toast-padding-y:0.5rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg:rgba(255, 255, 255, 0.85);--bs-toast-border-width:1px;--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-border-radius:0.375rem;--bs-toast-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-toast-header-color:#6c757d;--bs-toast-header-bg:rgba(255, 255, 255, 0.85);--bs-toast-header-border-color:rgba(0, 0, 0, 0.05);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{position:absolute;z-index:1090;width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(var(--bs-toast-padding-x) * -.5);margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex:1055;--bs-modal-width:500px;--bs-modal-padding:1rem;--bs-modal-margin:0.5rem;--bs-modal-color: ;--bs-modal-bg:#fff;--bs-modal-border-color:var(--bs-border-color-translucent);--bs-modal-border-width:1px;--bs-modal-border-radius:0.5rem;--bs-modal-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius:calc(0.5rem - 1px);--bs-modal-header-padding-x:1rem;--bs-modal-header-padding-y:1rem;--bs-modal-header-padding:1rem 1rem;--bs-modal-header-border-color:var(--bs-border-color);--bs-modal-header-border-width:1px;--bs-modal-title-line-height:1.5;--bs-modal-footer-gap:0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color:var(--bs-border-color);--bs-modal-footer-border-width:1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0,-50px)}@media (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin) * 2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin) * 2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex:1050;--bs-backdrop-bg:#000;--bs-backdrop-opacity:0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y) * .5) calc(var(--bs-modal-header-padding-x) * .5);margin:calc(var(--bs-modal-header-padding-y) * -.5) calc(var(--bs-modal-header-padding-x) * -.5) calc(var(--bs-modal-header-padding-y) * -.5) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * .5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap) * .5)}@media (min-width:576px){.modal{--bs-modal-margin:1.75rem;--bs-modal-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width:300px}}@media (min-width:992px){.modal-lg,.modal-xl{--bs-modal-width:800px}}@media (min-width:1200px){.modal-xl{--bs-modal-width:1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-footer,.modal-fullscreen .modal-header{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media (max-width:575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-footer,.modal-fullscreen-sm-down .modal-header{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media (max-width:767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-footer,.modal-fullscreen-md-down .modal-header{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media (max-width:991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-footer,.modal-fullscreen-lg-down .modal-header{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media (max-width:1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-footer,.modal-fullscreen-xl-down .modal-header{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media (max-width:1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-footer,.modal-fullscreen-xxl-down .modal-header{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:0.5rem;--bs-tooltip-padding-y:0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color:#fff;--bs-tooltip-bg:#000;--bs-tooltip-border-radius:0.375rem;--bs-tooltip-opacity:0.9;--bs-tooltip-arrow-width:0.8rem;--bs-tooltip-arrow-height:0.4rem;z-index:var(--bs-tooltip-zindex);display:block;padding:var(--bs-tooltip-arrow-height);margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow,.bs-tooltip-top .tooltip-arrow{bottom:0}.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before,.bs-tooltip-top .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow,.bs-tooltip-end .tooltip-arrow{left:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before,.bs-tooltip-end .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow,.bs-tooltip-bottom .tooltip-arrow{top:0}.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before,.bs-tooltip-bottom .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow,.bs-tooltip-start .tooltip-arrow{right:0;width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before,.bs-tooltip-start .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:276px;--bs-popover-font-size:0.875rem;--bs-popover-bg:#fff;--bs-popover-border-width:1px;--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:0.5rem;--bs-popover-inner-border-radius:calc(0.5rem - 1px);--bs-popover-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-popover-header-padding-x:1rem;--bs-popover-header-padding-y:0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color:var(--bs-heading-color);--bs-popover-header-bg:#f0f0f0;--bs-popover-body-padding-x:1rem;--bs-popover-body-padding-y:1rem;--bs-popover-body-color:#212529;--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:0.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::after,.popover .popover-arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid;border-width:0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow,.bs-popover-top>.popover-arrow{bottom:calc(var(--bs-popover-arrow-height) * -1 - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-top>.popover-arrow::before{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after,.bs-popover-top>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow,.bs-popover-end>.popover-arrow{left:calc(var(--bs-popover-arrow-height) * -1 - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-end>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after,.bs-popover-end>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow,.bs-popover-bottom>.popover-arrow{top:calc(var(--bs-popover-arrow-height) * -1 - var(--bs-popover-border-width))}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::before{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after,.bs-popover-bottom>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(var(--bs-popover-arrow-width) * -.5);content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow,.bs-popover-start>.popover-arrow{right:calc(var(--bs-popover-arrow-height) * -1 - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-start>.popover-arrow::before{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after,.bs-popover-start>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition:transform .6s ease-in-out}@media (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.active.carousel-item-end,.carousel-item-next:not(.carousel-item-start){transform:translateX(100%)}.active.carousel-item-start,.carousel-item-prev:not(.carousel-item-end){transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end,.carousel-fade .carousel-item.active{z-index:1;opacity:1}.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{z-index:0;opacity:0;transition:opacity 0s .6s}@media (prefers-reduced-motion:reduce){.carousel-fade .active.carousel-item-end,.carousel-fade .active.carousel-item-start{transition:none}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:0 0;border:0;opacity:.5;transition:opacity .15s ease}@media (prefers-reduced-motion:reduce){.carousel-control-next,.carousel-control-prev{transition:none}}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%;list-style:none}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid transparent;border-bottom:10px solid transparent;opacity:.5;transition:opacity .6s ease}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-next-icon,.carousel-dark .carousel-control-prev-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}.spinner-border,.spinner-grow{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;-webkit-animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name);animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@-webkit-keyframes spinner-border{to{transform:rotate(360deg)}}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-border-width:0.25em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:transparent}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:0.2em}@-webkit-keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-0.125em;--bs-spinner-animation-speed:0.75s;--bs-spinner-animation-name:spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.offcanvas,.offcanvas-lg,.offcanvas-md,.offcanvas-sm,.offcanvas-xl,.offcanvas-xxl{--bs-offcanvas-width:400px;--bs-offcanvas-height:30vh;--bs-offcanvas-padding-x:1rem;--bs-offcanvas-padding-y:1rem;--bs-offcanvas-color: ;--bs-offcanvas-bg:#fff;--bs-offcanvas-border-width:1px;--bs-offcanvas-border-color:var(--bs-border-color-translucent);--bs-offcanvas-box-shadow:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075)}@media (max-width:575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:575.98px) and (prefers-reduced-motion:reduce){.offcanvas-sm{transition:none}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:575.98px){.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:575.98px){.offcanvas-sm.show:not(.hiding),.offcanvas-sm.showing{transform:none}}@media (max-width:575.98px){.offcanvas-sm.hiding,.offcanvas-sm.show,.offcanvas-sm.showing{visibility:visible}}@media (min-width:576px){.offcanvas-sm{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:767.98px) and (prefers-reduced-motion:reduce){.offcanvas-md{transition:none}}@media (max-width:767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:767.98px){.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:767.98px){.offcanvas-md.show:not(.hiding),.offcanvas-md.showing{transform:none}}@media (max-width:767.98px){.offcanvas-md.hiding,.offcanvas-md.show,.offcanvas-md.showing{visibility:visible}}@media (min-width:768px){.offcanvas-md{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:991.98px) and (prefers-reduced-motion:reduce){.offcanvas-lg{transition:none}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:991.98px){.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:991.98px){.offcanvas-lg.show:not(.hiding),.offcanvas-lg.showing{transform:none}}@media (max-width:991.98px){.offcanvas-lg.hiding,.offcanvas-lg.show,.offcanvas-lg.showing{visibility:visible}}@media (min-width:992px){.offcanvas-lg{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:1199.98px) and (prefers-reduced-motion:reduce){.offcanvas-xl{transition:none}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:1199.98px){.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:1199.98px){.offcanvas-xl.show:not(.hiding),.offcanvas-xl.showing{transform:none}}@media (max-width:1199.98px){.offcanvas-xl.hiding,.offcanvas-xl.show,.offcanvas-xl.showing{visibility:visible}}@media (min-width:1200px){.offcanvas-xl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}@media (max-width:1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}}@media (max-width:1399.98px) and (prefers-reduced-motion:reduce){.offcanvas-xxl{transition:none}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}}@media (max-width:1399.98px){.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}}@media (max-width:1399.98px){.offcanvas-xxl.show:not(.hiding),.offcanvas-xxl.showing{transform:none}}@media (max-width:1399.98px){.offcanvas-xxl.hiding,.offcanvas-xxl.show,.offcanvas-xxl.showing{visibility:visible}}@media (min-width:1400px){.offcanvas-xxl{--bs-offcanvas-height:auto;--bs-offcanvas-border-width:0;background-color:transparent!important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:transparent!important}}.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}@media (prefers-reduced-motion:reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.show:not(.hiding),.offcanvas.showing{transform:none}.offcanvas.hiding,.offcanvas.show,.offcanvas.showing{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y) * .5) calc(var(--bs-offcanvas-padding-x) * .5);margin-top:calc(var(--bs-offcanvas-padding-y) * -.5);margin-right:calc(var(--bs-offcanvas-padding-x) * -.5);margin-bottom:calc(var(--bs-offcanvas-padding-y) * -.5)}.offcanvas-title{margin-bottom:0;line-height:1.5}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{-webkit-animation:placeholder-glow 2s ease-in-out infinite;animation:placeholder-glow 2s ease-in-out infinite}@-webkit-keyframes placeholder-glow{50%{opacity:.2}}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{-webkit-mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);mask-image:linear-gradient(130deg,#000 55%,rgba(0,0,0,0.8) 75%,#000 95%);-webkit-mask-size:200% 100%;mask-size:200% 100%;-webkit-animation:placeholder-wave 2s linear infinite;animation:placeholder-wave 2s linear infinite}@-webkit-keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}@keyframes placeholder-wave{100%{-webkit-mask-position:-200% 0%;mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#fff!important;background-color:RGBA(13,110,253,var(--bs-bg-opacity,1))!important}.text-bg-secondary{color:#fff!important;background-color:RGBA(108,117,125,var(--bs-bg-opacity,1))!important}.text-bg-success{color:#fff!important;background-color:RGBA(25,135,84,var(--bs-bg-opacity,1))!important}.text-bg-info{color:#000!important;background-color:RGBA(13,202,240,var(--bs-bg-opacity,1))!important}.text-bg-warning{color:#000!important;background-color:RGBA(255,193,7,var(--bs-bg-opacity,1))!important}.text-bg-danger{color:#fff!important;background-color:RGBA(220,53,69,var(--bs-bg-opacity,1))!important}.text-bg-light{color:#000!important;background-color:RGBA(248,249,250,var(--bs-bg-opacity,1))!important}.text-bg-dark{color:#fff!important;background-color:RGBA(33,37,41,var(--bs-bg-opacity,1))!important}.link-primary{color:#0d6efd!important}.link-primary:focus,.link-primary:hover{color:#0a58ca!important}.link-secondary{color:#6c757d!important}.link-secondary:focus,.link-secondary:hover{color:#565e64!important}.link-success{color:#198754!important}.link-success:focus,.link-success:hover{color:#146c43!important}.link-info{color:#0dcaf0!important}.link-info:focus,.link-info:hover{color:#3dd5f3!important}.link-warning{color:#ffc107!important}.link-warning:focus,.link-warning:hover{color:#ffcd39!important}.link-danger{color:#dc3545!important}.link-danger:focus,.link-danger:hover{color:#b02a37!important}.link-light{color:#f8f9fa!important}.link-light:focus,.link-light:hover{color:#f9fafb!important}.link-dark{color:#212529!important}.link-dark:focus,.link-dark:hover{color:#1a1e21!important}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio:100%}.ratio-4x3{--bs-aspect-ratio:75%}.ratio-16x9{--bs-aspect-ratio:56.25%}.ratio-21x9{--bs-aspect-ratio:42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}@media (min-width:576px){.sticky-sm-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:768px){.sticky-md-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:992px){.sticky-lg-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1200px){.sticky-xl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}@media (min-width:1400px){.sticky-xxl-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:-webkit-sticky;position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.float-start{float:left!important}.float-end{float:right!important}.float-none{float:none!important}.opacity-0{opacity:0!important}.opacity-25{opacity:.25!important}.opacity-50{opacity:.5!important}.opacity-75{opacity:.75!important}.opacity-100{opacity:1!important}.overflow-auto{overflow:auto!important}.overflow-hidden{overflow:hidden!important}.overflow-visible{overflow:visible!important}.overflow-scroll{overflow:scroll!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.top-0{top:0!important}.top-50{top:50%!important}.top-100{top:100%!important}.bottom-0{bottom:0!important}.bottom-50{bottom:50%!important}.bottom-100{bottom:100%!important}.start-0{left:0!important}.start-50{left:50%!important}.start-100{left:100%!important}.end-0{right:0!important}.end-50{right:50%!important}.end-100{right:100%!important}.translate-middle{transform:translate(-50%,-50%)!important}.translate-middle-x{transform:translateX(-50%)!important}.translate-middle-y{transform:translateY(-50%)!important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-0{border:0!important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-top-0{border-top:0!important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-end-0{border-right:0!important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-bottom-0{border-bottom:0!important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important}.border-start-0{border-left:0!important}.border-primary{--bs-border-opacity:1;border-color:rgba(var(--bs-primary-rgb),var(--bs-border-opacity))!important}.border-secondary{--bs-border-opacity:1;border-color:rgba(var(--bs-secondary-rgb),var(--bs-border-opacity))!important}.border-success{--bs-border-opacity:1;border-color:rgba(var(--bs-success-rgb),var(--bs-border-opacity))!important}.border-info{--bs-border-opacity:1;border-color:rgba(var(--bs-info-rgb),var(--bs-border-opacity))!important}.border-warning{--bs-border-opacity:1;border-color:rgba(var(--bs-warning-rgb),var(--bs-border-opacity))!important}.border-danger{--bs-border-opacity:1;border-color:rgba(var(--bs-danger-rgb),var(--bs-border-opacity))!important}.border-light{--bs-border-opacity:1;border-color:rgba(var(--bs-light-rgb),var(--bs-border-opacity))!important}.border-dark{--bs-border-opacity:1;border-color:rgba(var(--bs-dark-rgb),var(--bs-border-opacity))!important}.border-white{--bs-border-opacity:1;border-color:rgba(var(--bs-white-rgb),var(--bs-border-opacity))!important}.border-1{--bs-border-width:1px}.border-2{--bs-border-width:2px}.border-3{--bs-border-width:3px}.border-4{--bs-border-width:4px}.border-5{--bs-border-width:5px}.border-opacity-10{--bs-border-opacity:0.1}.border-opacity-25{--bs-border-opacity:0.25}.border-opacity-50{--bs-border-opacity:0.5}.border-opacity-75{--bs-border-opacity:0.75}.border-opacity-100{--bs-border-opacity:1}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.mw-100{max-width:100%!important}.vw-100{width:100vw!important}.min-vw-100{min-width:100vw!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mh-100{max-height:100%!important}.vh-100{height:100vh!important}.min-vh-100{min-height:100vh!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}.gap-0{gap:0!important}.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}.gap-5{gap:3rem!important}.font-monospace{font-family:var(--bs-font-monospace)!important}.fs-1{font-size:calc(1.375rem + 1.5vw)!important}.fs-2{font-size:calc(1.325rem + .9vw)!important}.fs-3{font-size:calc(1.3rem + .6vw)!important}.fs-4{font-size:calc(1.275rem + .3vw)!important}.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}.fst-italic{font-style:italic!important}.fst-normal{font-style:normal!important}.fw-light{font-weight:300!important}.fw-lighter{font-weight:lighter!important}.fw-normal{font-weight:400!important}.fw-bold{font-weight:700!important}.fw-semibold{font-weight:600!important}.fw-bolder{font-weight:bolder!important}.lh-1{line-height:1!important}.lh-sm{line-height:1.25!important}.lh-base{line-height:1.5!important}.lh-lg{line-height:2!important}.text-start{text-align:left!important}.text-end{text-align:right!important}.text-center{text-align:center!important}.text-decoration-none{text-decoration:none!important}.text-decoration-underline{text-decoration:underline!important}.text-decoration-line-through{text-decoration:line-through!important}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.text-wrap{white-space:normal!important}.text-nowrap{white-space:nowrap!important}.text-break{word-wrap:break-word!important;word-break:break-word!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-secondary{--bs-text-opacity:1;color:rgba(var(--bs-secondary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-info{--bs-text-opacity:1;color:rgba(var(--bs-info-rgb),var(--bs-text-opacity))!important}.text-warning{--bs-text-opacity:1;color:rgba(var(--bs-warning-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-light{--bs-text-opacity:1;color:rgba(var(--bs-light-rgb),var(--bs-text-opacity))!important}.text-dark{--bs-text-opacity:1;color:rgba(var(--bs-dark-rgb),var(--bs-text-opacity))!important}.text-black{--bs-text-opacity:1;color:rgba(var(--bs-black-rgb),var(--bs-text-opacity))!important}.text-white{--bs-text-opacity:1;color:rgba(var(--bs-white-rgb),var(--bs-text-opacity))!important}.text-body{--bs-text-opacity:1;color:rgba(var(--bs-body-color-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:#6c757d!important}.text-black-50{--bs-text-opacity:1;color:rgba(0,0,0,.5)!important}.text-white-50{--bs-text-opacity:1;color:rgba(255,255,255,.5)!important}.text-reset{--bs-text-opacity:1;color:inherit!important}.text-opacity-25{--bs-text-opacity:0.25}.text-opacity-50{--bs-text-opacity:0.5}.text-opacity-75{--bs-text-opacity:0.75}.text-opacity-100{--bs-text-opacity:1}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.bg-secondary{--bs-bg-opacity:1;background-color:rgba(var(--bs-secondary-rgb),var(--bs-bg-opacity))!important}.bg-success{--bs-bg-opacity:1;background-color:rgba(var(--bs-success-rgb),var(--bs-bg-opacity))!important}.bg-info{--bs-bg-opacity:1;background-color:rgba(var(--bs-info-rgb),var(--bs-bg-opacity))!important}.bg-warning{--bs-bg-opacity:1;background-color:rgba(var(--bs-warning-rgb),var(--bs-bg-opacity))!important}.bg-danger{--bs-bg-opacity:1;background-color:rgba(var(--bs-danger-rgb),var(--bs-bg-opacity))!important}.bg-light{--bs-bg-opacity:1;background-color:rgba(var(--bs-light-rgb),var(--bs-bg-opacity))!important}.bg-dark{--bs-bg-opacity:1;background-color:rgba(var(--bs-dark-rgb),var(--bs-bg-opacity))!important}.bg-black{--bs-bg-opacity:1;background-color:rgba(var(--bs-black-rgb),var(--bs-bg-opacity))!important}.bg-white{--bs-bg-opacity:1;background-color:rgba(var(--bs-white-rgb),var(--bs-bg-opacity))!important}.bg-body{--bs-bg-opacity:1;background-color:rgba(var(--bs-body-bg-rgb),var(--bs-bg-opacity))!important}.bg-transparent{--bs-bg-opacity:1;background-color:transparent!important}.bg-opacity-10{--bs-bg-opacity:0.1}.bg-opacity-25{--bs-bg-opacity:0.25}.bg-opacity-50{--bs-bg-opacity:0.5}.bg-opacity-75{--bs-bg-opacity:0.75}.bg-opacity-100{--bs-bg-opacity:1}.bg-gradient{background-image:var(--bs-gradient)!important}.user-select-all{-webkit-user-select:all!important;-moz-user-select:all!important;user-select:all!important}.user-select-auto{-webkit-user-select:auto!important;-moz-user-select:auto!important;user-select:auto!important}.user-select-none{-webkit-user-select:none!important;-moz-user-select:none!important;user-select:none!important}.pe-none{pointer-events:none!important}.pe-auto{pointer-events:auto!important}.rounded{border-radius:var(--bs-border-radius)!important}.rounded-0{border-radius:0!important}.rounded-1{border-radius:var(--bs-border-radius-sm)!important}.rounded-2{border-radius:var(--bs-border-radius)!important}.rounded-3{border-radius:var(--bs-border-radius-lg)!important}.rounded-4{border-radius:var(--bs-border-radius-xl)!important}.rounded-5{border-radius:var(--bs-border-radius-2xl)!important}.rounded-circle{border-radius:50%!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important}.rounded-end{border-top-right-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius)!important;border-bottom-left-radius:var(--bs-border-radius)!important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius)!important;border-top-left-radius:var(--bs-border-radius)!important}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media (min-width:576px){.float-sm-start{float:left!important}.float-sm-end{float:right!important}.float-sm-none{float:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}.gap-sm-0{gap:0!important}.gap-sm-1{gap:.25rem!important}.gap-sm-2{gap:.5rem!important}.gap-sm-3{gap:1rem!important}.gap-sm-4{gap:1.5rem!important}.gap-sm-5{gap:3rem!important}.text-sm-start{text-align:left!important}.text-sm-end{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.float-md-start{float:left!important}.float-md-end{float:right!important}.float-md-none{float:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}.gap-md-0{gap:0!important}.gap-md-1{gap:.25rem!important}.gap-md-2{gap:.5rem!important}.gap-md-3{gap:1rem!important}.gap-md-4{gap:1.5rem!important}.gap-md-5{gap:3rem!important}.text-md-start{text-align:left!important}.text-md-end{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.float-lg-start{float:left!important}.float-lg-end{float:right!important}.float-lg-none{float:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}.gap-lg-0{gap:0!important}.gap-lg-1{gap:.25rem!important}.gap-lg-2{gap:.5rem!important}.gap-lg-3{gap:1rem!important}.gap-lg-4{gap:1.5rem!important}.gap-lg-5{gap:3rem!important}.text-lg-start{text-align:left!important}.text-lg-end{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.float-xl-start{float:left!important}.float-xl-end{float:right!important}.float-xl-none{float:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}.gap-xl-0{gap:0!important}.gap-xl-1{gap:.25rem!important}.gap-xl-2{gap:.5rem!important}.gap-xl-3{gap:1rem!important}.gap-xl-4{gap:1.5rem!important}.gap-xl-5{gap:3rem!important}.text-xl-start{text-align:left!important}.text-xl-end{text-align:right!important}.text-xl-center{text-align:center!important}}@media (min-width:1400px){.float-xxl-start{float:left!important}.float-xxl-end{float:right!important}.float-xxl-none{float:none!important}.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}.gap-xxl-0{gap:0!important}.gap-xxl-1{gap:.25rem!important}.gap-xxl-2{gap:.5rem!important}.gap-xxl-3{gap:1rem!important}.gap-xxl-4{gap:1.5rem!important}.gap-xxl-5{gap:3rem!important}.text-xxl-start{text-align:left!important}.text-xxl-end{text-align:right!important}.text-xxl-center{text-align:center!important}}@media (min-width:1200px){.fs-1{font-size:2.5rem!important}.fs-2{font-size:2rem!important}.fs-3{font-size:1.75rem!important}.fs-4{font-size:1.5rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}}
+/*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
diff --git a/resources/cd_doorlock/html/fonts/vcr.woff2 b/resources/cd_doorlock/html/fonts/vcr.woff2
new file mode 100644
index 0000000000000000000000000000000000000000..929406ae26dcbbb7423cbfd27653ec4ff76f03a5
GIT binary patch
literal 17992
zcmV)1K+V5*Pew8T0RR9107ggv6aWAK0Vr4i07c#a0RR9100000000000000000000
z0000Q3>y+0fd&+TPzGQYi(mkVJO~mAf^!iF3WNF_gWO~bgBk!5r8ogL0we>5Fa#h4
zgJ1`QISfu)sTOf#Y|9!LbO%7~uOzvRLBPnSmJNzyRZGEB^ogGm?%m+>i!R
zn6LjVicCz(InXQ4aO743@h8*uBT!tQf`9-*;td}(UoBX4o
z+fW#V2na1qJ4u$-=zq(SaZ((wp`)LJ=_X&zv@112Da>x_#
zQJ`l|(iQLo>IK-LMmy*LssgARWap0*KvnP;QGwl^T`AbD)?I?X^#W@FRSVShqg(&~
zzv3h$Awa+f8yI7Bi=K1uQ?06BwXdkUKd{dBsa+`VG~>XT;`#r-Z~Ok&gz==q1fCZ~
z0k
zUs3%l+g}yeHrE*}FhdS``2XdXUsO9z-FoWoarN!ug-BMZJsyi#Ds?mN%8WXBzo~J?
zXT(dXBkn7yy+K2;C3FCy`a=4Rh7O>!zn}h}1e9yXd8mysL`*4n?YDnd`~R5we@r@7
z&TE=atRf;JV_pH#_OJc@%IfsD-9LNT(~D6M5HJae;M;AP)}+sEo^EC*ZJiT*J#Uj-DJ*1;2j;Cabzif8ZX=^{T6&^`xWcxm5!v@+zPrZWnsv
znMjiA&r}_pf>+(wht?kl5yyxHo#g1}|q^0p&)A?P~ETPb2G#QQu9$3S0U`YkdH
z>OPyqfX_Sq`JsBhI3|w)4L~UOw$lOpCrFtn%*N`Q^QSdqSXbn6qGAar74wqMr1{Bt
zg-j{0QY$n{t;$BN(|oVZ*I;ARHQDOT28+?oWN+(W-lHWSC##*ay^DjZqni^vkU(jK
zWiRr)se%Cx1ybTFHPKKl`;O7o(odA(WU6AOYOZFX-qK3LTGK|$R{M84
zIoj(w=yi0`cQ$Y_bTx7_b~pKlX%4JejyD%9L`%s^wpMIZ+uC=#M25Y|!R%;pvO3#b
z+8wS=x4+yIx;;FeUN4__oKcuKTmm79lzK`!0a^wli`U6-QA8QZ;wDw<>wt#>c;)iaG
zmjn2LM98nV?-2f1m5Q}-J?j%oq`XY7P^#1#t&L7^Fq&-57CUsSV01+mX
zaiLVHHCmnCfKNb3L`*_TMovLV1q6X1P#7G6L{Zbw($O<8GBLBTqTwvxy<+E7tU|3O
zjheM;(WXO}PThL+>D6z*kP*X1jTqL&ty+yLG${lI
z(HzP_g@gJH88>Cdf+xR#S^`RRg|621dVmh~bH8D~3I721dVqJ`%iy)(jovGoLezxr8A03HbW&??B*g}w4hc#G&MOgS==%9@z>dD3Q({=1X
zxX&8?zT~M*C!=wmu;o4vTtB;1)2goz*Z+^YS?kD&W2esVnxBjapPc|i^C8*^7W|_H
zd$Q&QS#j}lBk}jvA$HyhHjzc9z=HT%$Jd00T=Z!{@hwQR8(2_%-D0TSmZ`IA=IFD2
zWl1>e7q3?@S#D@u;>^E=6=!qy)dp#oHM_mjFRqC^yKLfsOXtiP5LnR6%Cu@u6-V`2
zoAO%6e=GlA1l=E}4Ryoh*;8g4*B{oK$o`x%*VS>elWfdR?0R?3oWO!nuS3QUtSPRX
zF^3qUdFAfagD3Ju_+78+0SIL(>zQP*fS#*wyo4|+>$$ACJfvO
zewiDrar?nJWzBz}VPL`b$4#3Z56fJ4P5?;4|I{S-LOrD(GEp#p1I*x^Z~{72Is#B&
zWz}ZM9dEU5OmFuAg%!t0iAmcAHp+U^2h1&_X_SoqLXe4sC{1D(3#Q81&n0ZS;oB8}cYt%WGQs)4m7kJUQr-H_&G`>>2KUs245B5v1
zcGfvajveAQelCBUmR(OR7ojSeX!
z3z;GW?5o(v{YV3bHMP#{&L%6#2MgS|#?Q%NH>S0Wm$n=;XJ%mc3jXH(=pZ=VL3R+B
zQ>|q$B`~(z`m1J6Z^;4gJan#x!G4$s4ttNN>fih1-`AQE?%h>D*!|7)@k2cST|S*J
zmKU-9@C%j=I}ccBO^-_28WcANRzSU@QVtfsR=04-zDO?9P@XJ0$Jv5-Eh73;XUW8b`T
z-Ial|yB3FkgS&Kh-B!a(nhphuO>#PVlmRLwI8quoidQlpfZ4vMrm~JA(
zi_befJO{VjO~iyXUS}s{W7*gcJj*FYK{4fo`YR`UsK;6+b&V(HDN{42p+C~prgb`N
zb;eUTM?|gLupF1;=sz1-!A#;NT}-IIS-czt&s3vn|4=l$w>Z6%s%+AHB4orqI5+y5
zBvyy$S{teU&YSAQ*J;V6r9WJ4Y$>!M)IRMLlU1O(#^xrC
zwsbsEJW8`rpd-H(56ND%i>i874VW=e6JSQrrtnNT`
z5I>*OC)K74@?L9RI1M|a)FRHfv8|B*zhphZqe{d&Pgx~X;K0WJkZsHF-~GvQ~;&%SEt
z#xP&FM6ePxXMT3DZ3LD^;Sc(r@~&kxzOhRV)lmf%sj#FQ<(aZN6;^QNp@(9@w>r;5
zBv!r1uf-@WdAmggwqD-*vtsf~@WxxZOZni15rr!UWB$ZCep`Uf;R>UbjVV=wN>n3K
z?)A?~rKYo0(E~<$DR$yLEgRX?@F|gs=MH!yiP$Y6Zo
z*g*=DIXMk52udC!L)R9Pt_*1^i3u!>?W9Zzs=uP?SlNPk#QMIx>cM+4m@7@`82Gwc
zSyX0N$W1q*ny35;T0^K6dBYH8RP#v|4rIpJv>4q5pybb;)~qwg>cU^hl=w{qz6f-I
zr`!^Wd2!sO!x6whR%xc9e4#E^Klc&qG%uLKodw*+J88&%Wf{#!oLTPa9aJ~n?66ea
z-$F1y7SdDkz;P-<0bO3b8wuP;ha`n+ly!v&Rxog`L-AXmLxL!4_%na;lRSKXd0zM0
z?1`-oQ;HL{T34hbScDmeBMTzJ`&*uAp@1XOE1^?(5Ii}pwv{sp+;PnE_Ee56En}9^
z$*%AVzJ+#{NiI3j3Td1n1;J|byJllwbUiM-zP72EQf=K5g`^WplUN+OJ2r)BSRF5+gjCH-%zU`oq#y4>Po
z-JA%znX&TD%1lONa?ivK8v$FSIhRDqRi9`AalP$mWr*HJOl`;fcEPu^@{GlDvs?i{zwv
zE9a1k?EXaKSny|pB`tL(9F2hwJOw&J0)h~
zjG+wxROLm|kb9?OAB8c^QV)JVS*^@Ntc{;~4iD7ob0{~fcASXU=<#tsnYr~*pFek-
zVr>O#r0Ab<#BlH-8zXDnWCx=@GIOmESH;unBJK!)#mn~A3!~X$zY|vf$Kl8*ihrCR
zaC@HXEa2h~-`)AihqAzIYG$8#>Hg2Fry@t`s6mh?4RfJ5cc&O$;`I!TdR
zTBY(fex=J10f6IK!l2l$#UvAyv5QKJ@3t+KH$Doq0!z?-jj|=^H$@Q0&
zF2`a^=5h)kiYLc7>M(2)_5>}v8vZvH41JLO@(K#6dQ7;B%%du03-ZoF!lPUfO1yN0
ze{FI;v9yEXVZ%Hf$-W2eICW1##kFR8I=Al)#wx+j-eHIvI=
z+Z_%#(Z8euWSj%u!aR4^fBIJu`@^D!WLrgYu6u7tvNn6~OkU}jJOL(t((nKJ{h+@%
zWX-9&ENgC`RwTt>Gwjc|1I6HrH6j`3=pS|OsbNvY-BeogPFiWu9Rku&i~!rN)47q5
z2onYrKJ(}GwB~PKx#l&xcC&zy($8pA^-&x3i1UuOjGYzyE}b&80!xK@aa1|rQ@E{P
zj;XAnv5IxTsDFRRuzj+rse8i_!RSw2=*-hbzmv|%oaF*(T(4toEAvsGvmA@H@Xf-j?L<$Gf5wN*@Ls+TRt;(&0M9fNMX~DL9vTf~C8+
z*Zpk%UwO<36}Y~EvkL$BNqa`c8u;Tn{`5Vj?t6(gvowKbcJ3@@I5<6R-*iUz-tn-P
zY-o4Zs1&*9JQ
z&01eye&M^@7Qe1HUpspDpWMmv!NssYeGOM;yczQbte{bakca*xkC_OC>U8L)t9tXv
zOiI|&dn`HeAyCJmf2`{
z+4kGcLM?rHym6F}pG7ajex=fSh9oQmJO_8AV$Dzt*oaOh{jk+B$O7AcDnOW^G-=zkyBaNd
znc0vI(XDGSCj6tRE@th{B;OjhRV=N;Vs@gWxOATt?~Ia&g&J_)l7C1qy;QJho9rgK
zlY=o+?33}_G<7FLPiSIi#inXdQ{#?;;rsTMZ|lt&7Hld}=B7A;BLy!P4mRyuRjxr}
z3rw4!-^B9wbs381bQPmx-lw8to5fcYfi^GY@@%IZfdmS$I=?jhx(>W6Y2y+OoydOE
z<9ca^F&bF3F>aA>_XcCPW*FHp`Q88xquTM(+EC?I>NvDlM4#TjPu*=~fNF~GC!1;S
zwKw&e16CG%DdFuN8K(qWWa63!1kqFYzmItOv{B5ZwqAXCx|g?`JX(Smm>h)MKGN+D
zEq{BBW0Idg_cwG*CBMBD#Y7c5+_VxvqvygOM*4UQHDqk*C0e4ncow84*a9@ttE#X&jivBhH+irorvRq0}DcH5dN_!cK`rsv{0PTS+Pv0SuXQY
z9-4MKqFF|UVDl;X%lc(VC5A>6>#RvtxemCXdli-SiIMJ~a~3g+s0mho)+u3cZdzH4
z;`v(83h#Zr
z$pxNL70gyaQ|puYe)m3`I|OKDWC8!xru--?MD>5viDVB{c=7*8bx*K!lkCsNUqcE!
zn}j|~f6OVO)Dho3qSM9Xy=_$+4^82Cr6lW4r}i`QgX$)*m5pUqKifOHFC)XlpICFc
zN_W9pK-E&XO@FQj>76;bhE9{}O_I!}fUZBct=beY<}nL%n-Jx$D0)|qb;?md$bgZs
z%1#2lS)nC%jQF)0D8oiwYL%LKDyeDhji7Rhjv;=Gh7d52QKC~~Ddc8$w)U}3sdOH{
zlhWc$A0#(jU}8-On;XBKEU2C02?}*J)R$vEQBZ|e_Cue(Z#F6S_TuB{Dg4pf&7K2R
z4{Nk#O$m)g8{`!azhnP1ivcI;NOw~+L43+IZ>HuF3V~a%^ffgJZuPQgGp*ZQ96>U_
z1>*yYx$T<7=;AuE6T0`L*-fHTnAqKo7eU&vwAn01rW-%%EU26xt6k52_A)wePS4!U
z7MXKsYnLYJ=KLu;J-c?vF8+6^?uh_EWz)?RDe!C*s>}YV*-bL3ZrtU7RW-i+9G_UF
zOdu6Z+D?iqg3V}J4CUK{f~!jJWIvN^2T$~!f52+S65t4k$l-KpO4`Bq$6VXCURdUX
z?JMqE$S?=O>76q4L5TWRcoMOFyQyk~y9MbV#kq^0Se-Ef?*wP*6Np%K+|M<5x7J(F
z!bZ1N5ACWoiUE9A4`~NyuOCjVs$qYXYD{are#6bBJgl3|-=%z%r<